Add in support for non standard integral types used on Windows - Bug #872013
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7839 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
85edd7cab8
commit
fb94cfadc1
2 changed files with 36 additions and 2 deletions
|
|
@ -1133,8 +1133,26 @@ int yylex(void) {
|
|||
yylval.type = NewSwigType(T_BOOL);
|
||||
return(TYPE_BOOL);
|
||||
}
|
||||
|
||||
/* 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 (strcmp(yytext,"and") == 0) return(LAND);
|
||||
if (strcmp(yytext,"or") == 0) return(LOR);
|
||||
|
|
|
|||
|
|
@ -1337,7 +1337,7 @@ static void default_arguments(Node *n) {
|
|||
%token <str> CHARCONST
|
||||
%token <dtype> NUM_INT NUM_FLOAT NUM_UNSIGNED NUM_LONG NUM_ULONG NUM_LONGLONG NUM_ULONGLONG
|
||||
%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 CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET
|
||||
%token ILLEGAL CONSTANT
|
||||
|
|
@ -4931,6 +4931,22 @@ type_specifier : TYPE_INT {
|
|||
$$.type = NewString("complex");
|
||||
$$.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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue