From 4dcd178c144c44b52f38f5786f0a25e6eb6cd8ef Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Thu, 4 Aug 2016 10:09:06 -0400 Subject: [PATCH] compiler/bootstrap: synced --- compiler/bootstrap/ecc/bootstrap/ecc.c | 217 ++- compiler/bootstrap/ecc/bootstrap/ecc.main.c | 9 +- compiler/bootstrap/ecere/bootstrap/AVLTree.c | 211 +- compiler/bootstrap/ecere/bootstrap/Array.c | 5 +- compiler/bootstrap/ecere/bootstrap/BTNode.c | 5 +- compiler/bootstrap/ecere/bootstrap/BinaryTree.c | 5 +- compiler/bootstrap/ecere/bootstrap/BufferedFile.c | 5 +- .../bootstrap/ecere/bootstrap/BuiltInContainer.c | 5 +- compiler/bootstrap/ecere/bootstrap/Container.c | 6 +- compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c | 5 +- compiler/bootstrap/ecere/bootstrap/DualPipe.c | 213 +- compiler/bootstrap/ecere/bootstrap/File.c | 5 +- compiler/bootstrap/ecere/bootstrap/LinkList.c | 95 +- compiler/bootstrap/ecere/bootstrap/List.c | 95 +- compiler/bootstrap/ecere/bootstrap/Map.c | 5 +- compiler/bootstrap/ecere/bootstrap/OldList.c | 99 +- compiler/bootstrap/ecere/bootstrap/String.c | 5 +- compiler/bootstrap/ecere/bootstrap/System.c | 73 +- compiler/bootstrap/ecere/bootstrap/TempFile.c | 5 +- compiler/bootstrap/ecere/bootstrap/dataTypes.c | 51 +- compiler/bootstrap/ecere/bootstrap/ecere.main.c | 3 +- compiler/bootstrap/ecere/bootstrap/i18n.c | 181 +- compiler/bootstrap/ecere/bootstrap/instance.c | 37 +- compiler/bootstrap/ecere/bootstrap/memory.c | 207 +- compiler/bootstrap/ecp/bootstrap/ecp.c | 77 +- compiler/bootstrap/ecp/bootstrap/ecp.main.c | 9 +- compiler/bootstrap/ecs/bootstrap/ecs.c | 244 +-- compiler/bootstrap/ecs/bootstrap/ecs.main.c | 9 +- compiler/bootstrap/libec/bootstrap/ast.c | 131 +- compiler/bootstrap/libec/bootstrap/copy.c | 813 ++++---- compiler/bootstrap/libec/bootstrap/dbpass.c | 2045 ++++++++++---------- compiler/bootstrap/libec/bootstrap/ec.main.c | 3 +- compiler/bootstrap/libec/bootstrap/ecdefs.c | 5 +- compiler/bootstrap/libec/bootstrap/expression.c | 167 +- compiler/bootstrap/libec/bootstrap/firstPass.c | 53 +- compiler/bootstrap/libec/bootstrap/freeAst.c | 827 ++++---- compiler/bootstrap/libec/bootstrap/grammar.c | 167 +- compiler/bootstrap/libec/bootstrap/lexer.c | 95 +- compiler/bootstrap/libec/bootstrap/loadSymbols.c | 61 +- compiler/bootstrap/libec/bootstrap/output.c | 81 +- compiler/bootstrap/libec/bootstrap/pass0.c | 205 +- compiler/bootstrap/libec/bootstrap/pass1.c | 763 ++++---- compiler/bootstrap/libec/bootstrap/pass15.c | 375 ++-- compiler/bootstrap/libec/bootstrap/pass16.c | 185 +- compiler/bootstrap/libec/bootstrap/pass2.c | 79 +- compiler/bootstrap/libec/bootstrap/pass3.c | 81 +- compiler/bootstrap/libec/bootstrap/shortcuts.c | 217 ++- compiler/bootstrap/libec/bootstrap/type.c | 167 +- 48 files changed, 4142 insertions(+), 4264 deletions(-) diff --git a/compiler/bootstrap/ecc/bootstrap/ecc.c b/compiler/bootstrap/ecc/bootstrap/ecc.c index 75752a9..d1d986b 100644 --- a/compiler/bootstrap/ecc/bootstrap/ecc.c +++ b/compiler/bootstrap/ecc/bootstrap/ecc.c @@ -323,6 +323,42 @@ int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(); int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct FunctionImport; struct FunctionImport @@ -546,67 +582,82 @@ extern void FreeGlobalData(struct __ecereNameSpace__ecere__com__NameSpace * glob extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[]); -struct __ecereNameSpace__ecere__com__DataMember; +struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__DataMember +struct __ecereNameSpace__ecere__com__Method { -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; +int memberAccess; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property; +extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__Module; + +struct __ecereNameSpace__ecere__com__Module { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; + +static struct __ecereNameSpace__ecere__com__Instance * privateModule; + +extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module); + +struct GlobalData +{ +uintptr_t key; +struct __ecereNameSpace__ecere__sys__BTNode * parent; +struct __ecereNameSpace__ecere__sys__BTNode * left; +struct __ecereNameSpace__ecere__sys__BTNode * right; +int depth; +struct __ecereNameSpace__ecere__com__Instance * module; +char * dataTypeString; struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +char * fullName; +char __ecere_padding[40]; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess); -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule); -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess); -struct __ecereNameSpace__ecere__com__Method; +extern struct __ecereNameSpace__ecere__com__Instance * __thisModule; + +void __ecereUnregisterModule_ecc(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + +struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument { @@ -631,43 +682,26 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method +struct __ecereNameSpace__ecere__com__DataMember { +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; +unsigned int isProperty; +int memberAccess; +int id; struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct Type * dataType; -int memberAccess; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); - -struct __ecereNameSpace__ecere__com__Module; - -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class @@ -727,43 +761,8 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; -static struct __ecereNameSpace__ecere__com__Instance * privateModule; - -extern void SetPrivateModule(struct __ecereNameSpace__ecere__com__Instance * module); - -struct GlobalData -{ -uintptr_t key; -struct __ecereNameSpace__ecere__sys__BTNode * parent; -struct __ecereNameSpace__ecere__sys__BTNode * left; -struct __ecereNameSpace__ecere__sys__BTNode * right; -int depth; -struct __ecereNameSpace__ecere__com__Instance * module; -char * dataTypeString; -struct Type * dataType; -void * symbol; -char * fullName; -char __ecere_padding[40]; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess); - -extern void ComputeModuleClasses(struct __ecereNameSpace__ecere__com__Instance * module); - -extern void FreeTypeData(struct __ecereNameSpace__ecere__com__Instance * privateModule); - -extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const 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__Instance * __thisModule; - -void __ecereUnregisterModule_ecc(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - static struct __ecereNameSpace__ecere__com__Class * __ecereClass_CompilerApp; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol; diff --git a/compiler/bootstrap/ecc/bootstrap/ecc.main.c b/compiler/bootstrap/ecc/bootstrap/ecc.main.c index 4181179..ffa9456 100644 --- a/compiler/bootstrap/ecc/bootstrap/ecc.main.c +++ b/compiler/bootstrap/ecc/bootstrap/ecc.main.c @@ -185,7 +185,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -410,7 +410,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance; @@ -421,14 +420,11 @@ int main(int _argc, char * _argv[]) { int exitCode; struct __ecereNameSpace__ecere__com__Instance * module; -unsigned int setThingsUp = !__thisModule; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Class * _class; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Method * method; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * _property; -if(setThingsUp) -__thisModule = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); -__currentModule = module = __thisModule; +__thisModule = __currentModule = module = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ec", 2, (void *)(__ecereDll_Load_ec), (void *)(__ecereDll_Unload_ec)); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ecere", 2, (void *)(__ecereDll_Load_ecere), (void *)(__ecereDll_Unload_ecere)); __ecereRegisterModule_ecc(module); @@ -460,7 +456,6 @@ _class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::Ol __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile"); __ecereNameSpace__ecere__LoadTranslatedStrings((((void *)0)), "ecc"); _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "CompilerApp"); -if(setThingsUp) __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class); __thisModule = __currentModule; __ecereCreateModuleInstances_ecc(); diff --git a/compiler/bootstrap/ecere/bootstrap/AVLTree.c b/compiler/bootstrap/ecere/bootstrap/AVLTree.c index b727a56..848016a 100644 --- a/compiler/bootstrap/ecere/bootstrap/AVLTree.c +++ b/compiler/bootstrap/ecere/bootstrap/AVLTree.c @@ -133,6 +133,42 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove; int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__com__AVLNode; struct __ecereNameSpace__ecere__com__AVLNode @@ -158,30 +194,6 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__Method @@ -203,7 +215,63 @@ int memberAccess; extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Module; + +extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const 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__Instance * __thisModule; + +struct __ecereNameSpace__ecere__com__NameSpace; + +struct __ecereNameSpace__ecere__com__NameSpace +{ +const char * name; +struct __ecereNameSpace__ecere__com__NameSpace * btParent; +struct __ecereNameSpace__ecere__com__NameSpace * left; +struct __ecereNameSpace__ecere__com__NameSpace * right; +int depth; +struct __ecereNameSpace__ecere__com__NameSpace * parent; +struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; +struct __ecereNameSpace__ecere__sys__BinaryTree classes; +struct __ecereNameSpace__ecere__sys__BinaryTree defines; +struct __ecereNameSpace__ecere__sys__BinaryTree functions; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Module +{ +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; + +void __ecereUnregisterModule_AVLTree(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + +struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument { @@ -228,10 +296,10 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__DataMember { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; unsigned int isProperty; int memberAccess; @@ -240,50 +308,14 @@ struct __ecereNameSpace__ecere__com__Class * _class; const char * dataTypeString; struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int type, const void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg); - -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const 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__Instance * __thisModule; - -struct __ecereNameSpace__ecere__com__NameSpace; - -struct __ecereNameSpace__ecere__com__NameSpace -{ -const char * name; -struct __ecereNameSpace__ecere__com__NameSpace * btParent; -struct __ecereNameSpace__ecere__com__NameSpace * left; -struct __ecereNameSpace__ecere__com__NameSpace * right; -int depth; -struct __ecereNameSpace__ecere__com__NameSpace * parent; -struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; -struct __ecereNameSpace__ecere__sys__BinaryTree classes; -struct __ecereNameSpace__ecere__sys__BinaryTree defines; -struct __ecereNameSpace__ecere__sys__BinaryTree functions; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class @@ -343,19 +375,9 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; -} ecere_gcc_struct; +extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int type, const void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg); static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__AVLTree; @@ -369,24 +391,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module; -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - uint64 __ecereMethod___ecereNameSpace__ecere__com__AVLTree_GetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__AVLNode * node) { return node ? ((((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) ? (uint64)(uintptr_t)(((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *))) : node->key) : (uint64)0; @@ -488,11 +492,6 @@ __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ }) : 0), node = 0); } -void __ecereUnregisterModule_AVLTree(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - void __ecereRegisterModule_AVLTree(struct __ecereNameSpace__ecere__com__Instance * module) { struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; diff --git a/compiler/bootstrap/ecere/bootstrap/Array.c b/compiler/bootstrap/ecere/bootstrap/Array.c index 5f4e3d1..78dc061 100644 --- a/compiler/bootstrap/ecere/bootstrap/Array.c +++ b/compiler/bootstrap/ecere/bootstrap/Array.c @@ -251,6 +251,8 @@ __ecereNameSpace__ecere__com___qsortrx(base, nel, width, compare, (((void *)0)), struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Array_size, * __ecerePropM___ecereNameSpace__ecere__com__Array_size; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Array_minAllocSize, * __ecerePropM___ecereNameSpace__ecere__com__Array_minAllocSize; @@ -318,8 +320,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); unsigned int __ecereProp___ecereNameSpace__ecere__com__Array_Get_size(struct __ecereNameSpace__ecere__com__Instance * this); @@ -503,7 +503,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/BTNode.c b/compiler/bootstrap/ecere/bootstrap/BTNode.c index 4e0ea8f..89cb676 100644 --- a/compiler/bootstrap/ecere/bootstrap/BTNode.c +++ b/compiler/bootstrap/ecere/bootstrap/BTNode.c @@ -123,6 +123,8 @@ __builtin_va_end(args); struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BTNode_prev, * __ecerePropM___ecereNameSpace__ecere__sys__BTNode_prev; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BTNode_next, * __ecerePropM___ecereNameSpace__ecere__sys__BTNode_next; @@ -586,8 +588,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * data); @@ -948,7 +948,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/BinaryTree.c b/compiler/bootstrap/ecere/bootstrap/BinaryTree.c index 52f3a50..9d38f4d 100644 --- a/compiler/bootstrap/ecere/bootstrap/BinaryTree.c +++ b/compiler/bootstrap/ecere/bootstrap/BinaryTree.c @@ -111,6 +111,8 @@ void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FreeString(char * st struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first, * __ecerePropM___ecereNameSpace__ecere__sys__BinaryTree_first; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_last, * __ecerePropM___ecereNameSpace__ecere__sys__BinaryTree_last; @@ -195,8 +197,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * data); @@ -475,7 +475,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/BufferedFile.c b/compiler/bootstrap/ecere/bootstrap/BufferedFile.c index 3a82f05..c1e4dbe 100644 --- a/compiler/bootstrap/ecere/bootstrap/BufferedFile.c +++ b/compiler/bootstrap/ecere/bootstrap/BufferedFile.c @@ -112,6 +112,8 @@ struct __ecereNameSpace__ecere__com__GlobalFunction; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BufferedFile_handle, * __ecerePropM___ecereNameSpace__ecere__sys__BufferedFile_handle; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BufferedFile_bufferSize, * __ecerePropM___ecereNameSpace__ecere__sys__BufferedFile_bufferSize; @@ -169,8 +171,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); struct __ecereNameSpace__ecere__sys__BufferedFile @@ -382,7 +382,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c b/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c index 0f8c727..791030e 100644 --- a/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c +++ b/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c @@ -108,6 +108,8 @@ extern char * strcat(char * , const char * ); struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__BuiltInContainer___ecereNameSpace__ecere__com__Container, * __ecerePropM___ecereNameSpace__ecere__com__BuiltInContainer___ecereNameSpace__ecere__com__Container; struct __ecereNameSpace__ecere__com__Class; @@ -169,8 +171,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); int __ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst; @@ -424,7 +424,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/Container.c b/compiler/bootstrap/ecere/bootstrap/Container.c index 95d77c2..c2d5604 100644 --- a/compiler/bootstrap/ecere/bootstrap/Container.c +++ b/compiler/bootstrap/ecere/bootstrap/Container.c @@ -126,6 +126,8 @@ int __ecereVMethodID_class_OnFree; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Iterator_data, * __ecerePropM___ecereNameSpace__ecere__com__Iterator_data; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Container_copySrc, * __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc; @@ -225,8 +227,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); struct __ecereNameSpace__ecere__com__Iterator @@ -444,7 +444,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application @@ -1648,7 +1647,6 @@ __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Free", "void Free( __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Delete", "void Delete(ecere::com::IteratorPointer i)", __ecereMethod___ecereNameSpace__ecere__com__Container_Delete, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Sort", "void Sort(bool ascending)", __ecereMethod___ecereNameSpace__ecere__com__Container_Sort, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "TakeOut", "void TakeOut(const D d)", __ecereMethod___ecereNameSpace__ecere__com__Container_TakeOut, 1); -__ecereNameSpace__ecere__com__eClass_AddMethod(class, "_Sort", "static void _Sort(bool ascending, ecere::com::Container * lists)", __ecereMethod___ecereNameSpace__ecere__com__Container__Sort, 1); __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "copySrc", "ecere::com::Container", __ecereProp___ecereNameSpace__ecere__com__Container_Set_copySrc, 0, 1); if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application) __ecereProp___ecereNameSpace__ecere__com__Container_copySrc = __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc, __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc = (void *)0; diff --git a/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c b/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c index 2e72465..037fdc1 100644 --- a/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c +++ b/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c @@ -304,6 +304,8 @@ __ecereMethod___ecereNameSpace__ecere__com__AVLNode_SingleRotateLeft(this); struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_prev, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_prev; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__AVLNode_next, * __ecerePropM___ecereNameSpace__ecere__com__AVLNode_next; @@ -525,8 +527,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove; @@ -709,7 +709,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/DualPipe.c b/compiler/bootstrap/ecere/bootstrap/DualPipe.c index 1ed2ad0..a18b23c 100644 --- a/compiler/bootstrap/ecere/bootstrap/DualPipe.c +++ b/compiler/bootstrap/ecere/bootstrap/DualPipe.c @@ -202,6 +202,42 @@ int __ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize; int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__sys__BinaryTree; struct __ecereNameSpace__ecere__sys__BinaryTree @@ -240,30 +276,6 @@ __builtin_va_end(args); return __ecereNameSpace__ecere__sys__DualPipeOpenEnv(mode, env, commandLine); } -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__Method @@ -285,7 +297,65 @@ int memberAccess; extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Module; + +extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const 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__Instance * __thisModule; + +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); + +struct __ecereNameSpace__ecere__com__NameSpace; + +struct __ecereNameSpace__ecere__com__NameSpace +{ +const char * name; +struct __ecereNameSpace__ecere__com__NameSpace * btParent; +struct __ecereNameSpace__ecere__com__NameSpace * left; +struct __ecereNameSpace__ecere__com__NameSpace * right; +int depth; +struct __ecereNameSpace__ecere__com__NameSpace * parent; +struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; +struct __ecereNameSpace__ecere__sys__BinaryTree classes; +struct __ecereNameSpace__ecere__sys__BinaryTree defines; +struct __ecereNameSpace__ecere__sys__BinaryTree functions; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Module +{ +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; + +void __ecereUnregisterModule_DualPipe(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + +struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument { @@ -310,10 +380,10 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__DataMember { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; unsigned int isProperty; int memberAccess; @@ -322,50 +392,14 @@ struct __ecereNameSpace__ecere__com__Class * _class; const char * dataTypeString; struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const 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__Instance * __thisModule; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - -struct __ecereNameSpace__ecere__com__NameSpace; - -struct __ecereNameSpace__ecere__com__NameSpace -{ -const char * name; -struct __ecereNameSpace__ecere__com__NameSpace * btParent; -struct __ecereNameSpace__ecere__com__NameSpace * left; -struct __ecereNameSpace__ecere__com__NameSpace * right; -int depth; -struct __ecereNameSpace__ecere__com__NameSpace * parent; -struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; -struct __ecereNameSpace__ecere__sys__BinaryTree classes; -struct __ecereNameSpace__ecere__sys__BinaryTree defines; -struct __ecereNameSpace__ecere__sys__BinaryTree functions; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class @@ -425,18 +459,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__PipeOpenMode; @@ -447,24 +469,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module; -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - void __ecereDestructor___ecereNameSpace__ecere__sys__DualPipe(struct __ecereNameSpace__ecere__com__Instance * this) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__DualPipe * __ecerePointer___ecereNameSpace__ecere__sys__DualPipe = (struct __ecereNameSpace__ecere__sys__DualPipe *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset) : 0); @@ -659,11 +663,6 @@ __internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; })) : DualPipe_GetSize(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); } -void __ecereUnregisterModule_DualPipe(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetLinePeek(struct __ecereNameSpace__ecere__com__Instance * this, char * s, int max, int * charsRead) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__DualPipe * __ecerePointer___ecereNameSpace__ecere__sys__DualPipe = (struct __ecereNameSpace__ecere__sys__DualPipe *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__DualPipe->offset) : 0); diff --git a/compiler/bootstrap/ecere/bootstrap/File.c b/compiler/bootstrap/ecere/bootstrap/File.c index 9b1bd9f..42163f7 100644 --- a/compiler/bootstrap/ecere/bootstrap/File.c +++ b/compiler/bootstrap/ecere/bootstrap/File.c @@ -321,6 +321,8 @@ return d; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__File_input, * __ecerePropM___ecereNameSpace__ecere__sys__File_input; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__File_output, * __ecerePropM___ecereNameSpace__ecere__sys__File_output; @@ -436,8 +438,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__sys__httpFileSystem; @@ -632,7 +632,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/LinkList.c b/compiler/bootstrap/ecere/bootstrap/LinkList.c index dbf7ab8..9ef5cf7 100644 --- a/compiler/bootstrap/ecere/bootstrap/LinkList.c +++ b/compiler/bootstrap/ecere/bootstrap/LinkList.c @@ -148,6 +148,42 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add; extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__com__Link; struct __ecereNameSpace__ecere__com__Link @@ -224,27 +260,6 @@ struct __ecereNameSpace__ecere__com__ListItem * prev, * next; struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__Method -{ -const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; -struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int memberAccess; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); - -struct __ecereNameSpace__ecere__com__Property; - struct __ecereNameSpace__ecere__com__ClassTemplateArgument { union @@ -268,39 +283,24 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__Method { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +int memberAccess; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int type, const void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg); @@ -383,7 +383,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/List.c b/compiler/bootstrap/ecere/bootstrap/List.c index 3ba092f..a1fbacd 100644 --- a/compiler/bootstrap/ecere/bootstrap/List.c +++ b/compiler/bootstrap/ecere/bootstrap/List.c @@ -144,6 +144,42 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData; int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Find; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__com__Link; struct __ecereNameSpace__ecere__com__Link @@ -213,27 +249,6 @@ extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__Method -{ -const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; -struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int memberAccess; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); - -struct __ecereNameSpace__ecere__com__Property; - struct __ecereNameSpace__ecere__com__ClassTemplateArgument { union @@ -257,39 +272,24 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__Method { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +int memberAccess; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); extern struct __ecereNameSpace__ecere__com__ClassTemplateParameter * __ecereNameSpace__ecere__com__eClass_AddTemplateParameter(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, int type, const void * info, struct __ecereNameSpace__ecere__com__ClassTemplateArgument * defaultArg); @@ -372,7 +372,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/Map.c b/compiler/bootstrap/ecere/bootstrap/Map.c index a3e2b76..12d2626 100644 --- a/compiler/bootstrap/ecere/bootstrap/Map.c +++ b/compiler/bootstrap/ecere/bootstrap/Map.c @@ -162,6 +162,8 @@ void __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_value(struct __ecereN struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__MapNode_key, * __ecerePropM___ecereNameSpace__ecere__com__MapNode_key; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__MapNode_value, * __ecerePropM___ecereNameSpace__ecere__com__MapNode_value; @@ -243,8 +245,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); struct __ecereNameSpace__ecere__com__Iterator @@ -514,7 +514,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/OldList.c b/compiler/bootstrap/ecere/bootstrap/OldList.c index c35a422..4852ffb 100644 --- a/compiler/bootstrap/ecere/bootstrap/OldList.c +++ b/compiler/bootstrap/ecere/bootstrap/OldList.c @@ -507,6 +507,42 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__sys__BinaryTree; struct __ecereNameSpace__ecere__sys__BinaryTree @@ -548,32 +584,6 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Merge(this, &list1, &list2, } } -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__Method @@ -595,7 +605,7 @@ int memberAccess; extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument { @@ -620,10 +630,10 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__DataMember { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; unsigned int isProperty; int memberAccess; @@ -632,27 +642,17 @@ struct __ecereNameSpace__ecere__com__Class * _class; const char * dataTypeString; struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); struct __ecereNameSpace__ecere__com__Module; @@ -733,7 +733,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/String.c b/compiler/bootstrap/ecere/bootstrap/String.c index a572fc7..695424b 100644 --- a/compiler/bootstrap/ecere/bootstrap/String.c +++ b/compiler/bootstrap/ecere/bootstrap/String.c @@ -1278,6 +1278,8 @@ return destination; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_string, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_string; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_char__PTR_; @@ -1335,8 +1337,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); char * __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(struct __ecereNameSpace__ecere__com__Instance * this); @@ -1506,7 +1506,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/System.c b/compiler/bootstrap/ecere/bootstrap/System.c index 815aad7..c312d70 100644 --- a/compiler/bootstrap/ecere/bootstrap/System.c +++ b/compiler/bootstrap/ecere/bootstrap/System.c @@ -449,6 +449,42 @@ void __ecereDestroyModuleInstances_System() (__ecereNameSpace__ecere__com__eInstance_DecRef(__ecereNameSpace__ecere__sys__sysErrorMessages), __ecereNameSpace__ecere__sys__sysErrorMessages = 0); } +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + void __ecereNameSpace__ecere__sys__Log(const char * text); void __ecereNameSpace__ecere__sys__Logf(const char * format, ...) @@ -499,42 +535,6 @@ short pointerAlignment; extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__ClassTemplateArgument @@ -660,7 +660,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/TempFile.c b/compiler/bootstrap/ecere/bootstrap/TempFile.c index 517bb2b..6529fac 100644 --- a/compiler/bootstrap/ecere/bootstrap/TempFile.c +++ b/compiler/bootstrap/ecere/bootstrap/TempFile.c @@ -112,6 +112,8 @@ extern size_t strlen(const char * ); struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__TempFile_openMode, * __ecerePropM___ecereNameSpace__ecere__sys__TempFile_openMode; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__TempFile_buffer, * __ecerePropM___ecereNameSpace__ecere__sys__TempFile_buffer; @@ -165,8 +167,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); int __ecereProp___ecereNameSpace__ecere__sys__TempFile_Get_openMode(struct __ecereNameSpace__ecere__com__Instance * this); @@ -334,7 +334,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/ecere/bootstrap/dataTypes.c b/compiler/bootstrap/ecere/bootstrap/dataTypes.c index fb58296..3744faa 100644 --- a/compiler/bootstrap/ecere/bootstrap/dataTypes.c +++ b/compiler/bootstrap/ecere/bootstrap/dataTypes.c @@ -300,6 +300,8 @@ long long largest; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_buffer, * __ecerePropM___ecereNameSpace__ecere__com__SerialBuffer_buffer; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_size, * __ecerePropM___ecereNameSpace__ecere__com__SerialBuffer_size; @@ -946,8 +948,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); unsigned char * __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_Get_buffer(struct __ecereNameSpace__ecere__com__Instance * this); @@ -1191,7 +1191,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application @@ -3463,19 +3462,19 @@ __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_buffer = __ecerePropM___e __ecerePropM___ecereNameSpace__ecere__com__SerialBuffer_size = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "size", "uint", __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_Set_size, __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_Get_size, 1); if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application) __ecereProp___ecereNameSpace__ecere__com__SerialBuffer_size = __ecerePropM___ecereNameSpace__ecere__com__SerialBuffer_size, __ecerePropM___ecereNameSpace__ecere__com__SerialBuffer_size = (void *)0; -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnGetString", "const char * ecere::com::Enum_OnGetString(ecere::com::Class _class, void * data, char * tempString, void * fieldData, bool * needClass)", __ecereNameSpace__ecere__com__Enum_OnGetString, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Integer_OnGetString", "const char * ecere::com::Integer_OnGetString(ecere::com::Class _class, int * data, char * string, void * fieldData, bool * needClass)", __ecereNameSpace__ecere__com__Integer_OnGetString, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Byte_OnSerialize", "void ecere::com::Byte_OnSerialize(ecere::com::Class _class, byte * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Byte_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Byte_OnUnserialize", "void ecere::com::Byte_OnUnserialize(ecere::com::Class _class, byte * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Byte_OnUnserialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int_OnSerialize", "void ecere::com::Int_OnSerialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::IntPtr32_OnSerialize", "void ecere::com::IntPtr32_OnSerialize(ecere::com::Class _class, int data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__IntPtr32_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int_OnUnserialize", "void ecere::com::Int_OnUnserialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int_OnUnserialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnSerialize", "void ecere::com::Enum_OnSerialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Enum_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnUnserialize", "void ecere::com::Enum_OnUnserialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Enum_OnUnserialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int64_OnSerialize", "void ecere::com::Int64_OnSerialize(ecere::com::Class _class, int64 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int64_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int64_OnUnserialize", "void ecere::com::Int64_OnUnserialize(ecere::com::Class _class, int64 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int64_OnUnserialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Word_OnSerialize", "void ecere::com::Word_OnSerialize(ecere::com::Class _class, uint16 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Word_OnSerialize, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Word_OnUnserialize", "void ecere::com::Word_OnUnserialize(ecere::com::Class _class, uint16 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Word_OnUnserialize, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnGetString", "const char * ecere::com::Enum_OnGetString(ecere::com::Class _class, void * data, char * tempString, void * fieldData, bool * needClass)", __ecereNameSpace__ecere__com__Enum_OnGetString, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Integer_OnGetString", "const char * ecere::com::Integer_OnGetString(ecere::com::Class _class, int * data, char * string, void * fieldData, bool * needClass)", __ecereNameSpace__ecere__com__Integer_OnGetString, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Byte_OnSerialize", "void ecere::com::Byte_OnSerialize(ecere::com::Class _class, byte * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Byte_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Byte_OnUnserialize", "void ecere::com::Byte_OnUnserialize(ecere::com::Class _class, byte * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Byte_OnUnserialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int_OnSerialize", "void ecere::com::Int_OnSerialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::IntPtr32_OnSerialize", "void ecere::com::IntPtr32_OnSerialize(ecere::com::Class _class, int data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__IntPtr32_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int_OnUnserialize", "void ecere::com::Int_OnUnserialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int_OnUnserialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnSerialize", "void ecere::com::Enum_OnSerialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Enum_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Enum_OnUnserialize", "void ecere::com::Enum_OnUnserialize(ecere::com::Class _class, int * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Enum_OnUnserialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int64_OnSerialize", "void ecere::com::Int64_OnSerialize(ecere::com::Class _class, int64 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int64_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Int64_OnUnserialize", "void ecere::com::Int64_OnUnserialize(ecere::com::Class _class, int64 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Int64_OnUnserialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Word_OnSerialize", "void ecere::com::Word_OnSerialize(ecere::com::Class _class, uint16 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Word_OnSerialize, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Word_OnUnserialize", "void ecere::com::Word_OnUnserialize(ecere::com::Class _class, uint16 * data, ecere::com::IOChannel channel)", __ecereNameSpace__ecere__com__Word_OnUnserialize, module, 2); class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(1, "ecere::com::StaticString", 0, sizeof(struct __ecereNameSpace__ecere__com__StaticString), 0, (void *)0, (void *)0, module, 4, 1); if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class) __ecereClass___ecereNameSpace__ecere__com__StaticString = class; @@ -3485,15 +3484,15 @@ __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereM __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnSerialize", 0, __ecereMethod___ecereNameSpace__ecere__com__StaticString_OnSerialize, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnUnserialize", 0, __ecereMethod___ecereNameSpace__ecere__com__StaticString_OnUnserialize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "string", "char[1]", 1, 1, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::String_OnCompare", "int ecere::com::String_OnCompare(ecere::com::Class _class, const char * string1, const char * string2)", __ecereNameSpace__ecere__com__String_OnCompare, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::InitializeDataTypes1", "void ecere::com::InitializeDataTypes1(ecere::com::Module module)", __ecereNameSpace__ecere__com__InitializeDataTypes1, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::InitializeDataTypes", "void ecere::com::InitializeDataTypes(ecere::com::Module module)", __ecereNameSpace__ecere__com__InitializeDataTypes, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintStdArgsToBuffer", "int ecere::com::PrintStdArgsToBuffer(char * buffer, int maxLen, const typed_object object, __builtin_va_list args)", __ecereNameSpace__ecere__com__PrintStdArgsToBuffer, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintBuf", "int ecere::com::PrintBuf(char * buffer, int maxLen, const typed_object object, ...)", __ecereNameSpace__ecere__com__PrintBuf, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLnBuf", "int ecere::com::PrintLnBuf(char * buffer, int maxLen, const typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLnBuf, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintString", "char * ecere::com::PrintString(const typed_object object, ...)", __ecereNameSpace__ecere__com__PrintString, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLnString", "char * ecere::com::PrintLnString(const typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLnString, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLn", "void ecere::com::PrintLn(const typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLn, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Print", "void ecere::com::Print(const typed_object object, ...)", __ecereNameSpace__ecere__com__Print, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::String_OnCompare", "int ecere::com::String_OnCompare(ecere::com::Class _class, const char * string1, const char * string2)", __ecereNameSpace__ecere__com__String_OnCompare, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::InitializeDataTypes1", "void ecere::com::InitializeDataTypes1(ecere::com::Module module)", __ecereNameSpace__ecere__com__InitializeDataTypes1, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::InitializeDataTypes", "void ecere::com::InitializeDataTypes(ecere::com::Module module)", __ecereNameSpace__ecere__com__InitializeDataTypes, module, 2); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintStdArgsToBuffer", "int ecere::com::PrintStdArgsToBuffer(char * buffer, int maxLen, typed_object object, __builtin_va_list args)", __ecereNameSpace__ecere__com__PrintStdArgsToBuffer, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintBuf", "int ecere::com::PrintBuf(char * buffer, int maxLen, typed_object object, ...)", __ecereNameSpace__ecere__com__PrintBuf, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLnBuf", "int ecere::com::PrintLnBuf(char * buffer, int maxLen, typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLnBuf, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintString", "char * ecere::com::PrintString(typed_object object, ...)", __ecereNameSpace__ecere__com__PrintString, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLnString", "char * ecere::com::PrintLnString(typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLnString, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::PrintLn", "void ecere::com::PrintLn(typed_object object, ...)", __ecereNameSpace__ecere__com__PrintLn, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::Print", "void ecere::com::Print(typed_object object, ...)", __ecereNameSpace__ecere__com__Print, module, 4); } diff --git a/compiler/bootstrap/ecere/bootstrap/ecere.main.c b/compiler/bootstrap/ecere/bootstrap/ecere.main.c index ab7a694..4b2cc00 100644 --- a/compiler/bootstrap/ecere/bootstrap/ecere.main.c +++ b/compiler/bootstrap/ecere/bootstrap/ecere.main.c @@ -423,7 +423,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -1188,6 +1188,5 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; diff --git a/compiler/bootstrap/ecere/bootstrap/i18n.c b/compiler/bootstrap/ecere/bootstrap/i18n.c index 30b4db1..6816066 100644 --- a/compiler/bootstrap/ecere/bootstrap/i18n.c +++ b/compiler/bootstrap/ecere/bootstrap/i18n.c @@ -208,40 +208,6 @@ __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, return (result && result[0]) ? result : string; } -struct __ecereNameSpace__ecere__sys__BinaryTree; - -struct __ecereNameSpace__ecere__sys__BinaryTree -{ -struct __ecereNameSpace__ecere__sys__BTNode * root; -int count; -int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); -void (* FreeKey)(void * key); -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Property; struct __ecereNameSpace__ecere__com__Property @@ -274,35 +240,22 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); -struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__sys__BinaryTree; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union +struct __ecereNameSpace__ecere__sys__BinaryTree { -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__sys__BTNode * root; +int count; +int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); +void (* FreeKey)(void * key); } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Method; + struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -340,6 +293,87 @@ struct __ecereNameSpace__ecere__sys__BinaryTree defines; struct __ecereNameSpace__ecere__sys__BinaryTree functions; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Module +{ +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; + +void __ecereUnregisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Class { struct __ecereNameSpace__ecere__com__Class * prev; @@ -397,18 +431,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__const_String___; @@ -419,24 +441,6 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Map; -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - void __ecereCreateModuleInstances_i18n() { __ecereNameSpace__ecere__moduleMaps = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__Map_TPL_String__ecere__com__Map_TPL_String__const_String___); @@ -829,11 +833,6 @@ __internal_VirtualMethod ? __internal_VirtualMethod(__ecereNameSpace__ecere__mod } } -void __ecereUnregisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - void __ecereRegisterModule_i18n(struct __ecereNameSpace__ecere__com__Instance * module) { struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; diff --git a/compiler/bootstrap/ecere/bootstrap/instance.c b/compiler/bootstrap/ecere/bootstrap/instance.c index 4e20cdd..7649f30 100644 --- a/compiler/bootstrap/ecere/bootstrap/instance.c +++ b/compiler/bootstrap/ecere/bootstrap/instance.c @@ -1704,18 +1704,6 @@ static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace_ (__ecereNameSpace__ecere__com__eSystem_Delete(value->name), value->name = 0); } -static void * __ecereNameSpace__ecere__com__Instance_New(struct __ecereNameSpace__ecere__com__Class * _class, unsigned int bindingsAlloc); - -void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class) -{ -return __ecereNameSpace__ecere__com__Instance_New(_class, 1); -} - -void * __ecereNameSpace__ecere__com__eInstance_NewEx(struct __ecereNameSpace__ecere__com__Class * _class, unsigned int bindingsAlloc) -{ -return __ecereNameSpace__ecere__com__Instance_New(_class, bindingsAlloc); -} - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__Method @@ -1832,7 +1820,7 @@ void (* callback)(void *, void *); struct __ecereNameSpace__ecere__com__Instance * object; } ecere_gcc_struct; -void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *)) +void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *)) { if(_property->isWatchable) { @@ -2217,7 +2205,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Angle; @@ -2497,13 +2484,13 @@ break; return (((void *)0)); } -static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from, unsigned int bindingsAlloc) +static unsigned int __ecereNameSpace__ecere__com__ConstructInstance(void * instance, struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from) { if(_class->templateClass) _class = _class->templateClass; if(_class->base && from != _class->base) { -if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from, 0)) +if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class->base, from)) return 0; } if(_class->Initialize) @@ -2515,13 +2502,7 @@ Initialize(_class->module); } if(_class->Constructor) { -unsigned int result; - -if(_class->bindingsClass) -result = ((unsigned int (*)(void *, unsigned int))(void *)_class->Constructor)(instance, bindingsAlloc); -else -result = _class->Constructor(instance); -if(!result) +if(!_class->Constructor(instance)) { for(; _class; _class = _class->base) { @@ -3443,7 +3424,7 @@ void __ecereNameSpace__ecere__com__eSystem_SetArgs(struct __ecereNameSpace__ecer System_SetArgs(argc, argv, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argc, &((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->argv); } -static void * __ecereNameSpace__ecere__com__Instance_New(struct __ecereNameSpace__ecere__com__Class * _class, unsigned int bindingsAlloc) +void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class) { struct __ecereNameSpace__ecere__com__Instance * instance = (((void *)0)); @@ -3475,7 +3456,7 @@ if(instance && _class->type == 0) ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class; ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl; } -if(instance && !__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0)), bindingsAlloc)) +if(instance && !__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, (((void *)0)))) { __ecereNameSpace__ecere__com___free(instance); instance = (((void *)0)); @@ -3904,7 +3885,7 @@ for(base = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)-> } ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class = _class; ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = _class->_vTbl; -if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass, 0)) +if(!__ecereNameSpace__ecere__com__ConstructInstance(instance, _class, fromClass)) { __ecereNameSpace__ecere__com___free(instance); *instancePtr = (((void *)0)); @@ -6623,7 +6604,6 @@ __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "templatized", "ecere: __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "numParams", "int", 4, 4, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "isInstanceClass", "bool", 4, 4, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "byValueSystemClass", "bool", 4, 4, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(class, "bindingsClass", "void *", sizeof(void *), 0xF000F000, 1); if(class) class->fixed = (unsigned int)1; if(class) @@ -6887,7 +6867,6 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetPr __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_SetProperty", "void ecere::com::eClass_SetProperty(ecere::com::Class _class, const char * name, int64 value)", __ecereNameSpace__ecere__com__eClass_SetProperty, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindMethod", "ecere::com::Method ecere::com::eClass_FindMethod(ecere::com::Class _class, const char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindMethod, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_New", "void * ecere::com::eInstance_New(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_New, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_NewEx", "void * ecere::com::eInstance_NewEx(ecere::com::Class _class, bool bindingsAlloc)", __ecereNameSpace__ecere__com__eInstance_NewEx, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Evolve", "void ecere::com::eInstance_Evolve(ecere::com::Instance * instancePtr, ecere::com::Class _class)", __ecereNameSpace__ecere__com__eInstance_Evolve, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Delete", "void ecere::com::eInstance_Delete(ecere::com::Instance instance)", __ecereNameSpace__ecere__com__eInstance_Delete, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_FindProperty", "ecere::com::Property ecere::com::eClass_FindProperty(ecere::com::Class _class, const char * name, ecere::com::Module module)", __ecereNameSpace__ecere__com__eClass_FindProperty, module, 4); @@ -6926,7 +6905,7 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Fi __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_Watchable", "void ecere::com::eProperty_Watchable(ecere::com::Property _property)", __ecereNameSpace__ecere__com__eProperty_Watchable, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_DestructionWatchable", "void ecere::com::eClass_DestructionWatchable(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_DestructionWatchable, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eProperty_SelfWatch", "void ecere::com::eProperty_SelfWatch(ecere::com::Class _class, const char * name, void (* callback)(void *))", __ecereNameSpace__ecere__com__eProperty_SelfWatch, module, 4); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Watch", "void ecere::com::eInstance_Watch(ecere::com::Instance instance, ecere::com::Property _property, void * object, void (* callback)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_Watch, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_Watch", "void ecere::com::eInstance_Watch(void * instance, ecere::com::Property _property, void * object, void (* callback)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_Watch, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_WatchDestruction", "void ecere::com::eInstance_WatchDestruction(ecere::com::Instance instance, ecere::com::Instance object, void (* callback)(void *, void *))", __ecereNameSpace__ecere__com__eInstance_WatchDestruction, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eInstance_StopWatching", "void ecere::com::eInstance_StopWatching(ecere::com::Instance instance, ecere::com::Property _property, ecere::com::Instance object)", __ecereNameSpace__ecere__com__eInstance_StopWatching, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_GetDesigner", "subclass(ecere::com::ClassDesignerBase) ecere::com::eClass_GetDesigner(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_GetDesigner, module, 4); diff --git a/compiler/bootstrap/ecere/bootstrap/memory.c b/compiler/bootstrap/ecere/bootstrap/memory.c index 2bd5f68..2075d77 100644 --- a/compiler/bootstrap/ecere/bootstrap/memory.c +++ b/compiler/bootstrap/ecere/bootstrap/memory.c @@ -164,40 +164,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); -struct __ecereNameSpace__ecere__sys__BinaryTree; - -struct __ecereNameSpace__ecere__sys__BinaryTree -{ -struct __ecereNameSpace__ecere__sys__BTNode * root; -int count; -int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); -void (* FreeKey)(void * key); -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct __ecereNameSpace__ecere__com__Instance * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Property; struct __ecereNameSpace__ecere__com__Property @@ -230,35 +196,22 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); -struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__sys__BinaryTree; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union +struct __ecereNameSpace__ecere__sys__BinaryTree { -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__sys__BTNode * root; +int count; +int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); +void (* FreeKey)(void * key); } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Method; + struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -296,6 +249,100 @@ struct __ecereNameSpace__ecere__sys__BinaryTree defines; struct __ecereNameSpace__ecere__sys__BinaryTree functions; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Module +{ +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; + +void __ecereRegisterModule_memory(struct __ecereNameSpace__ecere__com__Instance * module) +{ +struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; + +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::MoveBytes", "void ecere::sys::MoveBytes(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__MoveBytes, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytes", "void ecere::sys::CopyBytes(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytes, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytesBy2", "void ecere::sys::CopyBytesBy2(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytesBy2, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytesBy4", "void ecere::sys::CopyBytesBy4(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytesBy4, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytes", "void ecere::sys::FillBytes(void * area, byte value, uint count)", __ecereNameSpace__ecere__sys__FillBytes, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytesBy2", "void ecere::sys::FillBytesBy2(void * area, uint16 value, uint count)", __ecereNameSpace__ecere__sys__FillBytesBy2, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytesBy4", "void ecere::sys::FillBytesBy4(void * area, uint value, uint count)", __ecereNameSpace__ecere__sys__FillBytesBy4, module, 1); +} + +void __ecereUnregisterModule_memory(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct __ecereNameSpace__ecere__com__Instance * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Class { struct __ecereNameSpace__ecere__com__Class * prev; @@ -353,53 +400,5 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - -void __ecereRegisterModule_memory(struct __ecereNameSpace__ecere__com__Instance * module) -{ -struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; - -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::MoveBytes", "void ecere::sys::MoveBytes(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__MoveBytes, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytes", "void ecere::sys::CopyBytes(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytes, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytesBy2", "void ecere::sys::CopyBytesBy2(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytesBy2, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyBytesBy4", "void ecere::sys::CopyBytesBy4(void * dest, const void * source, uint count)", __ecereNameSpace__ecere__sys__CopyBytesBy4, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytes", "void ecere::sys::FillBytes(void * area, byte value, uint count)", __ecereNameSpace__ecere__sys__FillBytes, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytesBy2", "void ecere::sys::FillBytesBy2(void * area, uint16 value, uint count)", __ecereNameSpace__ecere__sys__FillBytesBy2, module, 1); -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FillBytesBy4", "void ecere::sys::FillBytesBy4(void * area, uint value, uint count)", __ecereNameSpace__ecere__sys__FillBytesBy4, module, 1); -} - -void __ecereUnregisterModule_memory(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - diff --git a/compiler/bootstrap/ecp/bootstrap/ecp.c b/compiler/bootstrap/ecp/bootstrap/ecp.c index 1265548..ae92014 100644 --- a/compiler/bootstrap/ecp/bootstrap/ecp.c +++ b/compiler/bootstrap/ecp/bootstrap/ecp.c @@ -395,6 +395,18 @@ int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(); int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek; +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); + struct Declarator; extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); @@ -430,6 +442,32 @@ extern void OutputExpression(struct Expression * exp, struct __ecereNameSpace__e struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName); @@ -629,44 +667,6 @@ int pos; uint64 mask; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); - struct __ecereNameSpace__ecere__com__ClassProperty; extern struct __ecereNameSpace__ecere__com__ClassProperty * __ecereNameSpace__ecere__com__eClass_AddClassProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt); @@ -808,7 +808,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; static struct __ecereNameSpace__ecere__com__Instance * privateModule; diff --git a/compiler/bootstrap/ecp/bootstrap/ecp.main.c b/compiler/bootstrap/ecp/bootstrap/ecp.main.c index 00fbb3f..b0ab407 100644 --- a/compiler/bootstrap/ecp/bootstrap/ecp.main.c +++ b/compiler/bootstrap/ecp/bootstrap/ecp.main.c @@ -187,7 +187,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -412,7 +412,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance; @@ -423,14 +422,11 @@ int main(int _argc, char * _argv[]) { int exitCode; struct __ecereNameSpace__ecere__com__Instance * module; -unsigned int setThingsUp = !__thisModule; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Class * _class; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Method * method; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * _property; -if(setThingsUp) -__thisModule = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); -__currentModule = module = __thisModule; +__thisModule = __currentModule = module = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ec", 2, (void *)(__ecereDll_Load_ec), (void *)(__ecereDll_Unload_ec)); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ecere", 2, (void *)(__ecereDll_Load_ecere), (void *)(__ecereDll_Unload_ecere)); __ecereRegisterModule_ecp(module); @@ -464,7 +460,6 @@ _class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::Ol __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile"); __ecereNameSpace__ecere__LoadTranslatedStrings((((void *)0)), "ecp"); _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "PrecompApp"); -if(setThingsUp) __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class); __thisModule = __currentModule; __ecereCreateModuleInstances_ecp(); diff --git a/compiler/bootstrap/ecs/bootstrap/ecs.c b/compiler/bootstrap/ecs/bootstrap/ecs.c index 4c84525..75ea8e7 100644 --- a/compiler/bootstrap/ecs/bootstrap/ecs.c +++ b/compiler/bootstrap/ecs/bootstrap/ecs.c @@ -403,6 +403,16 @@ int depth; struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct FunctionImport; struct FunctionImport @@ -450,6 +460,32 @@ int importAccess; struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern struct Type * ProcessTypeString(const char * string, unsigned int staticMethod); extern void PrintTypeNoConst(struct Type * type, char * string, unsigned int printName, unsigned int fullName); @@ -519,6 +555,70 @@ struct Type * dataType; int memberAccess; } ecere_gcc_struct; +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union +{ +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; +union +{ +struct +{ +struct External * pointerExternal; +struct External * structExternal; +} ecere_gcc_struct __anon1; +struct +{ +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct +{ +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; +} ecere_gcc_struct __anon2; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; +} ecere_gcc_struct; + struct Type { struct Type * prev; @@ -593,106 +693,6 @@ extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; -union -{ -struct -{ -struct External * pointerExternal; -struct External * structExternal; -} ecere_gcc_struct __anon1; -struct -{ -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct -{ -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; -} ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__sys__OldList _excludedSymbols = { 0, 0, 0, (unsigned int)(uintptr_t)&((struct Symbol *)(void * )0)->left, 0 @@ -890,7 +890,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ModuleInfo; @@ -2186,16 +2185,6 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); __internal_VirtualMethod ? __internal_VirtualMethod(f, " Module module;\n") : (unsigned int)1; })); -(__extension__ ({ -unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const char * string); - -__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; - -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); -__internal_VirtualMethod ? __internal_VirtualMethod(f, " bool setThingsUp = !__thisModule;\n") : (unsigned int)1; -})); } (__extension__ ({ unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const char * string); @@ -2327,19 +2316,7 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa __internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n\n") : (unsigned int)1; })); } -else -{ -(__extension__ ({ -unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const char * string); - -__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; - -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); -__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(setThingsUp)\n") : (unsigned int)1; -})); -if(targetPlatform == 1 && !isConsole) +else if(targetPlatform == 1 && !isConsole) (__extension__ ({ unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const char * string); @@ -2348,7 +2325,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_Puts]); -__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = __ecere_COM_Initialize(1, 0, null);\n\n") : (unsigned int)1; +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n") : (unsigned int)1; })); else (__extension__ ({ @@ -2359,19 +2336,8 @@ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; })[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); -__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n") : (unsigned int)1; -})); -(__extension__ ({ -unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const char * string); - -__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; - -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); -__internal_VirtualMethod ? __internal_VirtualMethod(f, " __currentModule = module = __thisModule;\n") : (unsigned int)1; +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = __currentModule = module = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n") : (unsigned int)1; })); -} if(_imports.count) { for(module = _imports.first; module; module = module->next) @@ -2541,7 +2507,7 @@ __internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n") : (unsigned int if(!isDynamicLibrary && thisAppClass) { __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " _class = eSystem_FindClass(__currentModule, \"%s\");\n", thisAppClass->name); -__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " if(setThingsUp) eInstance_Evolve((Instance *)&__currentModule, _class);\n"); +__ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " eInstance_Evolve((Instance *)&__currentModule, _class);\n"); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __thisModule = __currentModule;\n"); } if(isDynamicLibrary) @@ -3217,8 +3183,6 @@ ComputeModuleClasses(privateModule); if(!isDynamicLibrary) { thisAppClass = SearchAppClass_Module(privateModule); -if(!thisAppClass) -thisAppClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "Application"); } WriteMain(output); if(outputPot && ((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)intlStrings + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->count) diff --git a/compiler/bootstrap/ecs/bootstrap/ecs.main.c b/compiler/bootstrap/ecs/bootstrap/ecs.main.c index 4d07fe0..59ea2be 100644 --- a/compiler/bootstrap/ecs/bootstrap/ecs.main.c +++ b/compiler/bootstrap/ecs/bootstrap/ecs.main.c @@ -207,7 +207,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -442,7 +442,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance; @@ -453,14 +452,11 @@ int main(int _argc, char * _argv[]) { int exitCode; struct __ecereNameSpace__ecere__com__Instance * module; -unsigned int setThingsUp = !__thisModule; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Class * _class; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Method * method; __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * _property; -if(setThingsUp) -__thisModule = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); -__currentModule = module = __thisModule; +__thisModule = __currentModule = module = __ecereNameSpace__ecere__com____ecere_COM_Initialize((unsigned int)1, _argc, (void *)_argv); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ec", 2, (void *)(__ecereDll_Load_ec), (void *)(__ecereDll_Unload_ec)); __ecereNameSpace__ecere__com__eModule_LoadStatic(module, "ecere", 2, (void *)(__ecereDll_Load_ecere), (void *)(__ecereDll_Unload_ecere)); __ecereRegisterModule_ecs(module); @@ -519,7 +515,6 @@ _class = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::Ol __ecereClass___ecereNameSpace__ecere__sys__TempFile = __ecereNameSpace__ecere__com__eSystem_FindClass(module, "ecere::sys::TempFile"); __ecereNameSpace__ecere__LoadTranslatedStrings((((void *)0)), "ecs"); _class = __ecereNameSpace__ecere__com__eSystem_FindClass(__currentModule, "SymbolgenApp"); -if(setThingsUp) __ecereNameSpace__ecere__com__eInstance_Evolve((struct __ecereNameSpace__ecere__com__Instance **)&__currentModule, _class); __thisModule = __currentModule; __ecereCreateModuleInstances_ecs(); diff --git a/compiler/bootstrap/libec/bootstrap/ast.c b/compiler/bootstrap/libec/bootstrap/ast.c index 3ccf868..ed14ade 100644 --- a/compiler/bootstrap/libec/bootstrap/ast.c +++ b/compiler/bootstrap/libec/bootstrap/ast.c @@ -464,6 +464,16 @@ int depth; struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct DBIndexItem; struct Symbol; @@ -484,6 +494,32 @@ int declMode; struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern void FreeType(struct Type * type); extern void PrintTypeNoConst(struct Type * type, char * string, unsigned int printName, unsigned int fullName); @@ -583,10 +619,6 @@ struct PropertyWatch; struct Symbol * FindType(struct Context * ctx, const char * name); -struct __ecereNameSpace__ecere__com__DataMember; - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - struct __ecereNameSpace__ecere__com__Method; struct __ecereNameSpace__ecere__com__Method @@ -606,67 +638,6 @@ struct Type * dataType; int memberAccess; } ecere_gcc_struct; -extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct Symbol { char * string; @@ -731,6 +702,35 @@ struct Expression * propCategory; unsigned int mustRegister; } ecere_gcc_struct; +extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); + +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + struct __ecereNameSpace__ecere__com__Module; extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_FindDefine(struct __ecereNameSpace__ecere__com__Instance * module, const char * name); @@ -1609,7 +1609,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/copy.c b/compiler/bootstrap/libec/bootstrap/copy.c index 182d859..4443117 100644 --- a/compiler/bootstrap/libec/bootstrap/copy.c +++ b/compiler/bootstrap/libec/bootstrap/copy.c @@ -177,6 +177,16 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Identifier; extern struct Identifier * MkIdentifier(const char * string); @@ -519,47 +529,191 @@ return MkExtDeclString(__ecereNameSpace__ecere__sys__CopyString(extDecl->__anon1 return (((void *)0)); } -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Method; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__Module; -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +struct Type; -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__com__Method +{ +const char * name; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; +struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; +const char * dataTypeString; +struct Type * dataType; +int memberAccess; +} ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union { +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; union { struct { -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct External * pointerExternal; +struct External * structExternal; } ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; struct { -const char * memberString; +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct +{ +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; +} ecere_gcc_struct __anon2; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; +} ecere_gcc_struct; + +struct Type +{ +struct Type * prev; +struct Type * next; +int refCount; union { -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; +struct Symbol * _class; +struct +{ +struct __ecereNameSpace__ecere__sys__OldList members; +char * enumName; } ecere_gcc_struct __anon1; +struct +{ +struct Type * returnType; +struct __ecereNameSpace__ecere__sys__OldList params; +struct Symbol * thisClass; +unsigned int staticMethod; +struct TemplateParameter * thisClassTemplate; } ecere_gcc_struct __anon2; +struct +{ +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Class * methodClass; +struct __ecereNameSpace__ecere__com__Class * usedClass; +} ecere_gcc_struct __anon3; +struct +{ +struct Type * arrayType; +int arraySize; +struct Expression * arraySizeExp; +unsigned int freeExp; +struct Symbol * enumClass; +} ecere_gcc_struct __anon4; +struct Type * type; +struct TemplateParameter * templateParameter; } ecere_gcc_struct __anon1; +int kind; +unsigned int size; +char * name; +char * typeName; +struct __ecereNameSpace__ecere__com__Class * thisClassFrom; +int promotedFrom; +int classObjectType; +int alignment; +unsigned int offset; +int bitFieldCount; +int count; +int bitMemberSize; +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; +unsigned int casted : 1; +unsigned int pointerAlignment : 1; +unsigned int isLong : 1; +unsigned int signedBeforePromotion : 1; +unsigned int isVector : 1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - struct Instantiation; struct Instantiation @@ -610,72 +764,197 @@ int declMode; struct TypeName; -extern struct Expression * MkExpTypeSize(struct TypeName * typeName); - -extern struct Expression * MkExpTypeAlign(struct TypeName * typeName); - -extern struct Expression * MkExpOffsetOf(struct TypeName * typeName, struct Identifier * id); - -extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression); - -extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type); - -extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer); - -struct TypeName -{ -struct TypeName * prev; -struct TypeName * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * qualifiers; -struct Declarator * declarator; -int classObjectType; -struct Expression * bitCount; -} ecere_gcc_struct; - -extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator); - -struct Enumerator; - -extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp); - -struct Enumerator -{ -struct Enumerator * prev; -struct Enumerator * next; -struct Location loc; -struct Identifier * id; -struct Expression * exp; -} ecere_gcc_struct; - -struct Attribute; - -extern struct Attribute * MkAttribute(char * attr, struct Expression * exp); - -struct Attribute -{ -struct Attribute * prev; -struct Attribute * next; -struct Location loc; -char * attr; -struct Expression * exp; -} ecere_gcc_struct; - -struct ClassDef; - -struct ClassDef +struct Expression { -struct ClassDef * prev; -struct ClassDef * next; +struct Expression * prev; +struct Expression * next; struct Location loc; int type; union { -struct Declaration * decl; -struct ClassFunction * function; -struct __ecereNameSpace__ecere__sys__OldList * defProperties; -struct PropertyDef * propertyDef; -struct PropertyWatch * propertyWatch; +struct +{ +char * constant; +struct Identifier * identifier; +} ecere_gcc_struct __anon1; +struct Statement * compound; +struct Instantiation * instance; +struct +{ +char * string; +unsigned int intlString; +unsigned int wideString; +} ecere_gcc_struct __anon2; +struct __ecereNameSpace__ecere__sys__OldList * list; +struct +{ +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * decl; +} ecere_gcc_struct _classExp; +struct +{ +struct Identifier * id; +} ecere_gcc_struct classData; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * arguments; +struct Location argLoc; +} ecere_gcc_struct call; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * index; +} ecere_gcc_struct index; +struct +{ +struct Expression * exp; +struct Identifier * member; +int memberType; +unsigned int thisPtr; +} ecere_gcc_struct member; +struct +{ +int op; +struct Expression * exp1; +struct Expression * exp2; +} ecere_gcc_struct op; +struct TypeName * typeName; +struct Specifier * _class; +struct +{ +struct TypeName * typeName; +struct Expression * exp; +} ecere_gcc_struct cast; +struct +{ +struct Expression * cond; +struct __ecereNameSpace__ecere__sys__OldList * exp; +struct Expression * elseExp; +} ecere_gcc_struct cond; +struct +{ +struct TypeName * typeName; +struct Expression * size; +} ecere_gcc_struct _new; +struct +{ +struct TypeName * typeName; +struct Expression * size; +struct Expression * exp; +} ecere_gcc_struct _renew; +struct +{ +char * table; +struct Identifier * id; +} ecere_gcc_struct db; +struct +{ +struct Expression * ds; +struct Expression * name; +} ecere_gcc_struct dbopen; +struct +{ +struct TypeName * typeName; +struct Initializer * initializer; +} ecere_gcc_struct initializer; +struct +{ +struct Expression * exp; +struct TypeName * typeName; +} ecere_gcc_struct vaArg; +struct +{ +struct TypeName * typeName; +struct Identifier * id; +} ecere_gcc_struct offset; +} ecere_gcc_struct __anon1; +unsigned int debugValue; +struct __ecereNameSpace__ecere__com__DataValue val; +uint64 address; +unsigned int hasAddress; +struct Type * expType; +struct Type * destType; +unsigned int usage; +int tempCount; +unsigned int byReference; +unsigned int isConstant; +unsigned int addedThis; +unsigned int needCast; +unsigned int thisPtr; +unsigned int opDestType; +unsigned int usedInComparison; +unsigned int ambiguousUnits; +unsigned int parentOpDestType; +unsigned int needTemplateCast; +} ecere_gcc_struct; + +extern struct Expression * MkExpTypeSize(struct TypeName * typeName); + +extern struct Expression * MkExpTypeAlign(struct TypeName * typeName); + +extern struct Expression * MkExpOffsetOf(struct TypeName * typeName, struct Identifier * id); + +extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression); + +extern struct Expression * MkExpVaArg(struct Expression * exp, struct TypeName * type); + +extern struct Expression * MkExpExtensionInitializer(struct TypeName * typeName, struct Initializer * initializer); + +struct TypeName +{ +struct TypeName * prev; +struct TypeName * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * qualifiers; +struct Declarator * declarator; +int classObjectType; +struct Expression * bitCount; +} ecere_gcc_struct; + +extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator); + +struct Enumerator; + +extern struct Enumerator * MkEnumerator(struct Identifier * id, struct Expression * exp); + +struct Enumerator +{ +struct Enumerator * prev; +struct Enumerator * next; +struct Location loc; +struct Identifier * id; +struct Expression * exp; +} ecere_gcc_struct; + +struct Attribute; + +extern struct Attribute * MkAttribute(char * attr, struct Expression * exp); + +struct Attribute +{ +struct Attribute * prev; +struct Attribute * next; +struct Location loc; +char * attr; +struct Expression * exp; +} ecere_gcc_struct; + +struct ClassDef; + +struct ClassDef +{ +struct ClassDef * prev; +struct ClassDef * next; +struct Location loc; +int type; +union +{ +struct Declaration * decl; +struct ClassFunction * function; +struct __ecereNameSpace__ecere__sys__OldList * defProperties; +struct PropertyDef * propertyDef; +struct PropertyWatch * propertyWatch; char * designer; struct Identifier * defaultProperty; struct @@ -811,7 +1090,52 @@ void __ecereUnregisterModule_copy(struct __ecereNameSpace__ecere__com__Instance } -struct Type; +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class { @@ -870,331 +1194,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Method -{ -const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; -struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; -const char * dataTypeString; -struct Type * dataType; -int memberAccess; -} ecere_gcc_struct; - -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; -union -{ -struct -{ -struct External * pointerExternal; -struct External * structExternal; -} ecere_gcc_struct __anon1; -struct -{ -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct -{ -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; -} ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; -} ecere_gcc_struct; - -struct Expression -{ -struct Expression * prev; -struct Expression * next; -struct Location loc; -int type; -union -{ -struct -{ -char * constant; -struct Identifier * identifier; -} ecere_gcc_struct __anon1; -struct Statement * compound; -struct Instantiation * instance; -struct -{ -char * string; -unsigned int intlString; -unsigned int wideString; -} ecere_gcc_struct __anon2; -struct __ecereNameSpace__ecere__sys__OldList * list; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * decl; -} ecere_gcc_struct _classExp; -struct -{ -struct Identifier * id; -} ecere_gcc_struct classData; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * arguments; -struct Location argLoc; -} ecere_gcc_struct call; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * index; -} ecere_gcc_struct index; -struct -{ -struct Expression * exp; -struct Identifier * member; -int memberType; -unsigned int thisPtr; -} ecere_gcc_struct member; -struct -{ -int op; -struct Expression * exp1; -struct Expression * exp2; -} ecere_gcc_struct op; -struct TypeName * typeName; -struct Specifier * _class; -struct -{ -struct TypeName * typeName; -struct Expression * exp; -} ecere_gcc_struct cast; -struct -{ -struct Expression * cond; -struct __ecereNameSpace__ecere__sys__OldList * exp; -struct Expression * elseExp; -} ecere_gcc_struct cond; -struct -{ -struct TypeName * typeName; -struct Expression * size; -} ecere_gcc_struct _new; -struct -{ -struct TypeName * typeName; -struct Expression * size; -struct Expression * exp; -} ecere_gcc_struct _renew; -struct -{ -char * table; -struct Identifier * id; -} ecere_gcc_struct db; -struct -{ -struct Expression * ds; -struct Expression * name; -} ecere_gcc_struct dbopen; -struct -{ -struct TypeName * typeName; -struct Initializer * initializer; -} ecere_gcc_struct initializer; -struct -{ -struct Expression * exp; -struct TypeName * typeName; -} ecere_gcc_struct vaArg; -struct -{ -struct TypeName * typeName; -struct Identifier * id; -} ecere_gcc_struct offset; -} ecere_gcc_struct __anon1; -unsigned int debugValue; -struct __ecereNameSpace__ecere__com__DataValue val; -uint64 address; -unsigned int hasAddress; -struct Type * expType; -struct Type * destType; -unsigned int usage; -int tempCount; -unsigned int byReference; -unsigned int isConstant; -unsigned int addedThis; -unsigned int needCast; -unsigned int thisPtr; -unsigned int opDestType; -unsigned int usedInComparison; -unsigned int ambiguousUnits; -unsigned int parentOpDestType; -unsigned int needTemplateCast; -} ecere_gcc_struct; - -struct Type -{ -struct Type * prev; -struct Type * next; -int refCount; -union -{ -struct Symbol * _class; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList members; -char * enumName; -} ecere_gcc_struct __anon1; -struct -{ -struct Type * returnType; -struct __ecereNameSpace__ecere__sys__OldList params; -struct Symbol * thisClass; -unsigned int staticMethod; -struct TemplateParameter * thisClassTemplate; -} ecere_gcc_struct __anon2; -struct -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Class * methodClass; -struct __ecereNameSpace__ecere__com__Class * usedClass; -} ecere_gcc_struct __anon3; -struct -{ -struct Type * arrayType; -int arraySize; -struct Expression * arraySizeExp; -unsigned int freeExp; -struct Symbol * enumClass; -} ecere_gcc_struct __anon4; -struct Type * type; -struct TemplateParameter * templateParameter; -} ecere_gcc_struct __anon1; -int kind; -unsigned int size; -char * name; -char * typeName; -struct __ecereNameSpace__ecere__com__Class * thisClassFrom; -int promotedFrom; -int classObjectType; -int alignment; -unsigned int offset; -int bitFieldCount; -int count; -int bitMemberSize; -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; -unsigned int casted : 1; -unsigned int pointerAlignment : 1; -unsigned int isLong : 1; -unsigned int signedBeforePromotion : 1; -unsigned int isVector : 1; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Expression; diff --git a/compiler/bootstrap/libec/bootstrap/dbpass.c b/compiler/bootstrap/libec/bootstrap/dbpass.c index 1f8b664..c885083 100644 --- a/compiler/bootstrap/libec/bootstrap/dbpass.c +++ b/compiler/bootstrap/libec/bootstrap/dbpass.c @@ -237,6 +237,16 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Expression; extern void FreeExpContents(struct Expression * exp); @@ -594,124 +604,393 @@ struct Identifier * id; int order; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Method; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__Module; -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +struct Type; -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__com__Method +{ +const char * name; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; +struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; +const char * dataTypeString; +struct Type * dataType; +int memberAccess; +} ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union { +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; union { struct { -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct External * pointerExternal; +struct External * structExternal; } ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; struct { -const char * memberString; -union +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct { -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; } ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - -struct TypeName; - -struct DBTableEntry +struct Type { -struct DBTableEntry * prev; -struct DBTableEntry * next; -int type; -struct Identifier * id; +struct Type * prev; +struct Type * next; +int refCount; union { +struct Symbol * _class; struct { -struct TypeName * dataType; -char * name; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__sys__OldList * items; +struct __ecereNameSpace__ecere__sys__OldList members; +char * enumName; } ecere_gcc_struct __anon1; -} ecere_gcc_struct; - -struct TypeName +struct { -struct TypeName * prev; -struct TypeName * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * qualifiers; -struct Declarator * declarator; -int classObjectType; -struct Expression * bitCount; -} ecere_gcc_struct; - -struct PropertyWatch; - -struct PropertyWatch +struct Type * returnType; +struct __ecereNameSpace__ecere__sys__OldList params; +struct Symbol * thisClass; +unsigned int staticMethod; +struct TemplateParameter * thisClassTemplate; +} ecere_gcc_struct __anon2; +struct { -struct PropertyWatch * prev; -struct PropertyWatch * next; -struct Location loc; -struct Statement * compound; -struct __ecereNameSpace__ecere__sys__OldList * properties; -unsigned int deleteWatch; -} ecere_gcc_struct; - -struct MemberInit; - -struct MemberInit +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Class * methodClass; +struct __ecereNameSpace__ecere__com__Class * usedClass; +} ecere_gcc_struct __anon3; +struct { -struct MemberInit * prev; -struct MemberInit * next; -struct Location loc; -struct Location realLoc; -struct __ecereNameSpace__ecere__sys__OldList * identifiers; -struct Initializer * initializer; -unsigned int used; -unsigned int variable; -unsigned int takeOutExp; +struct Type * arrayType; +int arraySize; +struct Expression * arraySizeExp; +unsigned int freeExp; +struct Symbol * enumClass; +} ecere_gcc_struct __anon4; +struct Type * type; +struct TemplateParameter * templateParameter; +} ecere_gcc_struct __anon1; +int kind; +unsigned int size; +char * name; +char * typeName; +struct __ecereNameSpace__ecere__com__Class * thisClassFrom; +int promotedFrom; +int classObjectType; +int alignment; +unsigned int offset; +int bitFieldCount; +int count; +int bitMemberSize; +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; +unsigned int casted : 1; +unsigned int pointerAlignment : 1; +unsigned int isLong : 1; +unsigned int signedBeforePromotion : 1; +unsigned int isVector : 1; } ecere_gcc_struct; -extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer); - -extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer); - -struct InitDeclarator; - -extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer); +struct TypeName; -struct InitDeclarator +struct Expression { -struct InitDeclarator * prev; -struct InitDeclarator * next; +struct Expression * prev; +struct Expression * next; struct Location loc; -struct Declarator * declarator; -struct Initializer * initializer; -} ecere_gcc_struct; - -static void ProcessExpression(struct Expression * exp); - -static void ProcessInitializer(struct Initializer * initializer) +int type; +union +{ +struct +{ +char * constant; +struct Identifier * identifier; +} ecere_gcc_struct __anon1; +struct Statement * compound; +struct Instantiation * instance; +struct +{ +char * string; +unsigned int intlString; +unsigned int wideString; +} ecere_gcc_struct __anon2; +struct __ecereNameSpace__ecere__sys__OldList * list; +struct +{ +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * decl; +} ecere_gcc_struct _classExp; +struct +{ +struct Identifier * id; +} ecere_gcc_struct classData; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * arguments; +struct Location argLoc; +} ecere_gcc_struct call; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * index; +} ecere_gcc_struct index; +struct +{ +struct Expression * exp; +struct Identifier * member; +int memberType; +unsigned int thisPtr; +} ecere_gcc_struct member; +struct +{ +int op; +struct Expression * exp1; +struct Expression * exp2; +} ecere_gcc_struct op; +struct TypeName * typeName; +struct Specifier * _class; +struct +{ +struct TypeName * typeName; +struct Expression * exp; +} ecere_gcc_struct cast; +struct +{ +struct Expression * cond; +struct __ecereNameSpace__ecere__sys__OldList * exp; +struct Expression * elseExp; +} ecere_gcc_struct cond; +struct +{ +struct TypeName * typeName; +struct Expression * size; +} ecere_gcc_struct _new; +struct +{ +struct TypeName * typeName; +struct Expression * size; +struct Expression * exp; +} ecere_gcc_struct _renew; +struct +{ +char * table; +struct Identifier * id; +} ecere_gcc_struct db; +struct +{ +struct Expression * ds; +struct Expression * name; +} ecere_gcc_struct dbopen; +struct +{ +struct TypeName * typeName; +struct Initializer * initializer; +} ecere_gcc_struct initializer; +struct +{ +struct Expression * exp; +struct TypeName * typeName; +} ecere_gcc_struct vaArg; +struct +{ +struct TypeName * typeName; +struct Identifier * id; +} ecere_gcc_struct offset; +} ecere_gcc_struct __anon1; +unsigned int debugValue; +struct __ecereNameSpace__ecere__com__DataValue val; +uint64 address; +unsigned int hasAddress; +struct Type * expType; +struct Type * destType; +unsigned int usage; +int tempCount; +unsigned int byReference; +unsigned int isConstant; +unsigned int addedThis; +unsigned int needCast; +unsigned int thisPtr; +unsigned int opDestType; +unsigned int usedInComparison; +unsigned int ambiguousUnits; +unsigned int parentOpDestType; +unsigned int needTemplateCast; +} ecere_gcc_struct; + +struct DBTableEntry +{ +struct DBTableEntry * prev; +struct DBTableEntry * next; +int type; +struct Identifier * id; +union +{ +struct +{ +struct TypeName * dataType; +char * name; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__sys__OldList * items; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct TypeName +{ +struct TypeName * prev; +struct TypeName * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * qualifiers; +struct Declarator * declarator; +int classObjectType; +struct Expression * bitCount; +} ecere_gcc_struct; + +struct PropertyWatch; + +struct PropertyWatch +{ +struct PropertyWatch * prev; +struct PropertyWatch * next; +struct Location loc; +struct Statement * compound; +struct __ecereNameSpace__ecere__sys__OldList * properties; +unsigned int deleteWatch; +} ecere_gcc_struct; + +struct MemberInit; + +struct MemberInit +{ +struct MemberInit * prev; +struct MemberInit * next; +struct Location loc; +struct Location realLoc; +struct __ecereNameSpace__ecere__sys__OldList * identifiers; +struct Initializer * initializer; +unsigned int used; +unsigned int variable; +unsigned int takeOutExp; +} ecere_gcc_struct; + +extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer); + +extern struct MemberInit * MkMemberInitExp(struct Expression * idExp, struct Initializer * initializer); + +struct InitDeclarator; + +extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer); + +struct InitDeclarator +{ +struct InitDeclarator * prev; +struct InitDeclarator * next; +struct Location loc; +struct Declarator * declarator; +struct Initializer * initializer; +} ecere_gcc_struct; + +static void ProcessExpression(struct Expression * exp); + +static void ProcessInitializer(struct Initializer * initializer) { switch(initializer->type) { @@ -745,126 +1024,111 @@ ProcessInitializer(init->initializer); } } -struct FunctionDefinition; +static void ProcessStatement(struct Statement * stmt); -struct External +static void ProcessProperty(struct PropertyDef * def) { -struct External * prev; -struct External * next; +if(def->getStmt) +{ +ProcessStatement(def->getStmt); +} +if(def->setStmt) +{ +ProcessStatement(def->setStmt); +} +} + +struct ClassFunction; + +struct ClassDef +{ +struct ClassDef * prev; +struct ClassDef * next; struct Location loc; int type; -struct Symbol * symbol; union { -struct FunctionDefinition * function; -struct ClassDefinition * _class; -struct Declaration * declaration; -char * importString; +struct Declaration * decl; +struct ClassFunction * function; +struct __ecereNameSpace__ecere__sys__OldList * defProperties; +struct PropertyDef * propertyDef; +struct PropertyWatch * propertyWatch; +char * designer; +struct Identifier * defaultProperty; +struct +{ struct Identifier * id; -struct DBTableDef * table; +struct Initializer * initializer; } ecere_gcc_struct __anon1; -int importType; -struct External * fwdDecl; -struct __ecereNameSpace__ecere__com__Instance * outgoing; -struct __ecereNameSpace__ecere__com__Instance * incoming; -int nonBreakableIncoming; +} ecere_gcc_struct __anon1; +int memberAccess; +void * object; } ecere_gcc_struct; -struct ClassFunction; +struct MembersInit +{ +struct MembersInit * prev; +struct MembersInit * next; +struct Location loc; +int type; +union +{ +struct __ecereNameSpace__ecere__sys__OldList * dataMembers; +struct ClassFunction * function; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; -typedef union YYSTYPE +struct ClassFunction { -int specifierType; -int i; -int declMode; -struct Identifier * id; -struct Expression * exp; -struct Specifier * specifier; -struct __ecereNameSpace__ecere__sys__OldList * list; -struct Enumerator * enumerator; +struct ClassFunction * prev; +struct ClassFunction * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * specifiers; struct Declarator * declarator; -struct Pointer * pointer; -struct Initializer * initializer; -struct InitDeclarator * initDeclarator; -struct TypeName * typeName; -struct Declaration * declaration; -struct Statement * stmt; -struct FunctionDefinition * function; -struct External * external; -struct Context * context; -struct AsmField * asmField; -struct Attrib * attrib; -struct ExtDecl * extDecl; -struct Attribute * attribute; -struct Instantiation * instance; -struct MembersInit * membersInit; -struct MemberInit * memberInit; -struct ClassFunction * classFunction; -struct ClassDefinition * _class; -struct ClassDef * classDef; -struct PropertyDef * prop; -char * string; -struct Symbol * symbol; -struct PropertyWatch * propertyWatch; -struct TemplateParameter * templateParameter; -struct TemplateArgument * templateArgument; -struct TemplateDatatype * templateDatatype; -struct DBTableEntry * dbtableEntry; -struct DBIndexItem * dbindexItem; -struct DBTableDef * dbtableDef; -} ecere_gcc_struct YYSTYPE; - -extern YYSTYPE yylval; +struct __ecereNameSpace__ecere__sys__OldList * declarations; +struct Statement * body; +struct __ecereNameSpace__ecere__com__Class * _class; +struct __ecereNameSpace__ecere__sys__OldList attached; +int declMode; +struct Type * type; +struct Symbol * propSet; +unsigned int isVirtual; +unsigned int isConstructor; +unsigned int isDestructor; +unsigned int dontMangle; +int id; +int idCode; +} ecere_gcc_struct; -struct ClassDef -{ -struct ClassDef * prev; -struct ClassDef * next; -struct Location loc; -int type; -union +static void ProcessClassFunction(struct ClassFunction * func) { -struct Declaration * decl; -struct ClassFunction * function; -struct __ecereNameSpace__ecere__sys__OldList * defProperties; -struct PropertyDef * propertyDef; -struct PropertyWatch * propertyWatch; -char * designer; -struct Identifier * defaultProperty; -struct +if(func->body) { -struct Identifier * id; -struct Initializer * initializer; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon1; -int memberAccess; -void * object; -} ecere_gcc_struct; +ProcessStatement(func->body); +} +} -struct MembersInit +static void ProcessInstance(struct Instantiation * inst) { -struct MembersInit * prev; -struct MembersInit * next; -struct Location loc; -int type; -union +if(inst->members) { -struct __ecereNameSpace__ecere__sys__OldList * dataMembers; -struct ClassFunction * function; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - -static void ProcessStatement(struct Statement * stmt); +struct MembersInit * init; +struct MemberInit * memberInit; -static void ProcessProperty(struct PropertyDef * def) +for(init = (*inst->members).first; init; init = init->next) { -if(def->getStmt) +if(init->type == 0 && init->__anon1.dataMembers) { -ProcessStatement(def->getStmt); +for(memberInit = (*init->__anon1.dataMembers).first; memberInit; memberInit = memberInit->next) +{ +ProcessMemberInit(memberInit); } -if(def->setStmt) +} +if(init->type == 1) { -ProcessStatement(def->setStmt); +ProcessClassFunction(init->__anon1.function); +} +} } } @@ -918,7 +1182,147 @@ void __ecereUnregisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instanc } -struct Type; +struct FunctionDefinition; + +typedef union YYSTYPE +{ +int specifierType; +int i; +int declMode; +struct Identifier * id; +struct Expression * exp; +struct Specifier * specifier; +struct __ecereNameSpace__ecere__sys__OldList * list; +struct Enumerator * enumerator; +struct Declarator * declarator; +struct Pointer * pointer; +struct Initializer * initializer; +struct InitDeclarator * initDeclarator; +struct TypeName * typeName; +struct Declaration * declaration; +struct Statement * stmt; +struct FunctionDefinition * function; +struct External * external; +struct Context * context; +struct AsmField * asmField; +struct Attrib * attrib; +struct ExtDecl * extDecl; +struct Attribute * attribute; +struct Instantiation * instance; +struct MembersInit * membersInit; +struct MemberInit * memberInit; +struct ClassFunction * classFunction; +struct ClassDefinition * _class; +struct ClassDef * classDef; +struct PropertyDef * prop; +char * string; +struct Symbol * symbol; +struct PropertyWatch * propertyWatch; +struct TemplateParameter * templateParameter; +struct TemplateArgument * templateArgument; +struct TemplateDatatype * templateDatatype; +struct DBTableEntry * dbtableEntry; +struct DBIndexItem * dbindexItem; +struct DBTableDef * dbtableDef; +} ecere_gcc_struct YYSTYPE; + +extern YYSTYPE yylval; + +struct FunctionDefinition +{ +struct FunctionDefinition * prev; +struct FunctionDefinition * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * declarator; +struct __ecereNameSpace__ecere__sys__OldList * declarations; +struct Statement * body; +struct __ecereNameSpace__ecere__com__Class * _class; +struct __ecereNameSpace__ecere__sys__OldList attached; +int declMode; +struct Type * type; +struct Symbol * propSet; +int tempCount; +unsigned int propertyNoThis; +} ecere_gcc_struct; + +struct External +{ +struct External * prev; +struct External * next; +struct Location loc; +int type; +struct Symbol * symbol; +union +{ +struct FunctionDefinition * function; +struct ClassDefinition * _class; +struct Declaration * declaration; +char * importString; +struct Identifier * id; +struct DBTableDef * table; +} ecere_gcc_struct __anon1; +int importType; +struct External * fwdDecl; +struct __ecereNameSpace__ecere__com__Instance * outgoing; +struct __ecereNameSpace__ecere__com__Instance * incoming; +int nonBreakableIncoming; +} ecere_gcc_struct; + +static void ProcessFunction(struct FunctionDefinition * func) +{ +if(func->body) +{ +ProcessStatement(func->body); +} +} + +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class { @@ -967,767 +1371,21 @@ int destructionWatchOffset; unsigned int fixed; struct __ecereNameSpace__ecere__sys__OldList delayedCPValues; int inheritanceAccess; -const char * fullName; -void * symbol; -struct __ecereNameSpace__ecere__sys__OldList conversions; -struct __ecereNameSpace__ecere__sys__OldList templateParams; -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; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Method -{ -const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; -struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; -const char * dataTypeString; -struct Type * dataType; -int memberAccess; -} ecere_gcc_struct; - -struct Expression -{ -struct Expression * prev; -struct Expression * next; -struct Location loc; -int type; -union -{ -struct -{ -char * constant; -struct Identifier * identifier; -} ecere_gcc_struct __anon1; -struct Statement * compound; -struct Instantiation * instance; -struct -{ -char * string; -unsigned int intlString; -unsigned int wideString; -} ecere_gcc_struct __anon2; -struct __ecereNameSpace__ecere__sys__OldList * list; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * decl; -} ecere_gcc_struct _classExp; -struct -{ -struct Identifier * id; -} ecere_gcc_struct classData; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * arguments; -struct Location argLoc; -} ecere_gcc_struct call; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * index; -} ecere_gcc_struct index; -struct -{ -struct Expression * exp; -struct Identifier * member; -int memberType; -unsigned int thisPtr; -} ecere_gcc_struct member; -struct -{ -int op; -struct Expression * exp1; -struct Expression * exp2; -} ecere_gcc_struct op; -struct TypeName * typeName; -struct Specifier * _class; -struct -{ -struct TypeName * typeName; -struct Expression * exp; -} ecere_gcc_struct cast; -struct -{ -struct Expression * cond; -struct __ecereNameSpace__ecere__sys__OldList * exp; -struct Expression * elseExp; -} ecere_gcc_struct cond; -struct -{ -struct TypeName * typeName; -struct Expression * size; -} ecere_gcc_struct _new; -struct -{ -struct TypeName * typeName; -struct Expression * size; -struct Expression * exp; -} ecere_gcc_struct _renew; -struct -{ -char * table; -struct Identifier * id; -} ecere_gcc_struct db; -struct -{ -struct Expression * ds; -struct Expression * name; -} ecere_gcc_struct dbopen; -struct -{ -struct TypeName * typeName; -struct Initializer * initializer; -} ecere_gcc_struct initializer; -struct -{ -struct Expression * exp; -struct TypeName * typeName; -} ecere_gcc_struct vaArg; -struct -{ -struct TypeName * typeName; -struct Identifier * id; -} ecere_gcc_struct offset; -} ecere_gcc_struct __anon1; -unsigned int debugValue; -struct __ecereNameSpace__ecere__com__DataValue val; -uint64 address; -unsigned int hasAddress; -struct Type * expType; -struct Type * destType; -unsigned int usage; -int tempCount; -unsigned int byReference; -unsigned int isConstant; -unsigned int addedThis; -unsigned int needCast; -unsigned int thisPtr; -unsigned int opDestType; -unsigned int usedInComparison; -unsigned int ambiguousUnits; -unsigned int parentOpDestType; -unsigned int needTemplateCast; -} ecere_gcc_struct; - -struct FunctionDefinition -{ -struct FunctionDefinition * prev; -struct FunctionDefinition * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * declarator; -struct __ecereNameSpace__ecere__sys__OldList * declarations; -struct Statement * body; -struct __ecereNameSpace__ecere__com__Class * _class; -struct __ecereNameSpace__ecere__sys__OldList attached; -int declMode; -struct Type * type; -struct Symbol * propSet; -int tempCount; -unsigned int propertyNoThis; -} ecere_gcc_struct; - -struct ClassFunction -{ -struct ClassFunction * prev; -struct ClassFunction * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * declarator; -struct __ecereNameSpace__ecere__sys__OldList * declarations; -struct Statement * body; -struct __ecereNameSpace__ecere__com__Class * _class; -struct __ecereNameSpace__ecere__sys__OldList attached; -int declMode; -struct Type * type; -struct Symbol * propSet; -unsigned int isVirtual; -unsigned int isConstructor; -unsigned int isDestructor; -unsigned int dontMangle; -int id; -int idCode; -} ecere_gcc_struct; - -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; -union -{ -struct -{ -struct External * pointerExternal; -struct External * structExternal; -} ecere_gcc_struct __anon1; -struct -{ -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct -{ -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; -} ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; -} ecere_gcc_struct; - -struct Type -{ -struct Type * prev; -struct Type * next; -int refCount; -union -{ -struct Symbol * _class; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList members; -char * enumName; -} ecere_gcc_struct __anon1; -struct -{ -struct Type * returnType; -struct __ecereNameSpace__ecere__sys__OldList params; -struct Symbol * thisClass; -unsigned int staticMethod; -struct TemplateParameter * thisClassTemplate; -} ecere_gcc_struct __anon2; -struct -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Class * methodClass; -struct __ecereNameSpace__ecere__com__Class * usedClass; -} ecere_gcc_struct __anon3; -struct -{ -struct Type * arrayType; -int arraySize; -struct Expression * arraySizeExp; -unsigned int freeExp; -struct Symbol * enumClass; -} ecere_gcc_struct __anon4; -struct Type * type; -struct TemplateParameter * templateParameter; -} ecere_gcc_struct __anon1; -int kind; -unsigned int size; -char * name; -char * typeName; -struct __ecereNameSpace__ecere__com__Class * thisClassFrom; -int promotedFrom; -int classObjectType; -int alignment; -unsigned int offset; -int bitFieldCount; -int count; -int bitMemberSize; -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; -unsigned int casted : 1; -unsigned int pointerAlignment : 1; -unsigned int isLong : 1; -unsigned int signedBeforePromotion : 1; -unsigned int isVector : 1; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context; - -extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type; - -static void ProcessFunction(struct FunctionDefinition * func) -{ -if(func->body) -{ -ProcessStatement(func->body); -} -} - -static void ProcessClassFunction(struct ClassFunction * func) -{ -if(func->body) -{ -ProcessStatement(func->body); -} -} - -static void ProcessDBTable(struct DBTableDef * table) -{ -struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0)); -char tableName[1024]; -char rowClassName[1024]; -int len = strlen(table->name); -unsigned int indexed = 0; -char tableID[1024]; -char nameField[1024]; -struct __ecereNameSpace__ecere__sys__OldList * args; -struct __ecereNameSpace__ecere__sys__OldList * members; - -if(table->symbol) -idClassDefs = MkList(); -nameField[0] = 0; -memcpy(tableName, table->name + 1, len - 2); -tableName[len - 2] = 0; -__ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_'); -sprintf(tableID, "__ecereDBTable_%s", tableName); -sprintf(rowClassName, "Row%s", tableName); -__ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_'); -if(!tableStatements) -{ -tableStatements = MkList(); -indexStatements = MkList(); -addFieldStatements = MkList(); -} -{ -struct External * external; - -external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0)))))); -external->__anon1.declaration->declMode = table->declMode; -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name)); -members = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows"))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create"))))); -} -{ -struct ClassDefinition * _class; -struct ClassDef * def; -struct External * external; -struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList(); - -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row")); -PushContext(); -_class = MkClass(DeclClass((((void *)0)), rowClassName), inheritanceSpecs, rowClassDefs); -PopContext(curContext); -def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID)))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); -_class->declMode = table->declMode; -external = MkExternalClass(_class); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); -addAfter = external; -} -if(table->definitions) -{ -struct DBTableEntry * entry; - -for(entry = (*table->definitions).first; entry; entry = entry->next) -{ -switch(entry->type) -{ -case 0: -{ -unsigned int isIndex = 0; -char fieldID[1024]; -struct __ecereNameSpace__ecere__sys__OldList * args; -struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0)); - -sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string); -if(idClassDefs) -{ -if(!nameField[0] && spec->type == 1 && (!strcmp(spec->__anon1.__anon1.name, "String") || !strcmp(spec->__anon1.__anon1.name, "eda::CIString"))) -{ -strcpy(nameField, entry->id->string); -} -if(!indexed && spec->type == 1 && !strcmp(spec->__anon1.__anon1.name, table->symbol->string)) -{ -struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()); -char name[1024]; -struct ClassDef * def; - -numIndexes = ((numIndexes > 1) ? numIndexes : 1); -isIndex = 1; -indexed = 1; -sprintf(name, "_%s", entry->id->string); -curContext = rowSet->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); - -__ecereInstance1->parent = globalContext, __ecereInstance1; -}); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle"))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil"))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); -curContext = globalContext; -def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), MkIdentifier(name), rowSet, (((void *)0)))); -def->__anon1.propertyDef->__anon1.isDBProp = 1; -def->memberAccess = 1; -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); -} -} -if(rowClassDefs) -{ -struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList()); -struct ClassDef * def; - -curContext = rowGet->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); - -__ecereInstance1->parent = globalContext, __ecereInstance1; -}); -if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) -{ -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0))))); -} -else -{ -struct Expression * exp; - -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0")))))); -exp->destType = __extension__ ({ -struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); - -__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1; -}); -} -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d"))); -if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) -{ -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d")))))); -} -else -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d"))))); -curContext = rowSet->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); - -__ecereInstance1->parent = globalContext, __ecereInstance1; -}); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); -curContext = globalContext; -def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), entry->__anon1.__anon1.dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet)); -def->__anon1.propertyDef->__anon1.isDBProp = 1; -def->memberAccess = 1; -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); -} -{ -struct External * external; - -external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0)))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external); -external->__anon1.declaration->declMode = table->declMode; -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name)); -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier(fieldID)))), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("AddField")), args)))), (((void *)0)))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0")); -} -if(isIndex) -{ -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID)))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending")))))); -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args)))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1")); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes"))); -} -break; -} -} -} -} -if(table->symbol) -{ -struct ClassDefinition * _class; -struct External * external; -struct ClassDef * def; -struct Expression * exp; - -PushContext(); -_class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs); -PopContext(curContext); -_class->declMode = table->declMode; -external = MkExternalClass(_class); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); -addAfter = external; -def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name))))); -ProcessExpression(exp); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); -if(nameField[0]) -{ -def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField))))); -ProcessExpression(exp); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); -} -} -if(table->definitions) -{ -struct DBTableEntry * entry; - -for(entry = (*table->definitions).first; entry; entry = entry->next) -{ -switch(entry->type) -{ -case 0: -{ -char fieldID[1024]; -struct __ecereNameSpace__ecere__sys__OldList * args; -struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0)); - -sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string); -if(idClassDefs && spec) -{ -struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList()); -struct ClassDef * def; - -curContext = idGet->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); - -__ecereInstance1->parent = globalContext, __ecereInstance1; -}); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this")))))))))); -if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) -{ -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0))))); -} -else -{ -struct Expression * exp; - -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0")))))); -exp->destType = __extension__ ({ -struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); - -__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1; -}); -} -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d"))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r")))))); -if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) -{ -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d")))))); -} -else -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d"))))); -curContext = idSet->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); - -__ecereInstance1->parent = globalContext, __ecereInstance1; -}); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this")))))))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r")))))); -curContext = globalContext; -def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), CopyIdentifier(entry->id), idSet, idGet)); -def->__anon1.propertyDef->__anon1.isDBProp = 1; -def->memberAccess = 1; -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); -} -break; -} -case 1: -{ -if(entry->__anon1.items && (*entry->__anon1.items).count) -{ -char indexID[1024]; -struct DBIndexItem * item; -int c; -unsigned int needTable = 0; -char num[16]; - -if(entry->id || indexed) -{ -if(entry->id || (*entry->__anon1.items).count == 1) -{ -struct External * external; -struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->__anon1.items).first)->id; - -sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string); -external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0)))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external); -external->__anon1.declaration->declMode = table->declMode; -needTable = 1; -} -else -Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Multiple field index requires a name\n", (((void *)0)))); -} -else -{ -indexed = 1; -strcpy(indexID, tableID); -} -for(c = 0, item = (*entry->__anon1.items).first; item; item = item->next, c++) -{ -char fieldID[1024]; - -sprintf(num, "%d", c); -sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID)))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier((item->order == 0) ? "ascending" : "descending")))))); -} -sprintf(num, "%d", c); -numIndexes = ((numIndexes > c) ? numIndexes : c); -if(needTable) -{ -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name)); -members = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows"))))); -} -args = MkList(); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args)))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes"))); -} -break; -} -} -} -} -} - -static void ProcessInstance(struct Instantiation * inst) -{ -if(inst->members) -{ -struct MembersInit * init; -struct MemberInit * memberInit; - -for(init = (*inst->members).first; init; init = init->next) -{ -if(init->type == 0 && init->__anon1.dataMembers) -{ -for(memberInit = (*init->__anon1.dataMembers).first; memberInit; memberInit = memberInit->next) -{ -ProcessMemberInit(memberInit); -} -} -if(init->type == 1) -{ -ProcessClassFunction(init->__anon1.function); -} -} -} -} +const char * fullName; +void * symbol; +struct __ecereNameSpace__ecere__sys__OldList conversions; +struct __ecereNameSpace__ecere__sys__OldList templateParams; +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; +} ecere_gcc_struct; + +extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context; + +extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type; static void ProcessExpression(struct Expression * exp) { @@ -1907,67 +1565,384 @@ __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__a ifDBStmt->__anon1.compound.context = __extension__ ({ struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); -__ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1; -}); -sprintf(numIndexesString, "%d", numIndexes); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null"))))))))))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList())))); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements)); -compound->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); +__ecereInstance1->parent = databaseOpenStmt->__anon1.compound.context, __ecereInstance1; +}); +sprintf(numIndexesString, "%d", numIndexes); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.declarations), MkDeclaration(MkListOne(MkSpecifierName("FieldIndex")), MkListOne(MkInitDeclarator(MkDeclaratorArray(MkDeclaratorIdentifier(MkIdentifier("indexes")), MkExpConstant(numIndexesString)), MkInitializerList(MkListOne(MkInitializerList(MkListOne(MkInitializerAssignment(MkExpIdentifier(MkIdentifier("null"))))))))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Begin")), MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), tableStatements)); +compound->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; +}); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; +}), compound)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements)); +compound->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; +}); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList())))); +exp->type = 23; +exp->__anon1.compound = databaseOpenStmt; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))))); +tableStatements = (((void *)0)); +} +else +{ +FreeExpContents(exp); +Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No database table defined in this module or database_open already used.\n", (((void *)0)))); +exp->type = 16; +} +break; +} +} +} + +static void ProcessDBTable(struct DBTableDef * table) +{ +struct __ecereNameSpace__ecere__sys__OldList * rowClassDefs = MkList(), * idClassDefs = (((void *)0)); +char tableName[1024]; +char rowClassName[1024]; +int len = strlen(table->name); +unsigned int indexed = 0; +char tableID[1024]; +char nameField[1024]; +struct __ecereNameSpace__ecere__sys__OldList * args; +struct __ecereNameSpace__ecere__sys__OldList * members; + +if(table->symbol) +idClassDefs = MkList(); +nameField[0] = 0; +memcpy(tableName, table->name + 1, len - 2); +tableName[len - 2] = 0; +__ecereNameSpace__ecere__sys__ChangeCh(tableName, ' ', '_'); +sprintf(tableID, "__ecereDBTable_%s", tableName); +sprintf(rowClassName, "Row%s", tableName); +__ecereNameSpace__ecere__sys__ChangeCh(rowClassName, ' ', '_'); +if(!tableStatements) +{ +tableStatements = MkList(); +indexStatements = MkList(); +addFieldStatements = MkList(); +} +{ +struct External * external; + +external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(tableID)), (((void *)0)))))); +external->__anon1.declaration->declMode = table->declMode; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*tableStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(tableID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name)); +members = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows"))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("create"))))); +} +{ +struct ClassDefinition * _class; +struct ClassDef * def; +struct External * external; +struct __ecereNameSpace__ecere__sys__OldList * inheritanceSpecs = MkList(); + +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifier(PRIVATE)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*inheritanceSpecs), MkSpecifierName("Row")); +PushContext(); +_class = MkClass(DeclClass((((void *)0)), rowClassName), inheritanceSpecs, rowClassDefs); +PopContext(curContext); +def = MkClassDefDefaultProperty(MkListOne(MkMemberInitExp(MkExpIdentifier(MkIdentifier("tbl")), MkInitializerAssignment(MkExpIdentifier(MkIdentifier(tableID)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); +_class->declMode = table->declMode; +external = MkExternalClass(_class); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); +addAfter = external; +} +if(table->definitions) +{ +struct DBTableEntry * entry; + +for(entry = (*table->definitions).first; entry; entry = entry->next) +{ +switch(entry->type) +{ +case 0: +{ +unsigned int isIndex = 0; +char fieldID[1024]; +struct __ecereNameSpace__ecere__sys__OldList * args; +struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0)); + +sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string); +if(idClassDefs) +{ +if(!nameField[0] && spec->type == 1 && (!strcmp(spec->__anon1.__anon1.name, "String") || !strcmp(spec->__anon1.__anon1.name, "eda::CIString"))) +{ +strcpy(nameField, entry->id->string); +} +if(!indexed && spec->type == 1 && !strcmp(spec->__anon1.__anon1.name, table->symbol->string)) +{ +struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()); +char name[1024]; +struct ClassDef * def; + +numIndexes = ((numIndexes > 1) ? numIndexes : 1); +isIndex = 1; +indexed = 1; +sprintf(name, "_%s", entry->id->string); +curContext = rowSet->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = globalContext, __ecereInstance1; +}); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("Find")), args = MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("middle"))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("nil"))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); +curContext = globalContext; +def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), MkIdentifier(name), rowSet, (((void *)0)))); +def->__anon1.propertyDef->__anon1.isDBProp = 1; +def->memberAccess = 1; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); +} +} +if(rowClassDefs) +{ +struct Statement * rowSet = MkCompoundStmt(MkList(), MkList()), * rowGet = MkCompoundStmt(MkList(), MkList()); +struct ClassDef * def; + +curContext = rowGet->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = globalContext, __ecereInstance1; +}); +if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) +{ +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0))))); +} +else +{ +struct Expression * exp; + +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0")))))); +exp->destType = __extension__ ({ +struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); + +__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1; +}); +} +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("GetData")), args = MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d"))); +if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) +{ +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d")))))); +} +else +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d"))))); +curContext = rowSet->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = globalContext, __ecereInstance1; +}); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("SetData")), args = MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); +curContext = globalContext; +def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), entry->__anon1.__anon1.dataType->declarator, CopyIdentifier(entry->id), rowSet, rowGet)); +def->__anon1.propertyDef->__anon1.isDBProp = 1; +def->memberAccess = 1; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*rowClassDefs), def); +} +{ +struct External * external; + +external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Field")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(fieldID)), (((void *)0)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external); +external->__anon1.declaration->declMode = table->declMode; +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("FindField")), args))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name)); +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*addFieldStatements), MkIfStmt(MkListOne(MkExpOp((((void *)0)), '!', MkExpIdentifier(MkIdentifier(fieldID)))), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(fieldID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("AddField")), args)))), (((void *)0)))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(entry->__anon1.__anon1.name)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpClass(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("0")); +} +if(isIndex) +{ +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant("0"))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier("ascending")))))); +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(tableID)), MkIdentifier("Index")), args)))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant("1")); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes"))); +} +break; +} +} +} +} +if(table->symbol) +{ +struct ClassDefinition * _class; +struct External * external; +struct ClassDef * def; +struct Expression * exp; + +PushContext(); +_class = MkClass(table->symbol, MkListOne(MkSpecifierName("Id")), idClassDefs); +PopContext(curContext); +_class->declMode = table->declMode; +external = MkExternalClass(_class); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*ast), addAfter, external); +addAfter = external; +def = MkClassDefClassPropertyValue(MkIdentifier("table"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBTable(__ecereNameSpace__ecere__sys__CopyString(table->name))))); +ProcessExpression(exp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); +if(nameField[0]) +{ +def = MkClassDefClassPropertyValue(MkIdentifier("nameField"), MkInitializerAssignment(exp = MkExpOp((((void *)0)), '&', MkExpDBField(__ecereNameSpace__ecere__sys__CopyString(table->name), MkIdentifier(nameField))))); +ProcessExpression(exp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); +} +} +if(table->definitions) +{ +struct DBTableEntry * entry; + +for(entry = (*table->definitions).first; entry; entry = entry->next) +{ +switch(entry->type) +{ +case 0: +{ +char fieldID[1024]; +struct __ecereNameSpace__ecere__sys__OldList * args; +struct Specifier * spec = entry->__anon1.__anon1.dataType->qualifiers ? (struct Specifier *)(*entry->__anon1.__anon1.dataType->qualifiers).first : (((void *)0)); -__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; -}); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), (compound = MkCompoundStmt((((void *)0)), addFieldStatements), compound->__anon1.compound.context = __extension__ ({ -struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); +sprintf(fieldID, "__ecereDBField_%s_%s", tableName, entry->id->string); +if(idClassDefs && spec) +{ +struct Statement * idSet = MkCompoundStmt(MkList(), MkList()), * idGet = MkCompoundStmt(MkList(), MkList()); +struct ClassDef * def; -__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; -}), compound)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), compound = MkCompoundStmt((((void *)0)), indexStatements)); -compound->__anon1.compound.context = __extension__ ({ +curContext = idGet->__anon1.compound.context = __extension__ ({ struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); -__ecereInstance1->parent = ifDBStmt->__anon1.compound.context, __ecereInstance1; +__ecereInstance1->parent = globalContext, __ecereInstance1; }); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ifDBStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("Commit")), MkList())))); -exp->type = 23; -exp->__anon1.compound = databaseOpenStmt; -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*databaseOpenStmt->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpIdentifier(MkIdentifier("db"))))); -tableStatements = (((void *)0)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this")))))))))); +if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) +{ +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(spec->__anon1.__anon1.name), MkExpIdentifier(MkIdentifier("d")), (((void *)0))))); } else { -FreeExpContents(exp); -Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "No database table defined in this module or database_open already used.\n", (((void *)0)))); -exp->type = 16; +struct Expression * exp; + +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.declarations), MkDeclaration(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("d")), MkInitializerAssignment(exp = MkExpConstant("0")))))); +exp->destType = __extension__ ({ +struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); + +__ecereInstance1->kind = 3, __ecereInstance1->refCount = 1, __ecereInstance1; +}); } -break; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("GetData")), args = MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("d"))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r")))))); +if(spec->type == 1 && spec->__anon1.__anon1.symbol && spec->__anon1.__anon1.symbol->__anon1.registered && spec->__anon1.__anon1.symbol->__anon1.registered->type == 1) +{ +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("value")), '=', MkExpIdentifier(MkIdentifier("d")))))); } +else +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idGet->__anon1.compound.statements), MkReturnStmt(MkListOne(MkExpIdentifier(MkIdentifier("d"))))); +curContext = idSet->__anon1.compound.context = __extension__ ({ +struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context); + +__ecereInstance1->parent = globalContext, __ecereInstance1; +}); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.declarations), MkDeclarationInst(MkInstantiation(MkSpecifierName(rowClassName), MkExpIdentifier(MkIdentifier("r")), MkListOne(MkMembersInitList(MkListOne(MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("this")))))))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("r")), MkIdentifier("SetData")), args = MkList())))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier(fieldID))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("value"))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idSet->__anon1.compound.statements), MkExpressionStmt(MkListOne(MkExpOp((((void *)0)), DELETE, MkExpIdentifier(MkIdentifier("r")))))); +curContext = globalContext; +def = MkClassDefProperty(MkProperty(CopyList(entry->__anon1.__anon1.dataType->qualifiers, (void *)(CopySpecifier)), CopyDeclarator(entry->__anon1.__anon1.dataType->declarator), CopyIdentifier(entry->id), idSet, idGet)); +def->__anon1.propertyDef->__anon1.isDBProp = 1; +def->memberAccess = 1; +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*idClassDefs), def); } +break; } - -static void ProcessClassDef(struct ClassDef * def); - -static void ProcessClass(struct ClassDefinition * _class) +case 1: { -if(_class->definitions) +if(entry->__anon1.items && (*entry->__anon1.items).count) { -struct ClassDef * def; +char indexID[1024]; +struct DBIndexItem * item; +int c; +unsigned int needTable = 0; +char num[16]; -for(def = (*_class->definitions).first; def; def = def->next) +if(entry->id || indexed) { -ProcessClassDef(def); +if(entry->id || (*entry->__anon1.items).count == 1) +{ +struct External * external; +struct Identifier * id = entry->id ? entry->id : ((struct DBIndexItem *)(*entry->__anon1.items).first)->id; + +sprintf(indexID, "__ecereDBIndex_%s_%s", tableName, id->string); +external = MkExternalDeclaration(MkDeclaration(MkListOne(MkSpecifierName("Table")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(indexID)), (((void *)0)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ast), external); +external->__anon1.declaration->declMode = table->declMode; +needTable = 1; } +else +Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Multiple field index requires a name\n", (((void *)0)))); } +else +{ +indexed = 1; +strcpy(indexID, tableID); } - -void ProcessDBTableDefinitions(); - -void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module) +for(c = 0, item = (*entry->__anon1.items).first; item; item = item->next, c++) { -struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; +char fieldID[1024]; -__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1); +sprintf(num, "%d", c); +sprintf(fieldID, "__ecereDBField_%s_%s", tableName, item->id->string); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("field")), '=', MkExpIdentifier(MkIdentifier(fieldID)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIndex(MkExpIdentifier(MkIdentifier("indexes")), MkListOne(MkExpConstant(num))), MkIdentifier("order")), '=', MkExpIdentifier(MkIdentifier((item->order == 0) ? "ascending" : "descending")))))); +} +sprintf(num, "%d", c); +numIndexes = ((numIndexes > c) ? numIndexes : c); +if(needTable) +{ +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(indexID)), '=', MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier("db")), MkIdentifier("OpenTable")), args))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpString(table->name)); +members = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpInstance(MkInstantiation((((void *)0)), (((void *)0)), MkListOne(MkMembersInitList(members))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit((((void *)0)), MkInitializerAssignment(MkExpIdentifier(MkIdentifier("tableRows"))))); +} +args = MkList(); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*indexStatements), MkExpressionStmt(MkListOne(MkExpCall(MkExpMember(MkExpIdentifier(MkIdentifier(indexID)), MkIdentifier("Index")), args)))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpConstant(num)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*args), MkExpIdentifier(MkIdentifier("indexes"))); +} +break; +} +} +} +} } static void ProcessDeclaration(struct Declaration * decl); @@ -2287,6 +2262,64 @@ break; } } +static void ProcessDeclaration(struct Declaration * decl) +{ +switch(decl->type) +{ +case 0: +{ +struct Specifier * spec; + +if(decl->__anon1.__anon1.specifiers) +{ +for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next) +{ +ProcessSpecifier(spec); +} +} +break; +} +case 1: +{ +if(decl->__anon1.__anon1.specifiers) +{ +struct Specifier * s; + +for(s = (*decl->__anon1.__anon1.specifiers).first; s; s = s->next) +{ +ProcessSpecifier(s); +} +} +if(decl->__anon1.__anon1.declarators && (*decl->__anon1.__anon1.declarators).first) +{ +struct InitDeclarator * d; + +for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next) +{ +ProcessInitDeclarator(d); +} +} +break; +} +case 2: +ProcessInstance(decl->__anon1.inst); +break; +} +} + +static void ProcessClass(struct ClassDefinition * _class) +{ +if(_class->definitions) +{ +struct ClassDef * def; + +for(def = (*_class->definitions).first; def; def = def->next) +{ +ProcessClassDef(def); +} +} +} + void ProcessDBTableDefinitions() { struct External * external; @@ -2334,48 +2367,10 @@ break; curContext = globalContext; } -static void ProcessDeclaration(struct Declaration * decl) -{ -switch(decl->type) -{ -case 0: -{ -struct Specifier * spec; - -if(decl->__anon1.__anon1.specifiers) -{ -for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next) -{ -ProcessSpecifier(spec); -} -} -break; -} -case 1: -{ -if(decl->__anon1.__anon1.specifiers) -{ -struct Specifier * s; - -for(s = (*decl->__anon1.__anon1.specifiers).first; s; s = s->next) -{ -ProcessSpecifier(s); -} -} -if(decl->__anon1.__anon1.declarators && (*decl->__anon1.__anon1.declarators).first) +void __ecereRegisterModule_dbpass(struct __ecereNameSpace__ecere__com__Instance * module) { -struct InitDeclarator * d; +struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; -for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next) -{ -ProcessInitDeclarator(d); -} -} -break; -} -case 2: -ProcessInstance(decl->__anon1.inst); -break; -} +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessDBTableDefinitions", "void ProcessDBTableDefinitions(void)", ProcessDBTableDefinitions, module, 1); } diff --git a/compiler/bootstrap/libec/bootstrap/ec.main.c b/compiler/bootstrap/libec/bootstrap/ec.main.c index 9a88eb7..bdfd4e7 100644 --- a/compiler/bootstrap/libec/bootstrap/ec.main.c +++ b/compiler/bootstrap/libec/bootstrap/ec.main.c @@ -343,7 +343,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -878,6 +878,5 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; diff --git a/compiler/bootstrap/libec/bootstrap/ecdefs.c b/compiler/bootstrap/libec/bootstrap/ecdefs.c index 29778e7..7a2da92 100644 --- a/compiler/bootstrap/libec/bootstrap/ecdefs.c +++ b/compiler/bootstrap/libec/bootstrap/ecdefs.c @@ -646,6 +646,8 @@ unsigned int isVirtual; struct __ecereNameSpace__ecere__com__Property; +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp_Type_specConst, * __ecerePropM_Type_specConst; static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp_Type_isPointerTypeSize, * __ecerePropM_Type_isPointerTypeSize; @@ -683,8 +685,6 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); struct __ecereNameSpace__ecere__com__Instance * fileInput; @@ -1558,7 +1558,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/expression.c b/compiler/bootstrap/libec/bootstrap/expression.c index 562ed82..1087bdf 100644 --- a/compiler/bootstrap/libec/bootstrap/expression.c +++ b/compiler/bootstrap/libec/bootstrap/expression.c @@ -425,6 +425,42 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa extern struct __ecereNameSpace__ecere__com__Instance * fileInput; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Identifier; extern void FreeIdentifier(struct Identifier * id); @@ -1158,91 +1194,8 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -4324,6 +4277,53 @@ char * parsedCommand; struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Module; struct __ecereNameSpace__ecere__com__Module @@ -4401,7 +4401,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; void __ecereRegisterModule_expression(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/libec/bootstrap/firstPass.c b/compiler/bootstrap/libec/bootstrap/firstPass.c index d469b51..3b62676 100644 --- a/compiler/bootstrap/libec/bootstrap/firstPass.c +++ b/compiler/bootstrap/libec/bootstrap/firstPass.c @@ -237,6 +237,20 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); + +extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property); + struct Declarator; extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); @@ -251,26 +265,6 @@ struct Declarator * decl; struct Type; -extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); - -extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName); - -extern void FreeType(struct Type * type); - -struct __ecereNameSpace__ecere__com__DataMember; - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode); - -extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember); - -extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember); - -struct __ecereNameSpace__ecere__com__Property; - struct __ecereNameSpace__ecere__com__Property { struct __ecereNameSpace__ecere__com__Property * prev; @@ -297,17 +291,23 @@ unsigned int selfWatchable; unsigned int isWatchable; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void FreeType(struct Type * type); -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__DataMember; -extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); -extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode); + +extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember); + +extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember); struct Specifier; @@ -899,7 +899,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/freeAst.c b/compiler/bootstrap/libec/bootstrap/freeAst.c index 1db4884..b3eceee 100644 --- a/compiler/bootstrap/libec/bootstrap/freeAst.c +++ b/compiler/bootstrap/libec/bootstrap/freeAst.c @@ -260,6 +260,16 @@ int depth; struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct __ecereNameSpace__ecere__sys__NamedLink64; struct __ecereNameSpace__ecere__sys__NamedLink64 @@ -444,43 +454,8 @@ unsigned int variable; unsigned int takeOutExp; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__Property; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__ClassProperty; struct __ecereNameSpace__ecere__com__GlobalFunction; @@ -507,6 +482,129 @@ void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecer struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this); +struct Type; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__Method +{ +const char * name; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; +struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; +const char * dataTypeString; +struct Type * dataType; +int memberAccess; +} ecere_gcc_struct; + +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union +{ +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; +union +{ +struct +{ +struct External * pointerExternal; +struct External * structExternal; +} ecere_gcc_struct __anon1; +struct +{ +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct +{ +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; +} ecere_gcc_struct __anon2; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__ClassProperty +{ +const char * name; +struct __ecereNameSpace__ecere__com__ClassProperty * parent; +struct __ecereNameSpace__ecere__com__ClassProperty * left; +struct __ecereNameSpace__ecere__com__ClassProperty * right; +int depth; +void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long); +long long (* Get)(struct __ecereNameSpace__ecere__com__Class *); +const char * dataTypeString; +struct Type * dataType; +unsigned int constant; +} ecere_gcc_struct; + void FreeSymbol(struct Symbol * symbol); void FreeExcludedSymbols(struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols) @@ -676,7 +774,27 @@ struct ClassFunction * function; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct FunctionDefinition; +struct ClassFunction +{ +struct ClassFunction * prev; +struct ClassFunction * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * declarator; +struct __ecereNameSpace__ecere__sys__OldList * declarations; +struct Statement * body; +struct __ecereNameSpace__ecere__com__Class * _class; +struct __ecereNameSpace__ecere__sys__OldList attached; +int declMode; +struct Type * type; +struct Symbol * propSet; +unsigned int isVirtual; +unsigned int isConstructor; +unsigned int isDestructor; +unsigned int dontMangle; +int id; +int idCode; +} ecere_gcc_struct; struct InitDeclarator; @@ -689,32 +807,29 @@ struct Declarator * declarator; struct Initializer * initializer; } ecere_gcc_struct; -struct Type; +struct __ecereNameSpace__ecere__com__DataMember; -struct __ecereNameSpace__ecere__com__Property +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; const char * dataTypeString; struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__DataMember @@ -739,175 +854,23 @@ short structAlignment; short pointerAlignment; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method +struct __ecereNameSpace__ecere__com__NameSpace; + +struct __ecereNameSpace__ecere__com__NameSpace { const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; +struct __ecereNameSpace__ecere__com__NameSpace * btParent; +struct __ecereNameSpace__ecere__com__NameSpace * left; +struct __ecereNameSpace__ecere__com__NameSpace * right; int depth; -int (* function)(); -int vid; -int type; -struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; -const char * dataTypeString; -struct Type * dataType; -int memberAccess; +struct __ecereNameSpace__ecere__com__NameSpace * parent; +struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; +struct __ecereNameSpace__ecere__sys__BinaryTree classes; +struct __ecereNameSpace__ecere__sys__BinaryTree defines; +struct __ecereNameSpace__ecere__sys__BinaryTree functions; } ecere_gcc_struct; -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; -union -{ -struct -{ -struct External * pointerExternal; -struct External * structExternal; -} ecere_gcc_struct __anon1; -struct -{ -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct -{ -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; -} ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; -} ecere_gcc_struct; - -struct FunctionDefinition -{ -struct FunctionDefinition * prev; -struct FunctionDefinition * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * declarator; -struct __ecereNameSpace__ecere__sys__OldList * declarations; -struct Statement * body; -struct __ecereNameSpace__ecere__com__Class * _class; -struct __ecereNameSpace__ecere__sys__OldList attached; -int declMode; -struct Type * type; -struct Symbol * propSet; -int tempCount; -unsigned int propertyNoThis; -} ecere_gcc_struct; - -struct ClassFunction -{ -struct ClassFunction * prev; -struct ClassFunction * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * declarator; -struct __ecereNameSpace__ecere__sys__OldList * declarations; -struct Statement * body; -struct __ecereNameSpace__ecere__com__Class * _class; -struct __ecereNameSpace__ecere__sys__OldList attached; -int declMode; -struct Type * type; -struct Symbol * propSet; -unsigned int isVirtual; -unsigned int isConstructor; -unsigned int isDestructor; -unsigned int dontMangle; -int id; -int idCode; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__ClassProperty -{ -const char * name; -struct __ecereNameSpace__ecere__com__ClassProperty * parent; -struct __ecereNameSpace__ecere__com__ClassProperty * left; -struct __ecereNameSpace__ecere__com__ClassProperty * right; -int depth; -void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long); -long long (* Get)(struct __ecereNameSpace__ecere__com__Class *); -const char * dataTypeString; -struct Type * dataType; -unsigned int constant; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__ClassTemplateParameter; - -struct __ecereNameSpace__ecere__com__ClassTemplateParameter -{ -struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev; -struct __ecereNameSpace__ecere__com__ClassTemplateParameter * next; -const char * name; -int type; -union -{ -const char * dataTypeString; -int memberType; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg; -void * param; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__NameSpace; - -struct __ecereNameSpace__ecere__com__NameSpace -{ -const char * name; -struct __ecereNameSpace__ecere__com__NameSpace * btParent; -struct __ecereNameSpace__ecere__com__NameSpace * left; -struct __ecereNameSpace__ecere__com__NameSpace * right; -int depth; -struct __ecereNameSpace__ecere__com__NameSpace * parent; -struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; -struct __ecereNameSpace__ecere__sys__BinaryTree classes; -struct __ecereNameSpace__ecere__sys__BinaryTree defines; -struct __ecereNameSpace__ecere__sys__BinaryTree functions; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Class +struct __ecereNameSpace__ecere__com__Class { struct __ecereNameSpace__ecere__com__Class * prev; struct __ecereNameSpace__ecere__com__Class * next; @@ -964,7 +927,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__GlobalFunction @@ -1197,182 +1159,21 @@ while((symbol = (struct Symbol *)context->symbols.root)) { __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); FreeSymbol(symbol); -} -while((symbol = (struct Symbol *)context->structSymbols.root)) -{ -__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->structSymbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); -FreeSymbol(symbol); -} -while((symbol = (struct Symbol *)context->templateTypes.root)) -{ -__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); -FreeTemplateType((struct TemplatedType *)symbol); -} -context->nextID = 0; -context->simpleID = 0; -context->parent = (((void *)0)); -} - -struct Instantiation; - -struct Expression -{ -struct Expression * prev; -struct Expression * next; -struct Location loc; -int type; -union -{ -struct -{ -char * constant; -struct Identifier * identifier; -} ecere_gcc_struct __anon1; -struct Statement * compound; -struct Instantiation * instance; -struct -{ -char * string; -unsigned int intlString; -unsigned int wideString; -} ecere_gcc_struct __anon2; -struct __ecereNameSpace__ecere__sys__OldList * list; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * decl; -} ecere_gcc_struct _classExp; -struct -{ -struct Identifier * id; -} ecere_gcc_struct classData; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * arguments; -struct Location argLoc; -} ecere_gcc_struct call; -struct -{ -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * index; -} ecere_gcc_struct index; -struct -{ -struct Expression * exp; -struct Identifier * member; -int memberType; -unsigned int thisPtr; -} ecere_gcc_struct member; -struct -{ -int op; -struct Expression * exp1; -struct Expression * exp2; -} ecere_gcc_struct op; -struct TypeName * typeName; -struct Specifier * _class; -struct -{ -struct TypeName * typeName; -struct Expression * exp; -} ecere_gcc_struct cast; -struct -{ -struct Expression * cond; -struct __ecereNameSpace__ecere__sys__OldList * exp; -struct Expression * elseExp; -} ecere_gcc_struct cond; -struct -{ -struct TypeName * typeName; -struct Expression * size; -} ecere_gcc_struct _new; -struct -{ -struct TypeName * typeName; -struct Expression * size; -struct Expression * exp; -} ecere_gcc_struct _renew; -struct -{ -char * table; -struct Identifier * id; -} ecere_gcc_struct db; -struct -{ -struct Expression * ds; -struct Expression * name; -} ecere_gcc_struct dbopen; -struct -{ -struct TypeName * typeName; -struct Initializer * initializer; -} ecere_gcc_struct initializer; -struct -{ -struct Expression * exp; -struct TypeName * typeName; -} ecere_gcc_struct vaArg; -struct -{ -struct TypeName * typeName; -struct Identifier * id; -} ecere_gcc_struct offset; -} ecere_gcc_struct __anon1; -unsigned int debugValue; -struct __ecereNameSpace__ecere__com__DataValue val; -uint64 address; -unsigned int hasAddress; -struct Type * expType; -struct Type * destType; -unsigned int usage; -int tempCount; -unsigned int byReference; -unsigned int isConstant; -unsigned int addedThis; -unsigned int needCast; -unsigned int thisPtr; -unsigned int opDestType; -unsigned int usedInComparison; -unsigned int ambiguousUnits; -unsigned int parentOpDestType; -unsigned int needTemplateCast; -} ecere_gcc_struct; - -struct Instantiation -{ -struct Instantiation * prev; -struct Instantiation * next; -struct Location loc; -struct Specifier * _class; -struct Expression * exp; -struct __ecereNameSpace__ecere__sys__OldList * members; -struct Symbol * symbol; -unsigned int fullSet; -unsigned int isConstant; -unsigned char * data; -struct Location nameLoc; -struct Location insideLoc; -unsigned int built; -} ecere_gcc_struct; - -struct TemplateArgument; - -struct TemplateArgument +} +while((symbol = (struct Symbol *)context->structSymbols.root)) { -struct TemplateArgument * prev; -struct TemplateArgument * next; -struct Location loc; -struct Identifier * name; -int type; -union +__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->structSymbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); +FreeSymbol(symbol); +} +while((symbol = (struct Symbol *)context->templateTypes.root)) { -struct Expression * expression; -struct Identifier * identifier; -struct TemplateDatatype * templateDatatype; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; +__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&context->templateTypes, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); +FreeTemplateType((struct TemplatedType *)symbol); +} +context->nextID = 0; +context->simpleID = 0; +context->parent = (((void *)0)); +} struct TemplateParameter; @@ -1446,23 +1247,6 @@ unsigned int signedBeforePromotion : 1; unsigned int isVector : 1; } ecere_gcc_struct; -struct TemplateParameter -{ -struct TemplateParameter * prev; -struct TemplateParameter * next; -struct Location loc; -int type; -struct Identifier * identifier; -union -{ -struct TemplateDatatype * dataType; -int memberType; -} ecere_gcc_struct __anon1; -struct TemplateArgument * defaultArgument; -const char * dataTypeString; -struct Type * baseType; -} ecere_gcc_struct; - struct Specifier { struct Specifier * prev; @@ -1599,6 +1383,204 @@ classProp->dataType = (((void *)0)); } } +struct FunctionDefinition; + +struct FunctionDefinition +{ +struct FunctionDefinition * prev; +struct FunctionDefinition * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * declarator; +struct __ecereNameSpace__ecere__sys__OldList * declarations; +struct Statement * body; +struct __ecereNameSpace__ecere__com__Class * _class; +struct __ecereNameSpace__ecere__sys__OldList attached; +int declMode; +struct Type * type; +struct Symbol * propSet; +int tempCount; +unsigned int propertyNoThis; +} ecere_gcc_struct; + +struct Instantiation; + +struct Expression +{ +struct Expression * prev; +struct Expression * next; +struct Location loc; +int type; +union +{ +struct +{ +char * constant; +struct Identifier * identifier; +} ecere_gcc_struct __anon1; +struct Statement * compound; +struct Instantiation * instance; +struct +{ +char * string; +unsigned int intlString; +unsigned int wideString; +} ecere_gcc_struct __anon2; +struct __ecereNameSpace__ecere__sys__OldList * list; +struct +{ +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * decl; +} ecere_gcc_struct _classExp; +struct +{ +struct Identifier * id; +} ecere_gcc_struct classData; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * arguments; +struct Location argLoc; +} ecere_gcc_struct call; +struct +{ +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * index; +} ecere_gcc_struct index; +struct +{ +struct Expression * exp; +struct Identifier * member; +int memberType; +unsigned int thisPtr; +} ecere_gcc_struct member; +struct +{ +int op; +struct Expression * exp1; +struct Expression * exp2; +} ecere_gcc_struct op; +struct TypeName * typeName; +struct Specifier * _class; +struct +{ +struct TypeName * typeName; +struct Expression * exp; +} ecere_gcc_struct cast; +struct +{ +struct Expression * cond; +struct __ecereNameSpace__ecere__sys__OldList * exp; +struct Expression * elseExp; +} ecere_gcc_struct cond; +struct +{ +struct TypeName * typeName; +struct Expression * size; +} ecere_gcc_struct _new; +struct +{ +struct TypeName * typeName; +struct Expression * size; +struct Expression * exp; +} ecere_gcc_struct _renew; +struct +{ +char * table; +struct Identifier * id; +} ecere_gcc_struct db; +struct +{ +struct Expression * ds; +struct Expression * name; +} ecere_gcc_struct dbopen; +struct +{ +struct TypeName * typeName; +struct Initializer * initializer; +} ecere_gcc_struct initializer; +struct +{ +struct Expression * exp; +struct TypeName * typeName; +} ecere_gcc_struct vaArg; +struct +{ +struct TypeName * typeName; +struct Identifier * id; +} ecere_gcc_struct offset; +} ecere_gcc_struct __anon1; +unsigned int debugValue; +struct __ecereNameSpace__ecere__com__DataValue val; +uint64 address; +unsigned int hasAddress; +struct Type * expType; +struct Type * destType; +unsigned int usage; +int tempCount; +unsigned int byReference; +unsigned int isConstant; +unsigned int addedThis; +unsigned int needCast; +unsigned int thisPtr; +unsigned int opDestType; +unsigned int usedInComparison; +unsigned int ambiguousUnits; +unsigned int parentOpDestType; +unsigned int needTemplateCast; +} ecere_gcc_struct; + +struct Instantiation +{ +struct Instantiation * prev; +struct Instantiation * next; +struct Location loc; +struct Specifier * _class; +struct Expression * exp; +struct __ecereNameSpace__ecere__sys__OldList * members; +struct Symbol * symbol; +unsigned int fullSet; +unsigned int isConstant; +unsigned char * data; +struct Location nameLoc; +struct Location insideLoc; +unsigned int built; +} ecere_gcc_struct; + +struct TemplateArgument; + +struct TemplateArgument +{ +struct TemplateArgument * prev; +struct TemplateArgument * next; +struct Location loc; +struct Identifier * name; +int type; +union +{ +struct Expression * expression; +struct Identifier * identifier; +struct TemplateDatatype * templateDatatype; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct TemplateParameter +{ +struct TemplateParameter * prev; +struct TemplateParameter * next; +struct Location loc; +int type; +struct Identifier * identifier; +union +{ +struct TemplateDatatype * dataType; +int memberType; +} ecere_gcc_struct __anon1; +struct TemplateArgument * defaultArgument; +const char * dataTypeString; +struct Type * baseType; +} ecere_gcc_struct; + struct Declaration; struct Statement @@ -1755,6 +1737,23 @@ unsigned int isDBProp : 1; } ecere_gcc_struct __anon1; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__ClassTemplateParameter; + +struct __ecereNameSpace__ecere__com__ClassTemplateParameter +{ +struct __ecereNameSpace__ecere__com__ClassTemplateParameter * prev; +struct __ecereNameSpace__ecere__com__ClassTemplateParameter * next; +const char * name; +int type; +union +{ +const char * dataTypeString; +int memberType; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg; +void * param; +} ecere_gcc_struct; + void FreeDeclarator(struct Declarator * decl); void FreeIdentifier(struct Identifier * id); diff --git a/compiler/bootstrap/libec/bootstrap/grammar.c b/compiler/bootstrap/libec/bootstrap/grammar.c index 10e63c7..0449497 100644 --- a/compiler/bootstrap/libec/bootstrap/grammar.c +++ b/compiler/bootstrap/libec/bootstrap/grammar.c @@ -426,6 +426,42 @@ extern struct __ecereNameSpace__ecere__com__Instance * fileInput; int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Specifier; extern void FreeSpecifier(struct Specifier * spec); @@ -1319,91 +1355,8 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -1619,6 +1572,53 @@ char * parsedCommand; struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Module; struct __ecereNameSpace__ecere__com__Module @@ -1696,7 +1696,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; void __ecereRegisterModule_grammar(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/libec/bootstrap/lexer.c b/compiler/bootstrap/libec/bootstrap/lexer.c index 853acef..9804dd9 100644 --- a/compiler/bootstrap/libec/bootstrap/lexer.c +++ b/compiler/bootstrap/libec/bootstrap/lexer.c @@ -2290,42 +2290,6 @@ yy_fatal_error("fatal flex scanner internal error--no action found"); } } -struct __ecereNameSpace__ecere__sys__BinaryTree; - -struct __ecereNameSpace__ecere__sys__BinaryTree -{ -struct __ecereNameSpace__ecere__sys__BTNode * root; -int count; -int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); -void (* FreeKey)(void * key); -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - struct __ecereNameSpace__ecere__com__Property; struct __ecereNameSpace__ecere__com__Property @@ -2358,12 +2322,41 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__sys__BinaryTree; + +struct __ecereNameSpace__ecere__sys__BinaryTree +{ +struct __ecereNameSpace__ecere__sys__BTNode * root; +int count; +int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); +void (* FreeKey)(void * key); +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__com__Method +{ +const char * name; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; +struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; +const char * dataTypeString; +struct Type * dataType; +int memberAccess; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember; + struct __ecereNameSpace__ecere__com__ClassTemplateArgument { union @@ -2387,23 +2380,30 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method +struct __ecereNameSpace__ecere__com__DataMember { +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; +unsigned int isProperty; +int memberAccess; +int id; struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct Type * dataType; -int memberAccess; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + struct __ecereNameSpace__ecere__com__Module; extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess); @@ -2485,7 +2485,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/loadSymbols.c b/compiler/bootstrap/libec/bootstrap/loadSymbols.c index 9e7d61c..cc4a676 100644 --- a/compiler/bootstrap/libec/bootstrap/loadSymbols.c +++ b/compiler/bootstrap/libec/bootstrap/loadSymbols.c @@ -606,35 +606,6 @@ struct __ecereNameSpace__ecere__sys__BTNode * right; int depth; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode); - -extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember); - -extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember); - -struct Symbol; - -extern struct Symbol * DeclClass(struct Specifier * _class, const char * name); - -extern struct Symbol * FindClass(const char * name); - -extern void FreeSymbol(struct Symbol * symbol); - -struct __ecereNameSpace__ecere__sys__OldLink; - -struct __ecereNameSpace__ecere__sys__OldLink -{ -struct __ecereNameSpace__ecere__sys__OldLink * prev; -struct __ecereNameSpace__ecere__sys__OldLink * next; -void * data; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Property; struct __ecereNameSpace__ecere__com__Property @@ -667,7 +638,7 @@ extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ec extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -675,6 +646,35 @@ extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__ extern void __ecereNameSpace__ecere__com__eProperty_Watchable(struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__DataMember; + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_AddDataMember(struct __ecereNameSpace__ecere__com__DataMember * member, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eMember_New(int type, int declMode); + +extern unsigned int __ecereNameSpace__ecere__com__eMember_AddMember(struct __ecereNameSpace__ecere__com__DataMember * addTo, struct __ecereNameSpace__ecere__com__DataMember * dataMember); + +extern unsigned int __ecereNameSpace__ecere__com__eClass_AddMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__DataMember * dataMember); + +struct Symbol; + +extern struct Symbol * DeclClass(struct Specifier * _class, const char * name); + +extern struct Symbol * FindClass(const char * name); + +extern void FreeSymbol(struct Symbol * symbol); + +struct __ecereNameSpace__ecere__sys__OldLink; + +struct __ecereNameSpace__ecere__sys__OldLink +{ +struct __ecereNameSpace__ecere__sys__OldLink * prev; +struct __ecereNameSpace__ecere__sys__OldLink * next; +void * data; +} ecere_gcc_struct; + struct DataRedefinition; struct DataRedefinition @@ -1083,7 +1083,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__DataMember diff --git a/compiler/bootstrap/libec/bootstrap/output.c b/compiler/bootstrap/libec/bootstrap/output.c index f50b27e..4f449f8 100644 --- a/compiler/bootstrap/libec/bootstrap/output.c +++ b/compiler/bootstrap/libec/bootstrap/output.c @@ -263,6 +263,16 @@ int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Read; extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Identifier; extern struct Identifier * MkIdentifier(const char * string); @@ -291,6 +301,32 @@ extern struct Identifier * GetDeclId(struct Declarator * decl); struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName); struct TypeName; @@ -400,6 +436,10 @@ char * attr; struct Expression * exp; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Module; + +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); + struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__DataMember @@ -424,46 +464,6 @@ short structAlignment; short pointerAlignment; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - struct AsmField; struct AsmField @@ -1047,7 +1047,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/pass0.c b/compiler/bootstrap/libec/bootstrap/pass0.c index f707b7e..de24b4c 100644 --- a/compiler/bootstrap/libec/bootstrap/pass0.c +++ b/compiler/bootstrap/libec/bootstrap/pass0.c @@ -342,6 +342,18 @@ extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpa int __ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext; +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); + struct Declarator; extern void FreeDeclarator(struct Declarator * decl); @@ -501,6 +513,32 @@ extern struct Attribute * MkAttribute(char * attr, struct Expression * exp); struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern struct Type * MkClassType(const char * name); extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); @@ -553,6 +591,70 @@ struct Type * dataType; int memberAccess; } ecere_gcc_struct; +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union +{ +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; +union +{ +struct +{ +struct External * pointerExternal; +struct External * structExternal; +} ecere_gcc_struct __anon1; +struct +{ +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct +{ +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; +} ecere_gcc_struct __anon2; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; +} ecere_gcc_struct; + struct Type { struct Type * prev; @@ -758,108 +860,6 @@ struct __ecereNameSpace__ecere__sys__BTNode * __ecereMethod___ecereNameSpace__ec unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node); -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union -{ -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; -union -{ -struct -{ -struct External * pointerExternal; -struct External * structExternal; -} ecere_gcc_struct __anon1; -struct -{ -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct -{ -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; -} ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; -} ecere_gcc_struct; - -extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode); - struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument @@ -1667,7 +1667,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/pass1.c b/compiler/bootstrap/libec/bootstrap/pass1.c index dc103ae..bef8928 100644 --- a/compiler/bootstrap/libec/bootstrap/pass1.c +++ b/compiler/bootstrap/libec/bootstrap/pass1.c @@ -391,6 +391,16 @@ void __ecereDestroyModuleInstances_pass1() (__ecereNameSpace__ecere__com__eInstance_DecRef(classPropValues), classPropValues = 0); } +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Specifier; extern struct Specifier * MkSpecifier(int specifier); @@ -411,6 +421,32 @@ extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -440,6 +476,70 @@ extern void PrintType(struct Type * type, char * string, unsigned int printName struct Symbol; +struct Symbol +{ +char * string; +struct Symbol * parent; +struct Symbol * left; +struct Symbol * right; +int depth; +struct Type * type; +union +{ +struct __ecereNameSpace__ecere__com__Method * method; +struct __ecereNameSpace__ecere__com__Property * _property; +struct __ecereNameSpace__ecere__com__Class * registered; +} ecere_gcc_struct __anon1; +unsigned int notYetDeclared; +union +{ +struct +{ +struct External * pointerExternal; +struct External * structExternal; +} ecere_gcc_struct __anon1; +struct +{ +struct External * externalGet; +struct External * externalSet; +struct External * externalPtr; +struct External * externalIsSet; +} ecere_gcc_struct __anon2; +struct +{ +struct External * methodExternal; +struct External * methodCodeExternal; +} ecere_gcc_struct __anon3; +} ecere_gcc_struct __anon2; +unsigned int imported; +unsigned int declaredStructSym; +struct __ecereNameSpace__ecere__com__Class * _class; +unsigned int declaredStruct; +unsigned int needConstructor; +unsigned int needDestructor; +char * constructorName; +char * structName; +char * className; +char * destructorName; +struct ModuleImport * module; +struct ClassImport * _import; +struct Location nameLoc; +unsigned int isParam; +unsigned int isRemote; +unsigned int isStruct; +unsigned int fireWatchersDone; +int declaring; +unsigned int classData; +unsigned int isStatic; +char * shortName; +struct __ecereNameSpace__ecere__sys__OldList * templateParams; +struct __ecereNameSpace__ecere__sys__OldList templatedClasses; +struct Context * ctx; +int isIterator; +struct Expression * propCategory; +unsigned int mustRegister; +} ecere_gcc_struct; + extern struct Symbol * FindClass(const char * name); struct Declarator; @@ -1087,119 +1187,68 @@ unsigned int __ecereProp_Type_Get_isPointerTypeSize(struct Type * this); unsigned int __ecereProp_Type_Get_isPointerType(struct Type * this); -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Module; -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; +extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module); -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Instance * privateModule; -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name); -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess); -struct Symbol -{ -char * string; -struct Symbol * parent; -struct Symbol * left; -struct Symbol * right; -int depth; -struct Type * type; -union +extern struct __ecereNameSpace__ecere__com__Instance * __thisModule; + +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument { -struct __ecereNameSpace__ecere__com__Method * method; -struct __ecereNameSpace__ecere__com__Property * _property; -struct __ecereNameSpace__ecere__com__Class * registered; -} ecere_gcc_struct __anon1; -unsigned int notYetDeclared; union { struct { -struct External * pointerExternal; -struct External * structExternal; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; } ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; struct { -struct External * externalGet; -struct External * externalSet; -struct External * externalPtr; -struct External * externalIsSet; -} ecere_gcc_struct __anon2; -struct +const char * memberString; +union { -struct External * methodExternal; -struct External * methodCodeExternal; -} ecere_gcc_struct __anon3; +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; } ecere_gcc_struct __anon2; -unsigned int imported; -unsigned int declaredStructSym; -struct __ecereNameSpace__ecere__com__Class * _class; -unsigned int declaredStruct; -unsigned int needConstructor; -unsigned int needDestructor; -char * constructorName; -char * structName; -char * className; -char * destructorName; -struct ModuleImport * module; -struct ClassImport * _import; -struct Location nameLoc; -unsigned int isParam; -unsigned int isRemote; -unsigned int isStruct; -unsigned int fireWatchersDone; -int declaring; -unsigned int classData; -unsigned int isStatic; -char * shortName; -struct __ecereNameSpace__ecere__sys__OldList * templateParams; -struct __ecereNameSpace__ecere__sys__OldList templatedClasses; -struct Context * ctx; -int isIterator; -struct Expression * propCategory; -unsigned int mustRegister; +} ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module); - -extern struct __ecereNameSpace__ecere__com__Instance * privateModule; - -extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name); - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - -extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess); +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; -extern struct __ecereNameSpace__ecere__com__Instance * __thisModule; +extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param); struct __ecereNameSpace__ecere__com__BitMember; @@ -1428,99 +1477,7 @@ struct __ecereNameSpace__ecere__sys__BinaryTree defines; struct __ecereNameSpace__ecere__sys__BinaryTree functions; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; -} ecere_gcc_struct; - -void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string) -{ -if(ns->parent) -GetNameSpaceString(ns->parent, string); -if(ns->name) -{ -strcat(string, ns->name); -strcat(string, "::"); -} -} - -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - -void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Class +struct __ecereNameSpace__ecere__com__Class { struct __ecereNameSpace__ecere__com__Class * prev; struct __ecereNameSpace__ecere__com__Class * next; @@ -1577,13 +1534,227 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; -extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param); +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; + +void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string) +{ +if(ns->parent) +GetNameSpaceString(ns->parent, string); +if(ns->name) +{ +strcat(string, ns->name); +strcat(string, "::"); +} +} static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue; +struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic) +{ +struct Type * type = (((void *)0)); +struct Symbol * symbol; +struct External * external = (((void *)0)); + +if(defs && func->declarator) +{ +struct FunctionDefinition * function = (((void *)0)); +struct Symbol * propSymbol; + +if(inCompiler) +{ +if(!func->specifiers) +func->specifiers = MkList(); +if(makeStatic) +{ +struct Specifier * s; + +for(s = (*func->specifiers).first; s; s = s->next) +if(s->type == 0 && s->__anon1.specifier == STATIC) +break; +if(!s) +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC)); +} +} +propSymbol = func->declarator->symbol; +ReplaceThisClassSpecifiers(func->specifiers, owningClass); +if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func) +func->declarator->symbol = (((void *)0)); +else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func) +func->declarator->symbol = (((void *)0)); +else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func) +func->declarator->symbol = (((void *)0)); +{ +function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0); +function->propSet = func->propSet; +function->type = func->type; +if(func->type) +func->type->refCount++; +ProcessFunctionBody(function, func->body); +external = MkExternalFunction(function); +external->symbol = func->declarator->symbol; +external->__anon1.function->_class = func->_class; +} +symbol = func->declarator->symbol; +if(!func->dontMangle) +{ +struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method; + +func->declarator->symbol->__anon2.__anon3.methodExternal = external; +if(method && method->symbol) +((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external; +if(method && method->type == 1) +{ +struct Type * methodDataType; + +ProcessMethodType(method); +methodDataType = method->dataType; +type = symbol->type; +if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate) +{ +if(method->dataType->__anon1.__anon2.thisClassTemplate) +{ +if(owningClass->templateArgs) +{ +struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate); + +type->byReference = method->dataType->byReference; +methodDataType = ProcessTypeString(method->dataTypeString, 0); +type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = (arg && (*arg).__anon1.__anon1.dataTypeString) ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0)); +} +} +else if(method->dataType->__anon1.__anon2.staticMethod) +type->__anon1.__anon2.staticMethod = 1; +else if(method->dataType->__anon1.__anon2.thisClass) +{ +type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass; +type->byReference = method->dataType->byReference; +} +else +{ +if(!owningClass->symbol) +owningClass->symbol = FindClass(owningClass->fullName); +type->__anon1.__anon2.thisClass = owningClass->symbol; +type->extraParam = 1; +} +} +yylloc = func->loc; +if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 1, 1, 1, 0, 1)) +{ +Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name); +} +else +{ +struct Type * typeParam; +struct Declarator * funcDecl = GetFuncDecl(func->declarator); + +if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first) +{ +struct TypeName * param = (*funcDecl->__anon1.function.parameters).first; + +for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next) +{ +if(typeParam->classObjectType) +{ +param->classObjectType = typeParam->classObjectType; +if(param->declarator && param->declarator->symbol) +param->declarator->symbol->type->classObjectType = typeParam->classObjectType; +} +param = param ? param->next : (((void *)0)); +} +} +} +if(methodDataType != method->dataType) +FreeType(methodDataType); +} +else +{ +type = symbol->type; +if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass) +{ +if(owningClass && !owningClass->symbol) +owningClass->symbol = FindClass(owningClass->fullName); +type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0)); +} +} +} +else +{ +if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass) +{ +if(!owningClass->symbol) +owningClass->symbol = FindClass(owningClass->fullName); +symbol->type->__anon1.__anon2.thisClass = owningClass->symbol; +} +if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion) +{ +if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1) +{ +if(owningClass->type != 1) +symbol->type->__anon1.__anon2.thisClass = (((void *)0)); +} +} +if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func) +{ +propSymbol->__anon2.__anon2.externalGet = external; +} +else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func) +{ +propSymbol->__anon2.__anon2.externalSet = external; +} +else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func) +{ +propSymbol->__anon2.__anon2.externalIsSet = external; +} +else +{ +} +} +if(inCompiler) +{ +if(func->body) +{ +func->declarator = (((void *)0)); +func->specifiers = (((void *)0)); +func->body = (((void *)0)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external); +} +else +{ +struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method; + +if(method && method->symbol) +((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0)); +if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external) +func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0)); +func->declarator = (((void *)0)); +func->specifiers = (((void *)0)); +FreeExternal(external); +} +} +else +{ +__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external); +external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator); +external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, (void *)(CopySpecifier)); +external->__anon1.function->body = (((void *)0)); +} +} +return external; +} + void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, const char * className, struct Statement * statement) { struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0)); @@ -2024,200 +2195,23 @@ extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module; -struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic) -{ -struct Type * type = (((void *)0)); -struct Symbol * symbol; -struct External * external = (((void *)0)); - -if(defs && func->declarator) -{ -struct FunctionDefinition * function = (((void *)0)); -struct Symbol * propSymbol; - -if(inCompiler) -{ -if(!func->specifiers) -func->specifiers = MkList(); -if(makeStatic) -{ -struct Specifier * s; - -for(s = (*func->specifiers).first; s; s = s->next) -if(s->type == 0 && s->__anon1.specifier == STATIC) -break; -if(!s) -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC)); -} -} -propSymbol = func->declarator->symbol; -ReplaceThisClassSpecifiers(func->specifiers, owningClass); -if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func) -func->declarator->symbol = (((void *)0)); -else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func) -func->declarator->symbol = (((void *)0)); -else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func) -func->declarator->symbol = (((void *)0)); -{ -function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0); -function->propSet = func->propSet; -function->type = func->type; -if(func->type) -func->type->refCount++; -ProcessFunctionBody(function, func->body); -external = MkExternalFunction(function); -external->symbol = func->declarator->symbol; -external->__anon1.function->_class = func->_class; -} -symbol = func->declarator->symbol; -if(!func->dontMangle) -{ -struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method; - -func->declarator->symbol->__anon2.__anon3.methodExternal = external; -if(method && method->symbol) -((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external; -if(method && method->type == 1) -{ -struct Type * methodDataType; - -ProcessMethodType(method); -methodDataType = method->dataType; -type = symbol->type; -if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate) -{ -if(method->dataType->__anon1.__anon2.thisClassTemplate) -{ -if(owningClass->templateArgs) -{ -struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate); - -type->byReference = method->dataType->byReference; -methodDataType = ProcessTypeString(method->dataTypeString, 0); -type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = (arg && (*arg).__anon1.__anon1.dataTypeString) ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0)); -} -} -else if(method->dataType->__anon1.__anon2.staticMethod) -type->__anon1.__anon2.staticMethod = 1; -else if(method->dataType->__anon1.__anon2.thisClass) -{ -type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass; -type->byReference = method->dataType->byReference; -} -else -{ -if(!owningClass->symbol) -owningClass->symbol = FindClass(owningClass->fullName); -type->__anon1.__anon2.thisClass = owningClass->symbol; -type->extraParam = 1; -} -} -yylloc = func->loc; -if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 1, 1, 1, 0, 1)) -{ -Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name); -} -else -{ -struct Type * typeParam; -struct Declarator * funcDecl = GetFuncDecl(func->declarator); - -if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first) -{ -struct TypeName * param = (*funcDecl->__anon1.function.parameters).first; - -for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next) -{ -if(typeParam->classObjectType) -{ -param->classObjectType = typeParam->classObjectType; -if(param->declarator && param->declarator->symbol) -param->declarator->symbol->type->classObjectType = typeParam->classObjectType; -} -param = param ? param->next : (((void *)0)); -} -} -} -if(methodDataType != method->dataType) -FreeType(methodDataType); -} -else -{ -type = symbol->type; -if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass) -{ -if(owningClass && !owningClass->symbol) -owningClass->symbol = FindClass(owningClass->fullName); -type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0)); -} -} -} -else -{ -if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass) -{ -if(!owningClass->symbol) -owningClass->symbol = FindClass(owningClass->fullName); -symbol->type->__anon1.__anon2.thisClass = owningClass->symbol; -} -if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion) -{ -if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1) -{ -if(owningClass->type != 1) -symbol->type->__anon1.__anon2.thisClass = (((void *)0)); -} -} -if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func) -{ -propSymbol->__anon2.__anon2.externalGet = external; -} -else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func) -{ -propSymbol->__anon2.__anon2.externalSet = external; -} -else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func) -{ -propSymbol->__anon2.__anon2.externalIsSet = external; -} -else -{ -} -} -if(inCompiler) -{ -if(func->body) -{ -func->declarator = (((void *)0)); -func->specifiers = (((void *)0)); -func->body = (((void *)0)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external); -} -else -{ -struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method; - -if(method && method->symbol) -((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0)); -if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external) -func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0)); -func->declarator = (((void *)0)); -func->specifiers = (((void *)0)); -FreeExternal(external); -} -} -else +struct __ecereNameSpace__ecere__com__Module { -__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external); -external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator); -external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, (void *)(CopySpecifier)); -external->__anon1.function->body = (((void *)0)); -} -} -return external; -} +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this) { @@ -2306,6 +2300,11 @@ classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ece __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues); } +void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module) +{ + +} + static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * external, int declMode) { struct ClassDef * def; diff --git a/compiler/bootstrap/libec/bootstrap/pass15.c b/compiler/bootstrap/libec/bootstrap/pass15.c index b17b1a5..1f05744 100644 --- a/compiler/bootstrap/libec/bootstrap/pass15.c +++ b/compiler/bootstrap/libec/bootstrap/pass15.c @@ -796,6 +796,42 @@ int depth; struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this); +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Identifier; extern void FreeIdentifier(struct Identifier * id); @@ -1575,8 +1611,6 @@ void DeclareTypeForwardDeclare(struct External * neededFor, struct Type * type, _DeclareType(neededFor, type, needDereference, forFunctionDef, 1); } -struct Conversion; - static void _PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName, unsigned int printConst); void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName) @@ -1589,87 +1623,8 @@ void PrintTypeNoConst(struct Type * type, char * string, unsigned int printName, _PrintType(type, string, printName, fullName, 0); } -struct __ecereNameSpace__ecere__com__DataMember; - -extern void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos); - -extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct Conversion -{ -struct Conversion * prev, * next; -struct __ecereNameSpace__ecere__com__Property * convert; -unsigned int isGet; -struct Type * resultType; -} ecere_gcc_struct; - -static void FreeConvert(struct Conversion * convert) -{ -if(convert->resultType) -FreeType(convert->resultType); -} - struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -1789,6 +1744,35 @@ int pos; uint64 mask; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eClass_FindNextMember(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class ** curClass, struct __ecereNameSpace__ecere__com__DataMember ** curMember, struct __ecereNameSpace__ecere__com__DataMember ** subMemberStack, int * subMemberStackPos); + +extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); + struct TemplateParameter; struct TemplateParameter @@ -7473,7 +7457,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__NameSpace @@ -8620,6 +8603,22 @@ strcat(string, count); } } +struct Conversion; + +struct Conversion +{ +struct Conversion * prev, * next; +struct __ecereNameSpace__ecere__com__Property * convert; +unsigned int isGet; +struct Type * resultType; +} ecere_gcc_struct; + +static void FreeConvert(struct Conversion * convert) +{ +if(convert->resultType) +FreeType(convert->resultType); +} + struct Enumerator; struct Enumerator @@ -9940,113 +9939,6 @@ return 1; return 0; } -unsigned int MatchTypes(struct Type * source, struct Type * dest, struct __ecereNameSpace__ecere__sys__OldList * conversions, struct __ecereNameSpace__ecere__com__Class * owningClassSource, struct __ecereNameSpace__ecere__com__Class * owningClassDest, unsigned int doConversion, unsigned int enumBaseType, unsigned int acceptReversedParams, unsigned int isConversionExploration, unsigned int warnConst); - -unsigned int MatchWithEnums_NameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, struct Expression * sourceExp, struct Type * dest, char * string, struct __ecereNameSpace__ecere__sys__OldList * conversions) -{ -struct __ecereNameSpace__ecere__com__BTNamedLink * link; - -for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link))) -{ -struct __ecereNameSpace__ecere__com__Class * _class = link->data; - -if(_class->type == 4) -{ -struct __ecereNameSpace__ecere__sys__OldList converts = -{ -0, 0, 0, 0, 0 -}; -struct Type * type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); - -type->kind = 8; -if(!_class->symbol) -_class->symbol = FindClass(_class->fullName); -type->__anon1._class = _class->symbol; -if(MatchTypes(type, dest, &converts, (((void *)0)), (((void *)0)), dest->kind != 8 || !dest->__anon1._class || strcmp(dest->__anon1._class->string, "bool"), 0, 0, 0, 0)) -{ -struct __ecereNameSpace__ecere__sys__NamedLink64 * value; -struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum"); - -if(enumClass) -{ -struct __ecereNameSpace__ecere__com__Class * baseClass; - -for(baseClass = _class; baseClass && baseClass->type == 4; baseClass = baseClass->base) -{ -struct __ecereNameSpace__ecere__com__EnumClassData * e = (baseClass ? ((void *)(((char *)baseClass->data) + enumClass->offsetClass)) : (((void *)0))); - -for(value = e->values.first; value; value = value->next) -{ -if(!strcmp(value->name, string)) -break; -} -if(value) -{ -FreeType(sourceExp->expType); -sourceExp->isConstant = 1; -sourceExp->expType = MkClassType(baseClass->fullName); -if(inCompiler || inPreCompiler || inDebugger) -{ -char constant[256]; - -FreeExpContents(sourceExp); -sourceExp->type = 2; -if(!strcmp(baseClass->dataTypeString, "int") || !strcmp(baseClass->dataTypeString, "int64") || !strcmp(baseClass->dataTypeString, "short") || !strcmp(baseClass->dataTypeString, "char")) -sprintf(constant, ((__runtimePlatform == 1) ? "%I64d" : "%lld"), value->data); -else -sprintf(constant, ((__runtimePlatform == 1) ? "0x%I64XLL" : "0x%llXLL"), value->data); -sourceExp->__anon1.__anon1.constant = __ecereNameSpace__ecere__sys__CopyString(constant); -} -while(converts.first) -{ -struct Conversion * convert = converts.first; - -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&converts, convert); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(conversions, convert); -} -((type ? __extension__ ({ -void * __ecerePtrToDelete = (type); - -__ecereClass_Type->Destructor ? __ecereClass_Type->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); -}) : 0), type = 0); -return 1; -} -} -} -} -if(converts.first) -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&converts, (void *)(FreeConvert)); -((type ? __extension__ ({ -void * __ecerePtrToDelete = (type); - -__ecereClass_Type->Destructor ? __ecereClass_Type->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); -}) : 0), type = 0); -} -} -for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->nameSpaces); nameSpace != (((void *)0)); nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace))) -if(MatchWithEnums_NameSpace(nameSpace, sourceExp, dest, string, conversions)) -return 1; -return 0; -} - -unsigned int MatchWithEnums_Module(struct __ecereNameSpace__ecere__com__Instance * mainModule, struct Expression * sourceExp, struct Type * dest, char * string, struct __ecereNameSpace__ecere__sys__OldList * conversions) -{ -struct __ecereNameSpace__ecere__com__Instance * module; - -if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, sourceExp, dest, string, conversions)) -return 1; -if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, sourceExp, dest, string, conversions)) -return 1; -if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, sourceExp, dest, string, conversions)) -return 1; -for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next) -{ -if(ModuleVisibility(mainModule, module) && MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, sourceExp, dest, string, conversions)) -return 1; -} -return 0; -} - int ComputeTypeSize(struct Type * type); void ComputeClassMembers(struct __ecereNameSpace__ecere__com__Class * _class, unsigned int isMember) @@ -11513,6 +11405,111 @@ __ecereMethod_External_CreateUniqueEdge(neededBy, external, !needDereference); return external; } +unsigned int MatchWithEnums_NameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, struct Expression * sourceExp, struct Type * dest, char * string, struct __ecereNameSpace__ecere__sys__OldList * conversions) +{ +struct __ecereNameSpace__ecere__com__BTNamedLink * link; + +for(link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->classes); link; link = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)link))) +{ +struct __ecereNameSpace__ecere__com__Class * _class = link->data; + +if(_class->type == 4) +{ +struct __ecereNameSpace__ecere__sys__OldList converts = +{ +0, 0, 0, 0, 0 +}; +struct Type * type = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type); + +type->kind = 8; +if(!_class->symbol) +_class->symbol = FindClass(_class->fullName); +type->__anon1._class = _class->symbol; +if(MatchTypes(type, dest, &converts, (((void *)0)), (((void *)0)), dest->kind != 8 || !dest->__anon1._class || strcmp(dest->__anon1._class->string, "bool"), 0, 0, 0, 0)) +{ +struct __ecereNameSpace__ecere__sys__NamedLink64 * value; +struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum"); + +if(enumClass) +{ +struct __ecereNameSpace__ecere__com__Class * baseClass; + +for(baseClass = _class; baseClass && baseClass->type == 4; baseClass = baseClass->base) +{ +struct __ecereNameSpace__ecere__com__EnumClassData * e = (baseClass ? ((void *)(((char *)baseClass->data) + enumClass->offsetClass)) : (((void *)0))); + +for(value = e->values.first; value; value = value->next) +{ +if(!strcmp(value->name, string)) +break; +} +if(value) +{ +FreeType(sourceExp->expType); +sourceExp->isConstant = 1; +sourceExp->expType = MkClassType(baseClass->fullName); +if(inCompiler || inPreCompiler || inDebugger) +{ +char constant[256]; + +FreeExpContents(sourceExp); +sourceExp->type = 2; +if(!strcmp(baseClass->dataTypeString, "int") || !strcmp(baseClass->dataTypeString, "int64") || !strcmp(baseClass->dataTypeString, "short") || !strcmp(baseClass->dataTypeString, "char")) +sprintf(constant, ((__runtimePlatform == 1) ? "%I64d" : "%lld"), value->data); +else +sprintf(constant, ((__runtimePlatform == 1) ? "0x%I64XLL" : "0x%llXLL"), value->data); +sourceExp->__anon1.__anon1.constant = __ecereNameSpace__ecere__sys__CopyString(constant); +} +while(converts.first) +{ +struct Conversion * convert = converts.first; + +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(&converts, convert); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(conversions, convert); +} +((type ? __extension__ ({ +void * __ecerePtrToDelete = (type); + +__ecereClass_Type->Destructor ? __ecereClass_Type->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); +}) : 0), type = 0); +return 1; +} +} +} +} +if(converts.first) +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Free(&converts, (void *)(FreeConvert)); +((type ? __extension__ ({ +void * __ecerePtrToDelete = (type); + +__ecereClass_Type->Destructor ? __ecereClass_Type->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); +}) : 0), type = 0); +} +} +for(nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(&nameSpace->nameSpaces); nameSpace != (((void *)0)); nameSpace = (struct __ecereNameSpace__ecere__com__NameSpace *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)nameSpace))) +if(MatchWithEnums_NameSpace(nameSpace, sourceExp, dest, string, conversions)) +return 1; +return 0; +} + +unsigned int MatchWithEnums_Module(struct __ecereNameSpace__ecere__com__Instance * mainModule, struct Expression * sourceExp, struct Type * dest, char * string, struct __ecereNameSpace__ecere__sys__OldList * conversions) +{ +struct __ecereNameSpace__ecere__com__Instance * module; + +if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->systemNameSpace, sourceExp, dest, string, conversions)) +return 1; +if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->privateNameSpace, sourceExp, dest, string, conversions)) +return 1; +if(MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, sourceExp, dest, string, conversions)) +return 1; +for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)mainModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next) +{ +if(ModuleVisibility(mainModule, module) && MatchWithEnums_NameSpace(&((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->publicNameSpace, sourceExp, dest, string, conversions)) +return 1; +} +return 0; +} + void ProcessExpressionType(struct Expression * exp); static void ReplaceClassMembers(struct Expression * exp, struct __ecereNameSpace__ecere__com__Class * _class) diff --git a/compiler/bootstrap/libec/bootstrap/pass16.c b/compiler/bootstrap/libec/bootstrap/pass16.c index 3f0b895..4b09020 100644 --- a/compiler/bootstrap/libec/bootstrap/pass16.c +++ b/compiler/bootstrap/libec/bootstrap/pass16.c @@ -328,6 +328,18 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext; int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add; +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void DeclareProperty(struct External * neededBy, struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName); + struct Specifier; extern struct Specifier * MkSpecifier(int specifier); @@ -437,6 +449,32 @@ extern void FreeIdentifier(struct Identifier * id); struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern void FreeType(struct Type * type); extern struct Type * MkClassType(const char * name); @@ -864,97 +902,6 @@ break; struct ClassImport; -struct ClassImport -{ -struct ClassImport * prev; -struct ClassImport * next; -char * name; -struct __ecereNameSpace__ecere__sys__OldList methods; -struct __ecereNameSpace__ecere__sys__OldList properties; -unsigned int itself; -int isRemote; -} ecere_gcc_struct; - -struct MembersInit; - -extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers); - -struct __ecereNameSpace__ecere__sys__BinaryTree; - -struct __ecereNameSpace__ecere__sys__BinaryTree -{ -struct __ecereNameSpace__ecere__sys__BTNode * root; -int count; -int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); -void (* FreeKey)(void * key); -} ecere_gcc_struct; - -unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node); - -void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node); - -struct FunctionDefinition; - -extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit); - -extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body); - -extern struct External * MkExternalFunction(struct FunctionDefinition * function); - -struct FunctionDefinition -{ -struct FunctionDefinition * prev; -struct FunctionDefinition * next; -struct Location loc; -struct __ecereNameSpace__ecere__sys__OldList * specifiers; -struct Declarator * declarator; -struct __ecereNameSpace__ecere__sys__OldList * declarations; -struct Statement * body; -struct __ecereNameSpace__ecere__com__Class * _class; -struct __ecereNameSpace__ecere__sys__OldList attached; -int declMode; -struct Type * type; -struct Symbol * propSet; -int tempCount; -unsigned int propertyNoThis; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct Symbol { char * string; @@ -1019,7 +966,60 @@ struct Expression * propCategory; unsigned int mustRegister; } ecere_gcc_struct; -extern void DeclareProperty(struct External * neededBy, struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName); +struct ClassImport +{ +struct ClassImport * prev; +struct ClassImport * next; +char * name; +struct __ecereNameSpace__ecere__sys__OldList methods; +struct __ecereNameSpace__ecere__sys__OldList properties; +unsigned int itself; +int isRemote; +} ecere_gcc_struct; + +struct MembersInit; + +extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers); + +struct __ecereNameSpace__ecere__sys__BinaryTree; + +struct __ecereNameSpace__ecere__sys__BinaryTree +{ +struct __ecereNameSpace__ecere__sys__BTNode * root; +int count; +int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); +void (* FreeKey)(void * key); +} ecere_gcc_struct; + +unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node); + +void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node); + +struct FunctionDefinition; + +extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit); + +extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body); + +extern struct External * MkExternalFunction(struct FunctionDefinition * function); + +struct FunctionDefinition +{ +struct FunctionDefinition * prev; +struct FunctionDefinition * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * specifiers; +struct Declarator * declarator; +struct __ecereNameSpace__ecere__sys__OldList * declarations; +struct Statement * body; +struct __ecereNameSpace__ecere__com__Class * _class; +struct __ecereNameSpace__ecere__sys__OldList attached; +int declMode; +struct Type * type; +struct Symbol * propSet; +int tempCount; +unsigned int propertyNoThis; +} ecere_gcc_struct; struct PropertyWatch; @@ -1475,7 +1475,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/pass2.c b/compiler/bootstrap/libec/bootstrap/pass2.c index 10fcc3b..3f7a140 100644 --- a/compiler/bootstrap/libec/bootstrap/pass2.c +++ b/compiler/bootstrap/libec/bootstrap/pass2.c @@ -245,6 +245,18 @@ extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereName extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void DeclareProperty(struct External * neededBy, struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName); + struct Expression; extern struct Expression * CopyExpression(struct Expression * exp); @@ -354,6 +366,32 @@ extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, stru struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern struct Type * MkClassType(const char * name); extern void modifyPassAsTemplate(struct Type ** typePtr, unsigned int value); @@ -844,44 +882,6 @@ struct Type * dataType; int memberAccess; } ecere_gcc_struct; -extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ecere__com__Method * method, const char * name); - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct Symbol { char * string; @@ -946,7 +946,7 @@ struct Expression * propCategory; unsigned int mustRegister; } ecere_gcc_struct; -extern void DeclareProperty(struct External * neededBy, struct __ecereNameSpace__ecere__com__Property * prop, char * setName, char * getName); +extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ecere__com__Method * method, const char * name); struct PropertyWatch; @@ -1503,7 +1503,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; extern char * __ecereNameSpace__ecere__com__PrintString(struct __ecereNameSpace__ecere__com__Class * class, const void * object, ...); diff --git a/compiler/bootstrap/libec/bootstrap/pass3.c b/compiler/bootstrap/libec/bootstrap/pass3.c index 8589a2b..d7c948b 100644 --- a/compiler/bootstrap/libec/bootstrap/pass3.c +++ b/compiler/bootstrap/libec/bootstrap/pass3.c @@ -255,6 +255,16 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove; int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add; +struct __ecereNameSpace__ecere__com__Property; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Specifier; extern struct Specifier * CopySpecifier(struct Specifier * spec); @@ -329,6 +339,32 @@ id->string = __ecereNameSpace__ecere__sys__CopyString(newID); struct Type; +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + extern struct Type * ProcessTypeString(const char * string, unsigned int staticMethod); extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); @@ -426,6 +462,10 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__Module; + +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); + struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__DataMember @@ -450,46 +490,6 @@ short structAlignment; short pointerAlignment; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - struct InitDeclarator; struct ClassDef; @@ -946,7 +946,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application diff --git a/compiler/bootstrap/libec/bootstrap/shortcuts.c b/compiler/bootstrap/libec/bootstrap/shortcuts.c index d4ba8e1..ba3bcfc 100644 --- a/compiler/bootstrap/libec/bootstrap/shortcuts.c +++ b/compiler/bootstrap/libec/bootstrap/shortcuts.c @@ -301,6 +301,42 @@ int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek; extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance); +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Declarator; struct Declarator @@ -440,67 +476,80 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; +struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__DataMember +struct __ecereNameSpace__ecere__com__Method { -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; +struct __ecereNameSpace__ecere__com__Method * parent; +struct __ecereNameSpace__ecere__com__Method * left; +struct __ecereNameSpace__ecere__com__Method * right; +int depth; +int (* function)(); +int vid; +int type; struct __ecereNameSpace__ecere__com__Class * _class; +void * symbol; const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; +int memberAccess; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Property; +struct __ecereNameSpace__ecere__com__Module; -struct __ecereNameSpace__ecere__com__Property +extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); + +struct __ecereNameSpace__ecere__com__NameSpace; + +struct __ecereNameSpace__ecere__com__NameSpace { -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; +struct __ecereNameSpace__ecere__com__NameSpace * btParent; +struct __ecereNameSpace__ecere__com__NameSpace * left; +struct __ecereNameSpace__ecere__com__NameSpace * right; +int depth; +struct __ecereNameSpace__ecere__com__NameSpace * parent; +struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; +struct __ecereNameSpace__ecere__sys__BinaryTree classes; +struct __ecereNameSpace__ecere__sys__BinaryTree defines; +struct __ecereNameSpace__ecere__sys__BinaryTree functions; } ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +struct __ecereNameSpace__ecere__com__Application +{ +int argc; +const char * * argv; +int exitCode; +unsigned int isGUIApp; +struct __ecereNameSpace__ecere__sys__OldList allModules; +char * parsedCommand; +struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; +} ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); +struct __ecereNameSpace__ecere__com__Module +{ +struct __ecereNameSpace__ecere__com__Instance * application; +struct __ecereNameSpace__ecere__sys__OldList classes; +struct __ecereNameSpace__ecere__sys__OldList defines; +struct __ecereNameSpace__ecere__sys__OldList functions; +struct __ecereNameSpace__ecere__sys__OldList modules; +struct __ecereNameSpace__ecere__com__Instance * prev; +struct __ecereNameSpace__ecere__com__Instance * next; +const char * name; +void * library; +void * Unload; +int importType; +int origImportType; +struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; +struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; +} ecere_gcc_struct; -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); +void __ecereUnregisterModule_shortcuts(struct __ecereNameSpace__ecere__com__Instance * module) +{ -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); +} -struct __ecereNameSpace__ecere__com__Method; +struct __ecereNameSpace__ecere__com__DataMember; struct __ecereNameSpace__ecere__com__ClassTemplateArgument { @@ -525,41 +574,26 @@ struct __ecereNameSpace__ecere__com__Method * method; } ecere_gcc_struct __anon1; } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__Method +struct __ecereNameSpace__ecere__com__DataMember { +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; const char * name; -struct __ecereNameSpace__ecere__com__Method * parent; -struct __ecereNameSpace__ecere__com__Method * left; -struct __ecereNameSpace__ecere__com__Method * right; -int depth; -int (* function)(); -int vid; -int type; +unsigned int isProperty; +int memberAccess; +int id; struct __ecereNameSpace__ecere__com__Class * _class; -void * symbol; const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; struct Type * dataType; -int memberAccess; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Module; - -extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode); - -struct __ecereNameSpace__ecere__com__NameSpace; - -struct __ecereNameSpace__ecere__com__NameSpace -{ -const char * name; -struct __ecereNameSpace__ecere__com__NameSpace * btParent; -struct __ecereNameSpace__ecere__com__NameSpace * left; -struct __ecereNameSpace__ecere__com__NameSpace * right; -int depth; -struct __ecereNameSpace__ecere__com__NameSpace * parent; -struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; -struct __ecereNameSpace__ecere__sys__BinaryTree classes; -struct __ecereNameSpace__ecere__sys__BinaryTree defines; -struct __ecereNameSpace__ecere__sys__BinaryTree functions; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; } ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class @@ -619,42 +653,12 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Application -{ -int argc; -const char * * argv; -int exitCode; -unsigned int isGUIApp; -struct __ecereNameSpace__ecere__sys__OldList allModules; -char * parsedCommand; -struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__TempFile; extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__File; -struct __ecereNameSpace__ecere__com__Module -{ -struct __ecereNameSpace__ecere__com__Instance * application; -struct __ecereNameSpace__ecere__sys__OldList classes; -struct __ecereNameSpace__ecere__sys__OldList defines; -struct __ecereNameSpace__ecere__sys__OldList functions; -struct __ecereNameSpace__ecere__sys__OldList modules; -struct __ecereNameSpace__ecere__com__Instance * prev; -struct __ecereNameSpace__ecere__com__Instance * next; -const char * name; -void * library; -void * Unload; -int importType; -int origImportType; -struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; -struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} ecere_gcc_struct; - struct Declarator * SpecDeclFromString(const char * string, struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * baseDecl) { struct Location oldLocation = yylloc; @@ -734,11 +738,6 @@ fileInput = backFileInput; return decl; } -void __ecereUnregisterModule_shortcuts(struct __ecereNameSpace__ecere__com__Instance * module) -{ - -} - void __ecereRegisterModule_shortcuts(struct __ecereNameSpace__ecere__com__Instance * module) { struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class; diff --git a/compiler/bootstrap/libec/bootstrap/type.c b/compiler/bootstrap/libec/bootstrap/type.c index f490873..cacce72 100644 --- a/compiler/bootstrap/libec/bootstrap/type.c +++ b/compiler/bootstrap/libec/bootstrap/type.c @@ -391,6 +391,42 @@ extern struct __ecereNameSpace__ecere__com__Instance * fileInput; int __ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek; +struct __ecereNameSpace__ecere__com__Property; + +struct __ecereNameSpace__ecere__com__Property +{ +struct __ecereNameSpace__ecere__com__Property * prev; +struct __ecereNameSpace__ecere__com__Property * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +void (* Set)(void * , int); +int (* Get)(void * ); +unsigned int (* IsSet)(void * ); +void * data; +void * symbol; +int vid; +unsigned int conversion; +unsigned int watcherOffset; +const char * category; +unsigned int compiled; +unsigned int selfWatchable; +unsigned int isWatchable; +} ecere_gcc_struct; + +extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + +extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); + +extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); + +extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); + struct Specifier; extern void FreeSpecifier(struct Specifier * spec); @@ -1218,91 +1254,8 @@ int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uint void (* FreeKey)(void * key); } ecere_gcc_struct; -struct __ecereNameSpace__ecere__com__DataMember; - -struct __ecereNameSpace__ecere__com__DataMember -{ -struct __ecereNameSpace__ecere__com__DataMember * prev; -struct __ecereNameSpace__ecere__com__DataMember * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -int type; -int offset; -int memberID; -struct __ecereNameSpace__ecere__sys__OldList members; -struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; -int memberOffset; -short structAlignment; -short pointerAlignment; -} ecere_gcc_struct; - -struct __ecereNameSpace__ecere__com__Property; - -struct __ecereNameSpace__ecere__com__Property -{ -struct __ecereNameSpace__ecere__com__Property * prev; -struct __ecereNameSpace__ecere__com__Property * next; -const char * name; -unsigned int isProperty; -int memberAccess; -int id; -struct __ecereNameSpace__ecere__com__Class * _class; -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -struct Type * dataType; -void (* Set)(void * , int); -int (* Get)(void * ); -unsigned int (* IsSet)(void * ); -void * data; -void * symbol; -int vid; -unsigned int conversion; -unsigned int watcherOffset; -const char * category; -unsigned int compiled; -unsigned int selfWatchable; -unsigned int isWatchable; -} ecere_gcc_struct; - -extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - -extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object); - -extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * )); - -extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); - struct __ecereNameSpace__ecere__com__Method; -struct __ecereNameSpace__ecere__com__ClassTemplateArgument -{ -union -{ -struct -{ -const char * dataTypeString; -struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} ecere_gcc_struct __anon1; -struct __ecereNameSpace__ecere__com__DataValue expression; -struct -{ -const char * memberString; -union -{ -struct __ecereNameSpace__ecere__com__DataMember * member; -struct __ecereNameSpace__ecere__com__Property * prop; -struct __ecereNameSpace__ecere__com__Method * method; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct __anon2; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - struct __ecereNameSpace__ecere__com__Method { const char * name; @@ -1347,6 +1300,53 @@ char * parsedCommand; struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; } ecere_gcc_struct; +struct __ecereNameSpace__ecere__com__DataMember; + +struct __ecereNameSpace__ecere__com__ClassTemplateArgument +{ +union +{ +struct +{ +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +} ecere_gcc_struct __anon1; +struct __ecereNameSpace__ecere__com__DataValue expression; +struct +{ +const char * memberString; +union +{ +struct __ecereNameSpace__ecere__com__DataMember * member; +struct __ecereNameSpace__ecere__com__Property * prop; +struct __ecereNameSpace__ecere__com__Method * method; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct __ecereNameSpace__ecere__com__DataMember +{ +struct __ecereNameSpace__ecere__com__DataMember * prev; +struct __ecereNameSpace__ecere__com__DataMember * next; +const char * name; +unsigned int isProperty; +int memberAccess; +int id; +struct __ecereNameSpace__ecere__com__Class * _class; +const char * dataTypeString; +struct __ecereNameSpace__ecere__com__Class * dataTypeClass; +struct Type * dataType; +int type; +int offset; +int memberID; +struct __ecereNameSpace__ecere__sys__OldList members; +struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; +int memberOffset; +short structAlignment; +short pointerAlignment; +} ecere_gcc_struct; + struct __ecereNameSpace__ecere__com__Module; struct __ecereNameSpace__ecere__com__Module @@ -1424,7 +1424,6 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -void * bindingsClass; } ecere_gcc_struct; void __ecereRegisterModule_type(struct __ecereNameSpace__ecere__com__Instance * module) -- 1.8.3.1