Class regClass = eSystem_FindClass(privateModule, _class.name);
FullClassNameCat(className, _class.name, true);
- //MangleClassName(className);
if(_class.itself)
f.Printf("Class __ecereClass_%s;\n", className);
char propName[1024];
propName[0] = 0;
FullClassNameCat(propName, prop.name, true);
- // strcpy(propName, prop.name);
- //MangleClassName(propName);
if((!strcmp(_class.name, "float") || !strcmp(_class.name, "double") || module.name) && module.importType != staticImport)
{
{
f.Puts(" int exitCode;\n");
f.Puts(" Module module;\n");
+ f.Puts(" bool setThingsUp = !__thisModule;\n");
}
//if(nonInst || thisAppClass) // We use it all the time to get "Application" for the exit code now...
f.Puts(" __attribute__((unused)) Class _class;\n");
if(anyMethod)
- f.Puts(" Method method;\n");
+ f.Puts(" __attribute__((unused)) Method method;\n");
if(anyProp)
- f.Puts(" Property _property;\n");
+ f.Puts(" __attribute__((unused)) Property _property;\n");
if(anyFunction)
- f.Puts(" GlobalFunction function;\n");
+ f.Puts(" __attribute__((unused)) GlobalFunction function;\n");
f.Puts("\n");
f.Puts(" __thisModule = module;\n");
f.Puts(" }\n\n");
}
- else if(targetPlatform == win32 && !isConsole)
- f.Puts(" __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n");
else
- f.Puts(" __thisModule = __currentModule = module = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n");
+ {
+ f.Puts(" if(setThingsUp)\n");
+ if(targetPlatform == win32 && !isConsole)
+ f.Puts(" __thisModule = __ecere_COM_Initialize(1, 0, null);\n\n");
+ else
+ f.Puts(" __thisModule = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n");
+ f.Puts(" __currentModule = module = __thisModule;\n");
+ }
// First load all modules
if(_imports.count)
char classID[1024];
char className[1024] = "";
FullClassNameCat(className, _class.name, true);
- //MangleClassName(className);
if(_class.itself)
sprintf(classID, "__ecereClass_%s", className);
char propName[1024];
propName[0] = 0;
FullClassNameCat(propName, prop.name, true);
- // strcpy(propName, prop.name);
- //MangleClassName(propName);
f.Printf(" __ecereProp_%s_%s = _property = eClass_FindProperty(%s, \"%s\", module);\n",
className, propName, classID, prop.name);
if(!isDynamicLibrary && thisAppClass)
{
f.Printf(" _class = eSystem_FindClass(__currentModule, \"%s\");\n", thisAppClass.name);
- f.Printf(" eInstance_Evolve((Instance *)&__currentModule, _class);\n");
+ f.Printf(" if(setThingsUp) eInstance_Evolve((Instance *)&__currentModule, _class);\n");
f.Printf(" __thisModule = __currentModule;\n");
}
bool destroyI18n = false;
if(::modules.count)
{
- for(defModule = ::modules.first; defModule; defModule = defModule.next)
+ for(defModule = ::modules.last; defModule; defModule = defModule.prev)
if(defModule.globalInstance)
{
char moduleName[1024];
int vid;
bool doVirtual;
- DeclareClass(FindClass("ecere::net::DCOMClientObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMClientObject");
+ DeclareClass(null, FindClass("ecere::net::DCOMClientObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMClientObject");
f.Printf("class %s : ecere::net::DCOMClientObject\n", _class.fullName);
f.Printf("{\n");
}
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(method.dataType.returnType, type, true, true);
{
// Hardcode 1024 chars max string for now
f.Printf(" char %s[1024];\n", param.name);
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
- DeclareClass(FindClass("String"), "__ecereClass_String");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("String"), "__ecereClass_String");
}
else
{
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(param, type, true, true);
f.Printf(" __ecereBuffer.Unserialize(");
if(param.kind == classType && !strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf("(StaticString)");
}
f.Puts(param.name);
{
if(!strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereBuffer.Serialize((StaticString)%s);\n", param.name);
}
else
FullClassNameCat(name, method._class.fullName, true);
strcat(name, "_");
strcat(name, method.name);
- DeclareMethod(method, name);
+ DeclareMethod(null, method, name);
f.Printf("virtual ");
}
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(method.dataType.returnType, type, true, true);
f.Printf(" = 0");
f.Printf(";\n\n");
}
- f.Printf(" incref this;\n");
+ // f.Printf(" incref this;\n");
+ f.Printf(" safeIncRef();\n");
for(param = method.dataType.params.first; param; param = param.next)
{
char type[1024] = "";
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
if(param.kind == classType && !strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereBuffer.Serialize((StaticString)%s);\n", param.name);
}
else
f.Printf(" __ecereBuffer.Serialize(%s);\n", param.name);
}
- DeclareMethod(
+ DeclareMethod(null,
eClass_FindMethod(
eSystem_FindClass(privateModule, "ecere::net::DCOMClientObject"), "CallMethod", privateModule),
"__ecereMethod___ecereNameSpace__ecere__net__DCOMClientObject_CallMethod");
{
if(!strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereBuffer.Unserialize((StaticString)%s);\n", param.name);
}
else
{
if(method.dataType.returnType.kind == classType && !strcmp(method.dataType.returnType._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereBuffer.Unserialize((StaticString)__ecereResult);\n");
}
else
}
f.Printf(" }\n");
f.Printf(" __ecereBuffer.Free();\n");
- f.Printf(" delete this;\n");
+ //f.Printf(" delete this;\n");
+ f.Printf(" safeDecRef();\n");
if(method.dataType.returnType.kind != voidType)
{
f.Printf(" return __ecereResult;\n");
f.Printf(" }\n");
}
next = (Method)((BTNode)method).next;
- while(next && ((next.type == virtualMethod) != doVirtual || (doVirtual && next.vid != vid)))
+ while((!next && doVirtual) || (next && ((next.type == virtualMethod) != doVirtual || (doVirtual && next.vid != vid))))
{
id++;
- next = (Method)((BTNode)next).next;
+ next = next ? (Method)((BTNode)next).next : null;
if(!next && doVirtual)
{
if(vid == _class.vTblSize)
if(!dcomSymbols) dcomSymbols = TempFile { };
f = dcomSymbols;
- DeclareClass(FindClass("ecere::net::DCOMServerObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMServerObject");
+ DeclareClass(null, FindClass("ecere::net::DCOMServerObject"), "__ecereClass___ecereNameSpace__ecere__net__DCOMServerObject");
// SERVER BINDINGS
for(_class = privateModule.classes.first; _class; _class = _class.next)
}
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(method.dataType.returnType, type, true, true);
{
// Hardcode 1024 chars max string for now
f.Printf(" char %s[1024];\n", param.name);
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
- DeclareClass(FindClass("String"), "__ecereClass_String");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("String"), "__ecereClass_String");
}
else
{
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(param, type, true, true);
f.Printf(" __ecereBuffer.Unserialize(");
if(param.kind == classType && !strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf("(StaticString)");
}
f.Puts(param.name);
{
if(!strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereBuffer.Serialize((StaticString)%s);\n", param.name);
}
else
{
if(!mutexDeclared)
{
- DeclareClass(FindClass("ecere::sys::Mutex"), "__ecereClass___ecereNameSpace__ecere__sys__Mutex");
- DeclareMethod(
+ DeclareClass(null, FindClass("ecere::sys::Mutex"), "__ecereClass___ecereNameSpace__ecere__sys__Mutex");
+ DeclareMethod(null,
eClass_FindMethod(
eSystem_FindClass(privateModule, "ecere::sys::Mutex"), "Wait", privateModule),
"__ecereMethod___ecereNameSpace__ecere__sys__Mutex_Wait");
- DeclareMethod(
+ DeclareMethod(null,
eClass_FindMethod(
eSystem_FindClass(privateModule, "ecere::sys::Mutex"), "Release", privateModule),
"__ecereMethod___ecereNameSpace__ecere__sys__Mutex_Release");
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
PrintType(method.dataType.returnType, type, true, true);
}
strcpy(className, "__ecereClass_");
FullClassNameCat(className, classSym.string, true);
- //MangleClassName(className);
- DeclareClass(classSym, className);
+ DeclareClass(null, classSym, className);
if(param.kind == classType && !strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereObject.argsBuffer.Serialize((StaticString)%s);\n", param.name);
}
else
f.Printf(" __ecereObject.argsBuffer.Serialize(%s);\n", param.name);
}
- DeclareMethod(
+ DeclareMethod(null,
eClass_FindMethod(
eSystem_FindClass(privateModule, "ecere::net::DCOMServerObject"), "CallVirtualMethod", privateModule),
"__ecereMethod___ecereNameSpace__ecere__net__DCOMServerObject_CallVirtualMethod");
{
if(!strcmp(param._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereObject.returnBuffer.Unserialize((StaticString)%s);\n", param.name);
}
else
{
if(method.dataType.returnType.kind == classType && !strcmp(method.dataType.returnType._class.string, "String"))
{
- DeclareClass(FindClass("StaticString"), "__ecereClass_StaticString");
+ DeclareClass(null, FindClass("StaticString"), "__ecereClass_StaticString");
f.Printf(" __ecereObject.returnBuffer.Unserialize((StaticString)__ecereResult);\n");
}
else
outputPot = false;
disabledPooling = false;
- targetPlatform = GetRuntimePlatform();
+ targetPlatform = __runtimePlatform;
targetBits = GetHostBits();
/*
if(!valid)
{
- printf($"Syntax:\n ecs [-t <target platform>] <input>[, <input>]* -o <output>\n");
+ printf("%s", $"Syntax:\n ecs [-t <target platform>] <input>[, <input>]* -o <output>\n");
}
else
{
thisAppClass = FindAppClass(&privateModule.application.privateNameSpace, false);
*/
thisAppClass = SearchAppClass_Module(privateModule);
+ if(!thisAppClass)
+ thisAppClass = eSystem_FindClass(privateModule, "Application");
}
WriteMain(output);