compiler/bootstrap: (#980) Updated for 0.44.08
[sdk] / compiler / bootstrap / libec / bootstrap / firstPass.c
index ea3eb94..2a039d8 100644 (file)
@@ -116,7 +116,7 @@ struct CodePosition
 int line;
 int charPos;
 int pos;
-unsigned int included;
+int included;
 } __attribute__ ((gcc_struct));
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Location;
@@ -637,25 +637,27 @@ struct Symbol * enumClass;
 struct Type * type;
 struct TemplateParameter * templateParameter;
 } __attribute__ ((gcc_struct));
-unsigned int isSigned;
 int kind;
-unsigned int constant;
 unsigned int size;
 char *  name;
 char *  typeName;
-unsigned int count;
-unsigned int truth;
 int classObjectType;
-unsigned int byReference;
-unsigned int extraParam;
 int alignment;
-unsigned int directClassAccess;
-unsigned int computing;
-unsigned int dllExport;
 unsigned int offset;
-unsigned int keepCast;
-unsigned int passAsTemplate;
 int bitFieldCount;
+int count;
+unsigned int isSigned : 1;
+unsigned int constant : 1;
+unsigned int truth : 1;
+unsigned int byReference : 1;
+unsigned int extraParam : 1;
+unsigned int directClassAccess : 1;
+unsigned int computing : 1;
+unsigned int keepCast : 1;
+unsigned int passAsTemplate : 1;
+unsigned int dllExport : 1;
+unsigned int attrStdcall : 1;
+unsigned int declaredWithStruct : 1;
 } __attribute__ ((gcc_struct));
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
@@ -714,6 +716,7 @@ struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
 struct __ecereNameSpace__ecere__com__Class * templateClass;
 struct __ecereNameSpace__ecere__sys__OldList templatized;
 int numParams;
+unsigned int isInstanceClass;
 } __attribute__ ((gcc_struct));
 
 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
@@ -1048,7 +1051,8 @@ if(declId)
 {
 if(regClass && regClass->type == 2)
 {
-struct Expression * sizeExp = d->structDecl.exp, * posExp = d->structDecl.posExp;
+struct Expression * sizeExp = (d->type == 0) ? d->structDecl.exp : (((void *)0));
+struct Expression * posExp = (d->type == 0) ? d->structDecl.posExp : (((void *)0));
 int bitSize = 0, bitPos = -1;
 char dataTypeString[1024] = "";
 
@@ -1068,8 +1072,11 @@ if(posExp->isConstant)
 bitPos = strtol(posExp->constant, (((void *)0)), 0);
 FreeExpression(posExp);
 }
+if(d->type == 0)
+{
 d->structDecl.posExp = (((void *)0));
 d->structDecl.exp = (((void *)0));
+}
 dataType = ProcessType(decl->specifiers, d);
 PrintType(dataType, dataTypeString, 0x0, 0x1);
 {
@@ -1254,7 +1261,7 @@ extern struct Context * globalContext;
 
 extern struct __ecereNameSpace__ecere__sys__OldList *  excludedSymbols;
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
+extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char *  name, char *  baseName, int size, int sizeClass, unsigned int (*  Constructor)(void * ), void (*  Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
 
 extern unsigned int buildingECERECOMModule;
 
@@ -1432,6 +1439,8 @@ struct Declarator * d;
 
 for(d = (*decl->declarators).first; d; d = d->next)
 {
+if(d->type != 0)
+continue;
 if(d->structDecl.exp)
 {
 classType = 2;