wip II
[sdk] / compiler / bootstrap / ecs / bootstrap / ecs.c
index 52ab172..0b4b2bb 100644 (file)
@@ -1,3 +1,4 @@
+/* Code generated from eC source file: ecs.ec */
 #if defined(__GNUC__)
 typedef long long int64;
 typedef unsigned long long uint64;
@@ -30,7 +31,7 @@ typedef unsigned __int64 uint64;
 #include <stdint.h>
 #include <sys/types.h>
 
-#if defined(_W64) || (defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
+#if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
 #define _64BIT 1
 #else
 #define _64BIT 0
@@ -127,7 +128,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;
@@ -366,25 +367,28 @@ 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;
+unsigned int typedByReference : 1;
 } __attribute__ ((gcc_struct));
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Class;
@@ -443,6 +447,8 @@ struct __ecereNameSpace__ecere__com__ClassTemplateArgument *  templateArgs;
 struct __ecereNameSpace__ecere__com__Class * templateClass;
 struct __ecereNameSpace__ecere__sys__OldList templatized;
 int numParams;
+unsigned int isInstanceClass;
+unsigned int byValueSystemClass;
 } __attribute__ ((gcc_struct));
 
 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, char *  name);
@@ -517,6 +523,10 @@ struct __ecereNameSpace__ecere__com__Method * method;
 
 static unsigned int i18n;
 
+static unsigned int outputPot;
+
+static unsigned int disabledPooling;
+
 static int targetPlatform;
 
 static int targetBits;
@@ -543,7 +553,7 @@ struct __ecereNameSpace__ecere__sys__OldList _imports =
 
 struct __ecereNameSpace__ecere__sys__OldList _excludedSymbols = 
 {
-0, 0, 0, (unsigned int)&((struct Symbol *)(void *)0)->left, 0
+0, 0, 0, (unsigned int)&((struct Symbol *)(void * )0)->left, 0
 };
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__NameSpace;
@@ -629,7 +639,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpa
 
 static void LoadImports(char * fileName)
 {
-void * __ecereTemp1;
 struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys__FileOpen(fileName, 1);
 
 if(f)
@@ -722,7 +731,11 @@ if(line[0] != '[')
 {
 if(!(method = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_class->methods, line, 0x0)))
 {
-method = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodImport), ((struct MethodImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(line), ((struct MethodImport *)__ecereTemp1));
+method = __extension__ ({
+struct MethodImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_MethodImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_class->methods, method);
 }
 }
@@ -745,7 +758,11 @@ if(line[0] != '[')
 {
 if(!(prop = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&_class->properties, line, 0x0)))
 {
-prop = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyImport), ((struct PropertyImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(line), ((struct PropertyImport *)__ecereTemp1));
+prop = __extension__ ({
+struct PropertyImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_PropertyImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_class->properties, prop);
 }
 }
@@ -762,7 +779,11 @@ else
 {
 if(!(_class = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&module->classes, line, 0x0)))
 {
-_class = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport), ((struct ClassImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(line), ((struct ClassImport *)__ecereTemp1));
+_class = __extension__ ({
+struct ClassImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&module->classes, _class);
 }
 }
@@ -784,7 +805,11 @@ else
 {
 if(!(function = __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindName(&module->functions, line, 0x0)))
 {
-function = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionImport), ((struct FunctionImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(line), ((struct FunctionImport *)__ecereTemp1));
+function = __extension__ ({
+struct FunctionImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_FunctionImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&module->functions, function);
 }
 }
@@ -810,7 +835,11 @@ module->name = __ecereNameSpace__ecere__sys__CopyString("ecere");
 }
 if(!module)
 {
-module = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport), ((struct ModuleImport *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(line), ((struct ModuleImport *)__ecereTemp1));
+module = __extension__ ({
+struct ModuleImport * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(line), __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_imports, module);
 }
 }
@@ -840,7 +869,7 @@ extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char *  string)
 
 extern char *  strcpy(char * , const char * );
 
-extern void __ecereNameSpace__ecere__sys__ChangeCh(char *  string, char ch1, char ch2);
+extern void FixModuleName(char *  moduleName);
 
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_ImportedModule;
 
@@ -925,9 +954,7 @@ if(!projectName[0])
 strcpy(projectName, mainModuleName);
 __ecereNameSpace__ecere__sys__StripExtension(projectName);
 }
-__ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, '.', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(mainModuleName, ' ', '_');
+FixModuleName(mainModuleName);
 if(targetPlatform == 1 && !isConsole && !isStaticLibrary && !isDynamicLibrary)
 {
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "typedef void * HINSTANCE;\n");
@@ -1039,9 +1066,7 @@ for(defModule = modules.first; defModule; defModule = defModule->next)
 char moduleName[1024];
 
 strcpy(moduleName, defModule->name);
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
+FixModuleName(moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereRegisterModule_%s(Module module);\n", moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereUnregisterModule_%s(Module module);\n", moduleName);
 if(defModule->globalInstance)
@@ -1095,6 +1120,11 @@ if(anyProp)
 if(anyFunction)
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   GlobalFunction function;\n");
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
+if(disabledPooling)
+{
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   eSystem_SetPoolingDisabled(true);\n");
+((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "\n");
+}
 if(isDynamicLibrary)
 {
 ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char *  string))f->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(f, "   if(!__currentModule)\n");
@@ -1131,9 +1161,7 @@ for(defModule = modules.first; defModule; defModule = defModule->next)
 char moduleName[1024];
 
 strcpy(moduleName, defModule->name);
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
+FixModuleName(moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereRegisterModule_%s(module);\n", moduleName);
 }
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
@@ -1267,9 +1295,7 @@ char moduleName[1024];
 if(!strcmp(defModule->name, "i18n"))
 continue;
 strcpy(moduleName, defModule->name);
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
+FixModuleName(moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereCreateModuleInstances_%s();\n", moduleName);
 }
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
@@ -1319,9 +1345,7 @@ destroyI18n = 0x1;
 continue;
 }
 strcpy(moduleName, defModule->name);
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
+FixModuleName(moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereDestroyModuleInstances_%s();\n", moduleName);
 }
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
@@ -1344,9 +1368,7 @@ for(defModule = modules.first; defModule; defModule = defModule->next)
 char moduleName[1024];
 
 strcpy(moduleName, defModule->name);
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, ' ', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '-', '_');
-__ecereNameSpace__ecere__sys__ChangeCh(moduleName, '.', '_');
+FixModuleName(moduleName);
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "   __ecereUnregisterModule_%s(module);\n", moduleName);
 }
 __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n");
@@ -1483,6 +1505,8 @@ extern struct Symbol * FindClass(char *  name);
 
 extern struct __ecereNameSpace__ecere__sys__OldList *  MkList(void);
 
+extern void PrintTypeNoConst(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
+
 extern void PrintType(struct Type * type, char *  string, unsigned int printName, unsigned int fullName);
 
 extern struct Declarator * SpecDeclFromString(char *  string, struct __ecereNameSpace__ecere__sys__OldList *  specs, struct Declarator * baseDecl);
@@ -1564,7 +1588,7 @@ if(method->dataType->returnType->kind == 8)
 classSym = method->dataType->returnType->_class;
 else
 {
-PrintType(method->dataType->returnType, type, 0x0, 0x1);
+PrintTypeNoConst(method->dataType->returnType, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -1600,7 +1624,7 @@ if(param->kind == 8)
 classSym = param->_class;
 else
 {
-PrintType(param, type, 0x0, 0x1);
+PrintTypeNoConst(param, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -1732,7 +1756,7 @@ if(method->dataType->returnType->kind == 8)
 classSym = method->dataType->returnType->_class;
 else
 {
-PrintType(method->dataType->returnType, type, 0x0, 0x1);
+PrintTypeNoConst(method->dataType->returnType, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -1764,7 +1788,7 @@ if(param->kind == 8)
 classSym = param->_class;
 else
 {
-PrintType(param, type, 0x0, 0x1);
+PrintTypeNoConst(param, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -1898,7 +1922,7 @@ if(method->dataType->returnType->kind == 8)
 classSym = method->dataType->returnType->_class;
 else
 {
-PrintType(method->dataType->returnType, type, 0x0, 0x1);
+PrintTypeNoConst(method->dataType->returnType, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -1934,7 +1958,7 @@ if(param->kind == 8)
 classSym = param->_class;
 else
 {
-PrintType(param, type, 0x0, 0x1);
+PrintTypeNoConst(param, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -2049,7 +2073,7 @@ if(method->dataType->returnType->kind == 8)
 classSym = method->dataType->returnType->_class;
 else
 {
-PrintType(method->dataType->returnType, type, 0x0, 0x1);
+PrintTypeNoConst(method->dataType->returnType, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -2082,7 +2106,7 @@ if(param->kind == 8)
 classSym = param->_class;
 else
 {
-PrintType(param, type, 0x0, 0x1);
+PrintTypeNoConst(param, type, 0x0, 0x1);
 classSym = FindClass(type);
 type[0] = (char)0;
 }
@@ -2201,14 +2225,14 @@ extern void SetTargetPlatform(int platform);
 
 extern void SetTargetBits(int bits);
 
+extern void SetInSymbolGen(unsigned int b);
+
 extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char *  argv[]);
 
 extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module);
 
 extern char *  GetSymbolsDir(void);
 
-extern char *  __ecereNameSpace__ecere__sys__SearchString(char *  buffer, int start, char *  subStr, unsigned int matchCase, unsigned int matchWord);
-
 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__IteratorPointer;
 
 struct __ecereNameSpace__ecere__com__IteratorPointer;
@@ -2336,11 +2360,12 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(struct __ecereName
 
 void __ecereMethod_SymbolgenApp_Main(struct __ecereNameSpace__ecere__com__Instance * this)
 {
-void * __ecereTemp1;
 int c;
 unsigned int valid = 0x1;
 char * output = (((void *)0));
 
+outputPot = 0x0;
+disabledPooling = 0x0;
 targetPlatform = __ecereNameSpace__ecere__com__GetRuntimePlatform();
 targetBits = GetHostBits();
 for(c = 1; c < ((struct __ecereNameSpace__ecere__com__Application *)(((char *)this + structSize_Module)))->argc; c++)
@@ -2380,6 +2405,10 @@ targetPlatform = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PT
 else
 valid = 0x0;
 }
+else if(!strcmp(arg, "-outputpot"))
+outputPot = 0x1;
+else if(!strcmp(arg, "-disabled-pooling"))
+disabledPooling = 0x1;
 else if(!strcmp(arg, "-console"))
 isConsole = 0x1;
 else if(!strcmp(arg, "-dynamiclib"))
@@ -2404,7 +2433,9 @@ valid = 0x0;
 if(!output)
 valid = 0x0;
 if(!valid)
+{
 printf(__ecereNameSpace__ecere__GetTranslatedString(__thisModule, "Syntax:\n   ecs [-t <target platform>] <input>[, <input>]* -o <output>\n", (((void *)0))));
+}
 else
 {
 int c;
@@ -2422,6 +2453,7 @@ SetTopContext(theGlobalContext);
 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)));
 SetPrivateModule(privateModule);
 mainModule = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ModuleImport);
@@ -2429,7 +2461,6 @@ SetMainModule(mainModule);
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_imports, mainModule);
 {
 char * symbolsDir = GetSymbolsDir();
-unsigned int outputPot = symbolsDir && __ecereNameSpace__ecere__sys__SearchString(symbolsDir, 0, "release.", 0x0, 0x0);
 struct __ecereNameSpace__ecere__com__Instance * intlStrings = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_ContextStringPair__ecere__com__List_TPL_String___);
 struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, intlStrings), it);
 
@@ -2498,7 +2529,11 @@ if(importedModule)
 module->globalInstance = importedModule->globalInstance;
 else
 {
-importedModule = (__ecereTemp1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule), ((struct ImportedModule *)__ecereTemp1)->name = __ecereNameSpace__ecere__sys__CopyString(module->name), ((struct ImportedModule *)__ecereTemp1)->type = 0, ((struct ImportedModule *)__ecereTemp1)->importType = 0, ((struct ImportedModule *)__ecereTemp1));
+importedModule = __extension__ ({
+struct ImportedModule * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ImportedModule);
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(module->name), __ecereInstance1->type = 0, __ecereInstance1->importType = 0, __ecereInstance1;
+});
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&_defines, importedModule);
 module->globalInstance = LoadSymbols(file, 0, 0x0);
 CheckDataRedefinitions();
@@ -2682,7 +2717,7 @@ FreeGlobalData(&globalData);
 SetSymbolsDir((((void *)0)));
 }
 
-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 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, char *  name, char *  type, void *  function, int declMode);