compiler/libec: (#341, #351, #644, #771) Improved enum type matching and type handlin...
[sdk] / compiler / bootstrap / ecs / bootstrap / ecs.c
index dd962a4..ff7d303 100644 (file)
@@ -49,6 +49,8 @@ extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsig
 
 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
 
+extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BTNode;
 
 struct __ecereNameSpace__ecere__sys__BTNode;
@@ -258,7 +260,7 @@ char *  name;
 struct __ecereNameSpace__ecere__sys__OldList methods;
 struct __ecereNameSpace__ecere__sys__OldList properties;
 unsigned int itself;
-unsigned int isRemote;
+int isRemote;
 } __attribute__ ((gcc_struct));
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
@@ -430,7 +432,7 @@ unsigned int noExpansion;
 char *  defaultProperty;
 unsigned int comRedefinition;
 int count;
-unsigned int isRemote;
+int isRemote;
 unsigned int internalDecl;
 void *  data;
 unsigned int computeSize;
@@ -453,6 +455,8 @@ unsigned int byValueSystemClass;
 
 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
 
+extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
+
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
 
 struct __ecereNameSpace__ecere__com__Instance
@@ -647,7 +651,7 @@ for(; ; )
 {
 char line[1024];
 
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(line[0] == '[')
@@ -658,7 +662,7 @@ struct ModuleImport * module = (((void *)0));
 
 for(; ; )
 {
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(!strcmp(line, "."))
@@ -701,7 +705,7 @@ else if(!strcmp(line, "[Imported Classes]"))
 {
 for(; ; )
 {
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(!strcmp(line, "."))
@@ -714,7 +718,7 @@ _class->itself = 0x1;
 }
 else if(!strcmp(line, "[Remote]"))
 {
-_class->isRemote = (unsigned int)1;
+_class->isRemote = 1;
 }
 else if(!strcmp(line, "[Imported Methods]"))
 {
@@ -722,7 +726,7 @@ struct MethodImport * method = (((void *)0));
 
 for(; ; )
 {
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(!strcmp(line, "."))
@@ -749,7 +753,7 @@ struct PropertyImport * prop = (((void *)0));
 
 for(; ; )
 {
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(!strcmp(line, "."))
@@ -793,7 +797,7 @@ else if(!strcmp(line, "[Imported Functions]"))
 {
 for(; ; )
 {
-if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(!__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 break;
 __ecereNameSpace__ecere__sys__TrimLSpaces(line, line);
 if(!strcmp(line, "."))
@@ -1040,7 +1044,7 @@ FinishTemplatesContext(context);
 }
 if(method->isVirtual)
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "int __ecereVMethodID_%s_%s;\n", className, method->name);
-else if(module->name && module->importType != 1 && (!meth || !meth->dataType->dllExport))
+else if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1 && (!meth || !meth->dataType->dllExport))
 {
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "int (*__ecereMethod_%s_%s)();\n", className, method->name);
 }
@@ -1054,7 +1058,7 @@ char propName[1024];
 propName[0] = (char)0;
 FullClassNameCat(propName, prop->name, 0x1);
 MangleClassName(propName);
-if(module->name && module->importType != 1)
+if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1)
 {
 if(prop->hasSet)
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void * __ecereProp_%s_Set_%s;\n", className, propName);
@@ -1116,7 +1120,7 @@ int read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void *  bu
 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols;
 
 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
-})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(dcomSymbols, buffer, 1, sizeof buffer);
+})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(dcomSymbols, buffer, 1, sizeof (buffer));
 
 if(!read)
 break;
@@ -1335,7 +1339,7 @@ struct __ecereNameSpace__ecere__com__Method * meth = __ecereNameSpace__ecere__co
 
 if(!meth || !meth->dataType->dllExport)
 {
-if(method->isVirtual || (module->name && module->importType != 1))
+if(method->isVirtual || ((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1))
 {
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   method = eClass_FindMethod(%s, \"%s\", module);\n", classID, method->name);
 if(method->isVirtual)
@@ -1353,7 +1357,7 @@ propName[0] = (char)0;
 FullClassNameCat(propName, prop->name, 0x1);
 MangleClassName(propName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereProp_%s_%s = _property = eClass_FindProperty(%s, \"%s\", module);\n", className, propName, classID, prop->name);
-if(module->name && module->importType != 1)
+if((!strcmp(_class->name, "float") || !strcmp(_class->name, "double") || module->name) && module->importType != 1)
 {
 if(prop->hasSet)
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereProp_%s_Set_%s = _property.Set;\n", className, propName);
@@ -2079,7 +2083,7 @@ struct __ecereNameSpace__ecere__com__Class * _class;
 
 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)privateModule + structSize_Instance)))->classes.first; _class; _class = _class->next)
 {
-if(_class->isRemote == (unsigned int)3)
+if(_class->isRemote == 3)
 break;
 }
 if(_class)
@@ -2092,7 +2096,7 @@ f = dcomSymbols;
 DeclareClass(FindClass("ecere::net::DCOMServerObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMServerObject");
 for(_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)privateModule + structSize_Instance)))->classes.first; _class; _class = _class->next)
 {
-if(_class->isRemote == (unsigned int)3)
+if(_class->isRemote == 3)
 {
 struct __ecereNameSpace__ecere__com__Method * method;
 int id = 0;
@@ -2488,8 +2492,6 @@ extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance *
 
 extern char *  __ecereNameSpace__ecere__sys__PathCat(char *  string, char *  addedPath);
 
-extern unsigned int __ecereNameSpace__ecere__sys__MakeDir(char *  path);
-
 extern void FreeContext(struct Context * context);
 
 extern void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols);
@@ -2673,7 +2675,7 @@ SetCurrentContext(theGlobalContext);
 SetTargetPlatform(targetPlatform);
 SetTargetBits(targetBits);
 SetInSymbolGen(0x1);
-privateModule = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com____ecere_COM_Initialize(0x1 | (targetBits == sizeof(uintptr_t) * 8 ? (unsigned int)0 : targetBits == 64 ? (unsigned int)2 : targetBits == 32 ? (unsigned int)4 : (unsigned int)0) | (unsigned int)8, 1, (((void *)0)));
+privateModule = (struct __ecereNameSpace__ecere__com__Instance *)__ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)(0x1 | (targetBits == sizeof(uintptr_t) * 8 ? (unsigned int)0 : targetBits == 64 ? 2 : targetBits == 32 ? 4 : (unsigned int)0) | 8), 1, (((void *)0)));
 SetPrivateModule(privateModule);
 mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
 SetMainModule(mainModule);
@@ -2709,8 +2711,8 @@ int c;
 
 if(f)
 {
-while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
-count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof tokens / sizeof tokens[0], tokens, 0x2);
+while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
+count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof (tokens) / sizeof (tokens[0]), tokens, 0x2);
 if(!count)
 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
 }
@@ -2762,8 +2764,8 @@ int c;
 
 if(f)
 {
-while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
-count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof tokens / sizeof tokens[0], tokens, 0x2);
+while(!count && __ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
+count = __ecereNameSpace__ecere__sys__Tokenize(line, sizeof (tokens) / sizeof (tokens[0]), tokens, 0x2);
 if(!count)
 (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0);
 }
@@ -2822,7 +2824,7 @@ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f;
 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl;
 })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(f))
 {
-if(__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof line))
+if(__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line)))
 {
 int len;
 
@@ -2936,8 +2938,6 @@ char potFileName[797];
 
 strcpy(potFileName, "locale");
 __ecereNameSpace__ecere__sys__PathCat(potFileName, projectName);
-__ecereNameSpace__ecere__sys__MakeDir(potFileName);
-__ecereNameSpace__ecere__sys__PathCat(potFileName, projectName);
 __ecereNameSpace__ecere__sys__ChangeExtension(potFileName, "pot", potFileName);
 potFile = __ecereNameSpace__ecere__sys__FileOpen(potFileName, 2);
 if(potFile)