Add in support for non standard integral types used on Windows - Bug #872013
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7839 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
5c8f751e80
commit
eaec5738c9
2 changed files with 36 additions and 2 deletions
|
|
@ -1133,8 +1133,26 @@ int yylex(void) {
|
||||||
yylval.type = NewSwigType(T_BOOL);
|
yylval.type = NewSwigType(T_BOOL);
|
||||||
return(TYPE_BOOL);
|
return(TYPE_BOOL);
|
||||||
}
|
}
|
||||||
/* C++ keywords */
|
|
||||||
|
|
||||||
|
/* Non ISO (Windows) C extensions */
|
||||||
|
if (strcmp(yytext,"__int8") == 0) {
|
||||||
|
yylval.type = NewString(yytext);
|
||||||
|
return(TYPE_NON_ISO_INT8);
|
||||||
|
}
|
||||||
|
if (strcmp(yytext,"__int16") == 0) {
|
||||||
|
yylval.type = NewString(yytext);
|
||||||
|
return(TYPE_NON_ISO_INT16);
|
||||||
|
}
|
||||||
|
if (strcmp(yytext,"__int32") == 0) {
|
||||||
|
yylval.type = NewString(yytext);
|
||||||
|
return(TYPE_NON_ISO_INT32);
|
||||||
|
}
|
||||||
|
if (strcmp(yytext,"__int64") == 0) {
|
||||||
|
yylval.type = NewString(yytext);
|
||||||
|
return(TYPE_NON_ISO_INT64);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* C++ keywords */
|
||||||
if (cparse_cplusplus) {
|
if (cparse_cplusplus) {
|
||||||
if (strcmp(yytext,"and") == 0) return(LAND);
|
if (strcmp(yytext,"and") == 0) return(LAND);
|
||||||
if (strcmp(yytext,"or") == 0) return(LOR);
|
if (strcmp(yytext,"or") == 0) return(LOR);
|
||||||
|
|
|
||||||
|
|
@ -1337,7 +1337,7 @@ static void default_arguments(Node *n) {
|
||||||
%token <str> CHARCONST
|
%token <str> CHARCONST
|
||||||
%token <dtype> NUM_INT NUM_FLOAT NUM_UNSIGNED NUM_LONG NUM_ULONG NUM_LONGLONG NUM_ULONGLONG
|
%token <dtype> NUM_INT NUM_FLOAT NUM_UNSIGNED NUM_LONG NUM_ULONG NUM_LONGLONG NUM_ULONGLONG
|
||||||
%token <ivalue> TYPEDEF
|
%token <ivalue> TYPEDEF
|
||||||
%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW
|
%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64
|
||||||
%token LPAREN RPAREN COMMA SEMI EXTERN INIT LBRACE RBRACE PERIOD
|
%token LPAREN RPAREN COMMA SEMI EXTERN INIT LBRACE RBRACE PERIOD
|
||||||
%token CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET
|
%token CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET
|
||||||
%token ILLEGAL CONSTANT
|
%token ILLEGAL CONSTANT
|
||||||
|
|
@ -4931,6 +4931,22 @@ type_specifier : TYPE_INT {
|
||||||
$$.type = NewString("complex");
|
$$.type = NewString("complex");
|
||||||
$$.us = 0;
|
$$.us = 0;
|
||||||
}
|
}
|
||||||
|
| TYPE_NON_ISO_INT8 {
|
||||||
|
$$.type = NewString("__int8");
|
||||||
|
$$.us = 0;
|
||||||
|
}
|
||||||
|
| TYPE_NON_ISO_INT16 {
|
||||||
|
$$.type = NewString("__int16");
|
||||||
|
$$.us = 0;
|
||||||
|
}
|
||||||
|
| TYPE_NON_ISO_INT32 {
|
||||||
|
$$.type = NewString("__int32");
|
||||||
|
$$.us = 0;
|
||||||
|
}
|
||||||
|
| TYPE_NON_ISO_INT64 {
|
||||||
|
$$.type = NewString("__int64");
|
||||||
|
$$.us = 0;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
definetype : { /* scanner_check_typedef(); */ } expr {
|
definetype : { /* scanner_check_typedef(); */ } expr {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue