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:
William S Fulton 2005-11-10 21:21:04 +00:00
commit fb94cfadc1
2 changed files with 36 additions and 2 deletions

View file

@ -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);

View file

@ -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 {