#include <sys/types.h>
enum yytokentype
{
-IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372, WIDE_STRING_LITERAL = 373, BUILTIN_OFFSETOF = 374
+IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, INT128 = 294, LONG = 295, SIGNED = 296, UNSIGNED = 297, FLOAT = 298, DOUBLE = 299, CONST = 300, VOLATILE = 301, VOID = 302, VALIST = 303, STRUCT = 304, UNION = 305, ENUM = 306, ELLIPSIS = 307, CASE = 308, DEFAULT = 309, IF = 310, SWITCH = 311, WHILE = 312, DO = 313, FOR = 314, GOTO = 315, CONTINUE = 316, BREAK = 317, RETURN = 318, IFX = 319, ELSE = 320, CLASS = 321, THISCLASS = 322, CLASS_NAME = 323, PROPERTY = 324, SETPROP = 325, GETPROP = 326, NEWOP = 327, RENEW = 328, DELETE = 329, EXT_DECL = 330, EXT_STORAGE = 331, IMPORT = 332, DEFINE = 333, VIRTUAL = 334, ATTRIB = 335, PUBLIC = 336, PRIVATE = 337, TYPED_OBJECT = 338, ANY_OBJECT = 339, _INCREF = 340, EXTENSION = 341, ASM = 342, TYPEOF = 343, WATCH = 344, STOPWATCHING = 345, FIREWATCHERS = 346, WATCHABLE = 347, CLASS_DESIGNER = 348, CLASS_NO_EXPANSION = 349, CLASS_FIXED = 350, ISPROPSET = 351, CLASS_DEFAULT_PROPERTY = 352, PROPERTY_CATEGORY = 353, CLASS_DATA = 354, CLASS_PROPERTY = 355, SUBCLASS = 356, NAMESPACE = 357, NEW0OP = 358, RENEW0 = 359, VAARG = 360, DBTABLE = 361, DBFIELD = 362, DBINDEX = 363, DATABASE_OPEN = 364, ALIGNOF = 365, ATTRIB_DEP = 366, __ATTRIB = 367, BOOL = 368, _BOOL = 369, _COMPLEX = 370, _IMAGINARY = 371, RESTRICT = 372, THREAD = 373, WIDE_STRING_LITERAL = 374, BUILTIN_OFFSETOF = 375
};
extern char * yytext;
unsigned int pointerAlignment : 1;
unsigned int isLong : 1;
unsigned int signedBeforePromotion : 1;
+unsigned int isVector : 1;
} ecere_gcc_struct;
struct TemplatedType * FindTemplateTypeParameter(struct Context * ctx, const char * name);
{
if(spec->__anon1.specifier == INT64)
s = "int64";
+else if(spec->__anon1.specifier == INT128)
+s = "__int128";
}
if(s)
{
{
if(spec->__anon1.specifier == INT64)
s = "int64";
+else if(spec->__anon1.specifier == INT128)
+s = "__int128";
}
if(s)
{
{
if(spec->__anon1.specifier == INT64)
s = "int64";
+else if(spec->__anon1.specifier == INT128)
+s = "__int128";
}
if(s)
{
{
if(spec->__anon1.specifier == INT64)
s = "int64";
+else if(spec->__anon1.specifier == INT128)
+s = "__int128";
}
if(s)
{
specType->dllExport = 1;
else if(!strcmp(s, "stdcall"))
specType->attrStdcall = 1;
+else if(!strcmp(s, "__vector_size__"))
+specType->isVector = 1;
}
}
}
}
else if(spec->__anon1.specifier == INT64)
specType->kind = 4;
+else if(spec->__anon1.specifier == INT128)
+specType->kind = 25;
else if(spec->__anon1.specifier == VALIST)
specType->kind = 17;
else if(spec->__anon1.specifier == SHORT)
{
struct Type * type = parentType;
struct Declarator * subDecl = decl ? decl->declarator : (((void *)0));
+unsigned int isVector = 0;
+if(decl && (decl->type == 6 || decl->type == 7))
+{
+struct ExtDecl * extDecl = decl->__anon1.extended.extended;
+
+if(extDecl && extDecl->type == 1)
+{
+struct __ecereNameSpace__ecere__sys__OldList * attribs = extDecl->__anon1.attr->attribs;
+
+if(attribs)
+{
+struct Attribute * attr;
+
+for(attr = (*attribs).first; attr; attr = attr->next)
+{
+char * s = attr->attr;
+
+if(s)
+if(!strcmp(s, "__vector_size__"))
+isVector = 1;
+}
+}
+}
+}
if(!parentType)
-type = ProcessTypeSpecs(specs, decl == (((void *)0)), (decl && decl->type == 7) ? 1 : 0);
+type = ProcessTypeSpecs(specs, decl == (((void *)0)), (decl && decl->type == 7 && !isVector) ? 1 : 0);
if(decl)
{
switch(decl->type)
type->dllExport = 1;
else if(!strcmp(s, "stdcall"))
type->attrStdcall = 1;
+else if(!strcmp(s, "__vector_size__"))
+{
+type->isVector = 1;
+}
}
}
}