From 7968591652318eaf5b17fba8a14e864604d939c9 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Sun, 15 Feb 2015 14:56:08 -0500 Subject: [PATCH] compiler/libec; ecere; ide: Safer default virtual method calls - Replacing use of DefaultFunction() in favor of null pointer for unspecified virtual methods, with a conditional check defaulting to a type-casted '1' default value. - Calling DefaultFunction() with different signature did not work with Emscripten --- compiler/bootstrap/ecc/bootstrap/ecc.c | 36 +- compiler/bootstrap/ecere/bootstrap/AVLTree.c | 39 +- compiler/bootstrap/ecere/bootstrap/Array.c | 43 +- compiler/bootstrap/ecere/bootstrap/BufferedFile.c | 144 +- .../bootstrap/ecere/bootstrap/BuiltInContainer.c | 57 +- compiler/bootstrap/ecere/bootstrap/Container.c | 465 +++- compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c | 7 +- compiler/bootstrap/ecere/bootstrap/DualPipe.c | 81 +- compiler/bootstrap/ecere/bootstrap/File.c | 243 +- compiler/bootstrap/ecere/bootstrap/LinkList.c | 18 +- compiler/bootstrap/ecere/bootstrap/List.c | 66 +- compiler/bootstrap/ecere/bootstrap/Map.c | 313 ++- compiler/bootstrap/ecere/bootstrap/System.c | 9 +- compiler/bootstrap/ecere/bootstrap/TempFile.c | 27 +- compiler/bootstrap/ecere/bootstrap/dataTypes.c | 291 ++- compiler/bootstrap/ecere/bootstrap/i18n.c | 171 +- compiler/bootstrap/ecere/bootstrap/instance.c | 21 +- compiler/bootstrap/ecp/bootstrap/ecp.c | 54 +- compiler/bootstrap/ecs/bootstrap/ecs.c | 720 ++++-- compiler/bootstrap/libec/bootstrap/ast.c | 18 +- compiler/bootstrap/libec/bootstrap/ecdefs.c | 27 +- compiler/bootstrap/libec/bootstrap/freeAst.c | 70 +- compiler/bootstrap/libec/bootstrap/grammar.c | 126 +- compiler/bootstrap/libec/bootstrap/lexer.c | 9 +- compiler/bootstrap/libec/bootstrap/loadSymbols.c | 27 +- compiler/bootstrap/libec/bootstrap/output.c | 2457 +++++++++++++++----- compiler/bootstrap/libec/bootstrap/pass0.c | 18 +- compiler/bootstrap/libec/bootstrap/pass1.c | 27 +- compiler/bootstrap/libec/bootstrap/pass15.c | 61 +- compiler/bootstrap/libec/bootstrap/pass16.c | 36 +- compiler/bootstrap/libec/bootstrap/pass2.c | 257 +- compiler/bootstrap/libec/bootstrap/pass3.c | 36 +- compiler/bootstrap/libec/bootstrap/shortcuts.c | 18 +- compiler/bootstrap/libec/bootstrap/type.c | 45 +- compiler/libec/src/pass2.ec | 182 +- ecere/src/com/instance.ec | 14 +- ecere/src/gui/Window.ec | 147 +- ecere/src/gui/controls/DataBox.ec | 3 +- ecere/src/gui/controls/DropBox.ec | 28 +- ecere/src/gui/controls/ToolTip.ec | 8 +- ide/src/ProjectSettings.ec | 8 +- ide/src/designer/CodeEditor.ec | 16 +- ide/src/designer/Sheet.ec | 9 +- 43 files changed, 4998 insertions(+), 1454 deletions(-) diff --git a/compiler/bootstrap/ecc/bootstrap/ecc.c b/compiler/bootstrap/ecc/bootstrap/ecc.c index 32c32a9..227b563 100644 --- a/compiler/bootstrap/ecc/bootstrap/ecc.c +++ b/compiler/bootstrap/ecc/bootstrap/ecc.c @@ -1147,32 +1147,52 @@ __ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(mainModuleName }); __ecereMethod___ecereNameSpace__ecere__sys__OldList_AddName(&defines, module); resetScanner(); -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = cppOutput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(cppOutput)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(cppOutput) : (unsigned int)1; +}))) { char junk[4096]; -int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = cppOutput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(cppOutput, junk, 1, 4096); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(cppOutput, junk, 1, 4096) : (int)1; +})); + +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, junk, 1, count); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, junk, 1, count) : (int)1; +})); } exitCode = __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(cppOutput); (__ecereNameSpace__ecere__com__eInstance_DecRef(cppOutput), cppOutput = 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, 0, 0) : (unsigned int)1; +})); { char symFile[274]; char symLocation[797]; diff --git a/compiler/bootstrap/ecere/bootstrap/AVLTree.c b/compiler/bootstrap/ecere/bootstrap/AVLTree.c index e99593e..848016a 100644 --- a/compiler/bootstrap/ecere/bootstrap/AVLTree.c +++ b/compiler/bootstrap/ecere/bootstrap/AVLTree.c @@ -398,22 +398,37 @@ return node ? ((((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)- unsigned int __ecereMethod___ecereNameSpace__ecere__com__AVLTree_SetData(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__AVLNode * node, uint64 value) { -if(!((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ +if(!(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__AVLTree->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find])(this, value)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__AVLTree->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(node)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) memcpy((void *)(((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *))), (void *)(uintptr_t)value, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->structSize); else node->key = value; -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__AVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this, (uint64)(uintptr_t)node); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__AVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (uint64)(uintptr_t)node) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return 1; } return 0; @@ -448,7 +463,12 @@ struct __ecereNameSpace__ecere__com__AVLNode * __ecereInstance1 = __ecereNameSpa __ecereInstance1->key = value, __ecereInstance1; }); -if(!((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this, (uint64)(uintptr_t)node)) +if(!(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (uint64)(uintptr_t)node) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) ((node ? __extension__ ({ void * __ecerePtrToDelete = (node); @@ -459,7 +479,12 @@ return node; void __ecereMethod___ecereNameSpace__ecere__com__AVLTree_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__AVLNode * node) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(node)); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); ((node ? __extension__ ({ void * __ecerePtrToDelete = (node); diff --git a/compiler/bootstrap/ecere/bootstrap/Array.c b/compiler/bootstrap/ecere/bootstrap/Array.c index 9f801d5..cb0f935 100644 --- a/compiler/bootstrap/ecere/bootstrap/Array.c +++ b/compiler/bootstrap/ecere/bootstrap/Array.c @@ -631,22 +631,32 @@ __attribute__((unused)) struct __ecereNameSpace__ecere__com__Array * __ecerePoin uint64 data = ((((((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->type == 1) ? ((uint64)(uintptr_t)(uint64 * )item) : ((((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize == 1) ? *((unsigned char *)(uint64 * )item) : ((((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize == 2) ? *((unsigned short *)(uint64 * )item) : ((((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize == 4) ? *((unsigned int *)(uint64 * )item) : *((uint64 *)item))))))); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(data)))), data = 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Array->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, item); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, item) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__Array_Copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * source) { __attribute__((unused)) struct __ecereNameSpace__ecere__com__Array * __ecerePointer___ecereNameSpace__ecere__com__Array = (struct __ecereNameSpace__ecere__com__Array *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0); -__ecerePointer___ecereNameSpace__ecere__com__Array->count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +__ecerePointer___ecereNameSpace__ecere__com__Array->count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(source); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(source) : (int)1; +})); if(__ecerePointer___ecereNameSpace__ecere__com__Array->count > __ecerePointer___ecereNameSpace__ecere__com__Array->minAllocSize) __ecerePointer___ecereNameSpace__ecere__com__Array->array = __ecereNameSpace__ecere__com__eSystem_Renew(__ecerePointer___ecereNameSpace__ecere__com__Array->array, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize * (__ecerePointer___ecereNameSpace__ecere__com__Array->count)); if((((struct __ecereNameSpace__ecere__com__Instance *)(char *)source)->_class == __ecereClass___ecereNameSpace__ecere__com__BuiltInContainer && (*((struct __ecereNameSpace__ecere__com__BuiltInContainer *)source)).type->type != 1) || __ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)source)->_class, __ecereClass___ecereNameSpace__ecere__com__Array)) @@ -658,21 +668,36 @@ else struct __ecereNameSpace__ecere__com__IteratorPointer * i; int c; -for(c = 0, i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(c = 0, i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(source); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(source) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(source, i), c++) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})), c++) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(source, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (uint64)1; +})); (memcpy((char *)__ecerePointer___ecereNameSpace__ecere__com__Array->array + ((c) * ((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize), (((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->type == 1) ? (char *)(uintptr_t)(data) : ((char *)&data + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), ((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[0].__anon1.__anon1.dataTypeClass->typeSize)); } diff --git a/compiler/bootstrap/ecere/bootstrap/BufferedFile.c b/compiler/bootstrap/ecere/bootstrap/BufferedFile.c index ba3a29c..c1e4dbe 100644 --- a/compiler/bootstrap/ecere/bootstrap/BufferedFile.c +++ b/compiler/bootstrap/ecere/bootstrap/BufferedFile.c @@ -442,22 +442,32 @@ void __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_CloseInput(struct { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_CloseOutput(struct __ecereNameSpace__ecere__com__Instance * this) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle) : (void)1; +})); } int __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_Read(struct __ecereNameSpace__ecere__com__Instance * this, unsigned char * buffer, unsigned int size, unsigned int count) @@ -517,16 +527,26 @@ read = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferSize; bufferPos = 0; bufferCount = 0; } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos + totalBytesRead - bufferPos + bufferCount, 0); -read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos + totalBytesRead - bufferPos + bufferCount, 0) : (unsigned int)1; +})); +read = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer + bufferCount, 1, read); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer + bufferCount, 1, read) : (int)1; +})); fileBuffer = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer + bufferPos; bufferCount += read; if(!read) @@ -555,16 +575,26 @@ unsigned int numBytes; unsigned int bytesToBuffer; unsigned int missing; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos, 0); -result = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos, 0) : (unsigned int)1; +})); +result = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, buffer, size, count); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, buffer, size, count) : (int)1; +})); numBytes = result * size; bytesToBuffer = (__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferSize > __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos) ? (__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferSize - __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos) : 0; missing = numBytes - bytesToBuffer; @@ -616,16 +646,26 @@ return 1; else { __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos = 0; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos, 0); -__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos, 0) : (unsigned int)1; +})); +__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer, 1, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferSize); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer, 1, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferSize) : (int)1; +})); if(!__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount) { __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->eof = 1; @@ -640,11 +680,16 @@ return 0; unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_Putc(struct __ecereNameSpace__ecere__com__Instance * this, char ch) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); -int written = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int written = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__BufferedFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, &ch, 1, 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch, 1, 1) : (int)1; +})); return written != 0; } @@ -653,11 +698,16 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_Puts(struc { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); int len = strlen(string); -int written = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int written = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__BufferedFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, string, 1, len); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, string, 1, len) : (int)1; +})); return written == len; } @@ -700,16 +750,26 @@ __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos = 0; } else { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos - __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos + __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount, 0); -read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos - __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos + __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount, 0) : (unsigned int)1; +})); +read = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer + __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount, 1, read); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->buffer + __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount, 1, read) : (int)1; +})); __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos += newPosition - __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos; __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount += read; } @@ -760,11 +820,16 @@ unsigned int __simpleStruct0; __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); unsigned int bytesAhead = (unsigned int)(size - (__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->pos - __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferPos)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, unsigned int size))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, unsigned int size); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, unsigned int size))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Truncate])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, size); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Truncate]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, size) : (unsigned int)1; +})); __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount = (__simpleStruct0 = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->bufferCount, (__simpleStruct0 < bytesAhead) ? __simpleStruct0 : bytesAhead); __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->fileSize = (__simpleStruct1 = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->fileSize, (__simpleStruct1 < size) ? __simpleStruct1 : size); return 1; @@ -774,22 +839,32 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_Lock(struc { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Lock])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, type, start, length, wait); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Lock]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, type, start, length, wait) : (unsigned int)1; +})); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__BufferedFile_Unlock(struct __ecereNameSpace__ecere__com__Instance * this, uint64 start, uint64 length, unsigned int wait) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__BufferedFile * __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile = (struct __ecereNameSpace__ecere__sys__BufferedFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->structSize) : 0); -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 start, uint64 length, unsigned int wait))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 start, uint64 length, unsigned int wait); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 start, uint64 length, unsigned int wait))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Unlock])(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, start, length, wait); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Unlock]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecerePointer___ecereNameSpace__ecere__sys__BufferedFile->handle, start, length, wait) : (unsigned int)1; +})); } struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__sys__BufferedFile_Get_handle(struct __ecereNameSpace__ecere__com__Instance * this) @@ -858,11 +933,16 @@ struct __ecereNameSpace__ecere__com__Instance * handle = __ecereNameSpace__ecere if(handle) { -struct __ecereNameSpace__ecere__com__Instance * f = (f = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__BufferedFile), ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->mode = mode, ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->pos = 0, __ecereProp___ecereNameSpace__ecere__sys__BufferedFile_Set_handle(f, handle), ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->fileSize = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +struct __ecereNameSpace__ecere__com__Instance * f = (f = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__BufferedFile), ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->mode = mode, ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->pos = 0, __ecereProp___ecereNameSpace__ecere__sys__BufferedFile_Set_handle(f, handle), ((struct __ecereNameSpace__ecere__sys__BufferedFile *)(((char *)f + __ecereClass___ecereNameSpace__ecere__sys__File->structSize)))->fileSize = (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = handle; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize])(handle), f); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize]); +__internal_VirtualMethod ? __internal_VirtualMethod(handle) : (unsigned int)1; +})), f); __ecereProp___ecereNameSpace__ecere__sys__File_Set_buffered(handle, 1); result = f; diff --git a/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c b/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c index d78ff8d..f02a246 100644 --- a/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c +++ b/compiler/bootstrap/ecere/bootstrap/BuiltInContainer.c @@ -515,17 +515,47 @@ void __ecereMethod___ecereNameSpace__ecere__com__BuiltInContainer_RemoveAll(stru { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext])(this, i)) -((void (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_Remove])(this, i); +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; +})); } struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__BuiltInContainer_Find(struct __ecereNameSpace__ecere__com__BuiltInContainer * this, uint64 value) { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext])(this, i)) +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetData])(this, i); +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); struct __ecereNameSpace__ecere__com__Class * Dclass = this->type; int result = ((int (*)(void *, void *, void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare])(Dclass, ((Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3) ? &value : (void *)(uintptr_t)value, ((Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3) ? &data : (void *)(uintptr_t)data); @@ -539,8 +569,23 @@ void __ecereMethod___ecereNameSpace__ecere__com__BuiltInContainer_Free(struct __ { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext])(this, i)) -((void (*)(void *, void *))(void *)this->type->_vTbl[__ecereVMethodID_class_OnFree])(this->type, (void *)(uintptr_t)((uint64 (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetData])(this, i)); +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) +((void (*)(void *, void *))(void *)this->type->_vTbl[__ecereVMethodID_class_OnFree])(this->type, (void *)(uintptr_t)(__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__BuiltInContainer *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__ecereClass___ecereNameSpace__ecere__com__BuiltInContainer->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__BuiltInContainer_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +}))); } void __ecereUnregisterModule_BuiltInContainer(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/ecere/bootstrap/Container.c b/compiler/bootstrap/ecere/bootstrap/Container.c index 97f27ee..ebd341e 100644 --- a/compiler/bootstrap/ecere/bootstrap/Container.c +++ b/compiler/bootstrap/ecere/bootstrap/Container.c @@ -457,11 +457,16 @@ void __ecereMethod___ecereNameSpace__ecere__com__Container_OnFree(struct __ecere { if((struct __ecereNameSpace__ecere__com__Instance *)this) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); (__ecereNameSpace__ecere__com__eInstance_DecRef(this), this = 0); } } @@ -498,114 +503,173 @@ struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this) { -return ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +return (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (uint64)1; +})); } void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this->container, this->pointer, value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer, value) : (unsigned int)1; +})); } unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Prev(struct __ecereNameSpace__ecere__com__Iterator * this) { if(this->pointer && this->container) -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetPrev])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetPrev]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); else if(this->container) -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetLast])(this->container); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetLast]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return this->pointer != (((void *)0)); } unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(struct __ecereNameSpace__ecere__com__Iterator * this) { if(this->pointer && this->container) -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); else if(this->container) -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this->container); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return this->pointer != (((void *)0)); } uint64 __ecereMethod___ecereNameSpace__ecere__com__Iterator_GetData(struct __ecereNameSpace__ecere__com__Iterator * this) { -return ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +return (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (uint64)1; +})); } unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_SetData(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value) { -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this->container, this->pointer, value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer, value) : (unsigned int)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__Iterator_Remove(struct __ecereNameSpace__ecere__com__Iterator * this) { if(this->container) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (void)1; +})); this->pointer = (((void *)0)); } void __ecereMethod___ecereNameSpace__ecere__com__Iterator_Free(struct __ecereNameSpace__ecere__com__Iterator * this) { if(this->container) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_FreeIterator])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_FreeIterator]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (void)1; +})); } void __ecereDestructor___ecereNameSpace__ecere__com__Container(struct __ecereNameSpace__ecere__com__Instance * this) { { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); } } void __ecereProp___ecereNameSpace__ecere__com__Container_Set_copySrc(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value) { -if(value) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Copy])(this, value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Copy]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, value) : (void)1; +})); __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__Container_copySrc), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc); } @@ -613,78 +677,133 @@ void __ecereProp___ecereNameSpace__ecere__com__Container_Get_firstIterator(struc { struct __ecereNameSpace__ecere__com__Iterator __simpleStruct0; -*value = (__simpleStruct0.container = (struct __ecereNameSpace__ecere__com__Instance *)this, __simpleStruct0.pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +*value = (__simpleStruct0.container = (struct __ecereNameSpace__ecere__com__Instance *)this, __simpleStruct0.pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this), __simpleStruct0); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})), __simpleStruct0); } void __ecereProp___ecereNameSpace__ecere__com__Container_Get_lastIterator(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Iterator * value) { struct __ecereNameSpace__ecere__com__Iterator __simpleStruct0; -*value = (__simpleStruct0.container = (struct __ecereNameSpace__ecere__com__Instance *)this, __simpleStruct0.pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +*value = (__simpleStruct0.container = (struct __ecereNameSpace__ecere__com__Instance *)this, __simpleStruct0.pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetLast])(this), __simpleStruct0); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetLast]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})), __simpleStruct0); } void __ecereMethod___ecereNameSpace__ecere__com__Container_RemoveAll(struct __ecereNameSpace__ecere__com__Instance * this) { struct __ecereNameSpace__ecere__com__IteratorPointer * i, * next; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this), next = i ? ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})), next = i ? (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i) : (((void *)0)); i; i = next, next = i ? ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})) : (((void *)0)); i; i = next, next = i ? (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i) : (((void *)0))) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})) : (((void *)0))) +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__Container_Copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * source) { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(this); -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(source); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(source) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(source, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(source, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (uint64)1; +})); + +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this, data); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, data) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } } @@ -768,15 +887,25 @@ int __ecereMethod___ecereNameSpace__ecere__com__Container_GetCount(struct __ecer int count = 0; struct __ecereNameSpace__ecere__com__IteratorPointer * i; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) count++; return count; } @@ -785,16 +914,26 @@ void __ecereMethod___ecereNameSpace__ecere__com__Container_Free(struct __ecereNa { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -while((i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +while((i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this))) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})))) +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; +})); } const char * __ecereMethod___ecereNameSpace__ecere__com__Container_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, char * tempString, void * fieldData, unsigned int * needClass) @@ -806,22 +945,37 @@ unsigned int first = 1; struct __ecereNameSpace__ecere__com__IteratorPointer * i; tempString[0] = '\0'; -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { struct __ecereNameSpace__ecere__com__Class * Dclass = class->templateArgs[2].__anon1.__anon1.dataTypeClass; -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); const char * result; itemString[0] = '\0'; @@ -839,29 +993,64 @@ return tempString; void __ecereMethod___ecereNameSpace__ecere__com__Container_TakeOut(struct __ecereNameSpace__ecere__com__Instance * this, const uint64 d) { -struct __ecereNameSpace__ecere__com__IteratorPointer * i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find])(this, d); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, d) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); if(i) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; +})); } static __attribute__((unused)) void UnusedFunction() { int a; -((int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCompare])(__ecereClass_int, (void *)&a, (((void *)0))); -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * newData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCopy])(__ecereClass_int, (void *)&a, (((void *)0))); -((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass_int, (void *)&a, (((void *)0)), (((void *)0)), (((void *)0))); -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnSerialize])(__ecereClass_int, (void *)&a, (((void *)0))); -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnUnserialize])(__ecereClass_int, (void *)&a, (((void *)0))); +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , const void * object); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCompare]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0))) : (int)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , const void * newData); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * newData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCopy]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0))) : (void)1; +})); +(__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0)), (((void *)0)), (((void *)0))) : (const char * )1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnSerialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0))) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnUnserialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0))) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__Container_OnCopy(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance ** this, struct __ecereNameSpace__ecere__com__Instance * source) @@ -870,11 +1059,16 @@ if((struct __ecereNameSpace__ecere__com__Instance *)source) { struct __ecereNameSpace__ecere__com__Instance * container = __ecereNameSpace__ecere__com__eInstance_New(((struct __ecereNameSpace__ecere__com__Instance *)(char *)source)->_class); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Copy])(container, (struct __ecereNameSpace__ecere__com__Instance *)source); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Copy]); +__internal_VirtualMethod ? __internal_VirtualMethod(container, (struct __ecereNameSpace__ecere__com__Instance *)source) : (void)1; +})); (*this) = container; } else @@ -892,22 +1086,37 @@ int (* onCompare)(void *, const void *, const void *) = (void *)Dclass->_vTbl[__ if(byRef) { -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, i); -int result = onCompare(Dclass, ((char *)&value + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), ((char *)&data + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); +int result = ((int (*)(void *, const void *, const void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare])(Dclass, ((char *)&value + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), ((char *)&data + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize))); if(!result) return i; @@ -915,22 +1124,37 @@ return i; } else { -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, i); -int result = onCompare(Dclass, (const void *)(uintptr_t)value, (const void *)(uintptr_t)data); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); +int result = ((int (*)(void *, const void *, const void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare])(Dclass, (const void *)(uintptr_t)value, (const void *)(uintptr_t)data); if(!result) return i; @@ -941,47 +1165,77 @@ return (((void *)0)); void __ecereMethod___ecereNameSpace__ecere__com__Container_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__IteratorPointer * i) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(data)))), data = 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__Container_OnSerialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * channel) { -unsigned int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +unsigned int count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})); struct __ecereNameSpace__ecere__com__IteratorPointer * i; struct __ecereNameSpace__ecere__com__Class * Dclass = class->templateArgs[2].__anon1.__anon1.dataTypeClass; unsigned int isNormalClass = (Dclass->type == 0) && Dclass->structSize; __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Put(channel, __ecereClass_uint, (void *)&count); -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, i); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); struct __ecereNameSpace__ecere__com__Class * Eclass = isNormalClass ? ((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)((uintptr_t)((uint64)(data)))))->_class : Dclass; ((void (*)(void *, void *, void *))(void *)Eclass->_vTbl[__ecereVMethodID_class_OnSerialize])(Eclass, ((Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3) ? ((char *)&data + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (void *)(uintptr_t)data, channel); @@ -1006,11 +1260,16 @@ memset((char *)(uintptr_t)data, 0, Dclass->structSize); else data = (uint64)0; ((void (*)(void *, void *, void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnUnserialize])(Dclass, isStruct ? (void *)(uintptr_t)data : ((char *)&data + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), channel); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(container, data); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(container, data) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } if(isStruct) (__ecereNameSpace__ecere__com__eSystem_Delete((void *)(uintptr_t)data), data = 0); @@ -1031,11 +1290,16 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Find(struct __ if(this->container) { __ecereMethod___ecereNameSpace__ecere__com__Iterator_Free(this); -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find])(this->container, value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } return this->pointer != (((void *)0)); } @@ -1047,11 +1311,16 @@ if(this->container) unsigned int justAdded = 0; __ecereMethod___ecereNameSpace__ecere__com__Iterator_Free(this); -this->pointer = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ +this->pointer = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition])(this->container, index, create, &justAdded); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, index, create, &justAdded) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return !justAdded && this->pointer != (((void *)0)); } return 0; diff --git a/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c b/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c index 2151d2c..3ae5f6e 100644 --- a/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c +++ b/compiler/bootstrap/ecere/bootstrap/CustomAVLTree.c @@ -988,7 +988,12 @@ void __ecereMethod___ecereNameSpace__ecere__com__CustomAVLTree_Delete(struct __e __attribute__((unused)) struct __ecereNameSpace__ecere__com__CustomAVLTree * __ecerePointer___ecereNameSpace__ecere__com__CustomAVLTree = (struct __ecereNameSpace__ecere__com__CustomAVLTree *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0); struct __ecereNameSpace__ecere__com__AVLNode * item = (struct __ecereNameSpace__ecere__com__AVLNode *)_item; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, _item); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, _item) : (void)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(item)))), item = 0); } diff --git a/compiler/bootstrap/ecere/bootstrap/DualPipe.c b/compiler/bootstrap/ecere/bootstrap/DualPipe.c index 9bf44b0..a18b23c 100644 --- a/compiler/bootstrap/ecere/bootstrap/DualPipe.c +++ b/compiler/bootstrap/ecere/bootstrap/DualPipe.c @@ -559,63 +559,108 @@ void __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_CloseInput(struct __ec { __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); -(__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) != (((void *)0))) ? ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput])(this) : DualPipe_CloseInput(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); +(__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) != (((void *)0))) ? (__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})) : DualPipe_CloseInput(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); } void __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_CloseOutput(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); -(__ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) != (((void *)0))) ? ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput])(this) : DualPipe_CloseOutput(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); +(__ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) != (((void *)0))) ? (__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})) : DualPipe_CloseOutput(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); } int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Write(struct __ecereNameSpace__ecere__com__Instance * this, const unsigned char * buffer, unsigned int size, unsigned int count) { __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); -return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, buffer, size, count) : DualPipe_Write(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, buffer, size, count); +return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, buffer, size, count) : (int)1; +})) : DualPipe_Write(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, buffer, size, count); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Getc(struct __ecereNameSpace__ecere__com__Instance * this, char * ch) { __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); -return __ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) ? ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, ch) : DualPipe_Getc(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, ch); +return __ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) ? (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ch) : (unsigned int)1; +})) : DualPipe_Getc(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, ch); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Putc(struct __ecereNameSpace__ecere__com__Instance * this, char ch) { __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); -return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc])(this, ch) : DualPipe_Putc(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, ch); +return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ch) : (unsigned int)1; +})) : DualPipe_Putc(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, ch); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Puts(struct __ecereNameSpace__ecere__com__Instance * this, const char * string) { __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); -return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? (((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(this, string), __ecereMethod___ecereNameSpace__ecere__sys__File_Flush(this)) : DualPipe_Puts(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, string); +return __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this) ? ((__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))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, string) : (unsigned int)1; +})), __ecereMethod___ecereNameSpace__ecere__sys__File_Flush(this)) : DualPipe_Puts(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, string); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Seek(struct __ecereNameSpace__ecere__com__Instance * this, int pos, int mode) { __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); -return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(this, pos, mode) : DualPipe_Seek(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, pos, mode); +return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, pos, mode) : (unsigned int)1; +})) : DualPipe_Seek(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp, pos, mode); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Tell(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); -return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Tell])(this) : DualPipe_Tell(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); +return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Tell]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +})) : DualPipe_Tell(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetSize(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); -return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize])(this) : DualPipe_GetSize(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); +return (__ecereProp___ecereNameSpace__ecere__sys__File_Get_input(this) || __ecereProp___ecereNameSpace__ecere__sys__File_Get_output(this)) ? (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__ecereClass___ecereNameSpace__ecere__sys__File->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +})) : DualPipe_GetSize(__ecerePointer___ecereNameSpace__ecere__sys__DualPipe->dp); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetLinePeek(struct __ecereNameSpace__ecere__com__Instance * this, char * s, int max, int * charsRead) @@ -624,20 +669,30 @@ __attribute__((unused)) struct __ecereNameSpace__ecere__sys__DualPipe * __ecereP char ch = 0; int c = 0; -while(c < max - 1 && __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Peek(this) && ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ +while(c < max - 1 && __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_Peek(this) && (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, &ch) && ch != '\n') +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch) : (unsigned int)1; +})) && ch != '\n') if(ch != '\r') s[c++] = ch; s[c] = '\0'; *charsRead = c; -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this) || ch == '\n'; +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +})) || ch == '\n'; } void __ecereRegisterModule_DualPipe(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/ecere/bootstrap/File.c b/compiler/bootstrap/ecere/bootstrap/File.c index 82d2fc1..42163f7 100644 --- a/compiler/bootstrap/ecere/bootstrap/File.c +++ b/compiler/bootstrap/ecere/bootstrap/File.c @@ -793,22 +793,32 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__File_ReadData(struct __ { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePointer___ecereNameSpace__ecere__sys__File = (struct __ecereNameSpace__ecere__sys__File *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->offset) : 0); -return ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +return (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(this, bytes, 1, numBytes); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, bytes, 1, numBytes) : (int)1; +})); } unsigned int __ecereMethod___ecereNameSpace__ecere__sys__File_WriteData(struct __ecereNameSpace__ecere__com__Instance * this, const unsigned char * bytes, unsigned int numBytes) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePointer___ecereNameSpace__ecere__sys__File = (struct __ecereNameSpace__ecere__sys__File *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->offset) : 0); -return ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +return (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, bytes, 1, numBytes); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, bytes, 1, numBytes) : (int)1; +})); } const char * __ecereMethod___ecereNameSpace__ecere__sys__File_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, char * tempString, void * fieldData, unsigned int * needClass) @@ -817,11 +827,16 @@ __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePoint if((struct __ecereNameSpace__ecere__com__Instance *)this) { -__ecereNameSpace__ecere__sys__PrintSize(tempString, ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +__ecereNameSpace__ecere__sys__PrintSize(tempString, (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize])(this), 2); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +})), 2); return tempString; } return (((void *)0)); @@ -960,11 +975,16 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__File_Unlock(struct __ec { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePointer___ecereNameSpace__ecere__sys__File = (struct __ecereNameSpace__ecere__sys__File *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->offset) : 0); -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int type, uint64 start, uint64 length, unsigned int wait))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Lock])(this, 0, start, length, wait); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Lock]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, 0, start, length, wait) : (unsigned int)1; +})); } int __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(struct __ecereNameSpace__ecere__com__Instance * this, const char * format, ...) @@ -980,11 +1000,16 @@ va_list args; __builtin_va_start(args, format); vsnprintf(text, sizeof (text), format, args); text[sizeof (text) - 1] = 0; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +if((__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 = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(this, text)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, text) : (unsigned int)1; +}))) result = strlen(text); __builtin_va_end(args); } @@ -1006,11 +1031,16 @@ int c = 0; unsigned int result = 1; s[c] = 0; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +}))) { result = 0; } @@ -1020,11 +1050,16 @@ while(c < max - 1) { char ch = 0; -if(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ +if(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, &ch)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch) : (unsigned int)1; +}))) { result = 0; break; @@ -1050,22 +1085,32 @@ unsigned int result = 1; *string = 0; while(1) { -if(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ +if(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, &ch)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch) : (unsigned int)1; +}))) { result = 0; break; } if((ch != '\n') && (ch != '\r') && (ch != ' ') && (ch != ',') && (ch != '\t')) break; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +}))) break; } if(result) @@ -1084,11 +1129,16 @@ c--; } else string[c] = ch; -if(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ +if(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, &ch)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch) : (unsigned int)1; +}))) { c++; result = 0; @@ -1142,11 +1192,16 @@ unsigned int __ecereProp___ecereNameSpace__ecere__sys__File_Get_eof(struct __ece { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePointer___ecereNameSpace__ecere__sys__File = (struct __ecereNameSpace__ecere__sys__File *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->offset) : 0); -return ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +return (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +})); } int __ecereMethod___ecereNameSpace__ecere__sys__File_GetLineEx(struct __ecereNameSpace__ecere__com__Instance * this, char * s, int max, unsigned int * hasNewLineChar) @@ -1155,21 +1210,31 @@ __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePoint int c = 0; s[c] = '\0'; -if(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +if(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +}))) { char ch = '\0'; while(c < max - 1) { -if(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ +if(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char * ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char * ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc])(this, &ch)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Getc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch) : (unsigned int)1; +}))) break; if(ch == '\n') break; @@ -1187,16 +1252,26 @@ void __ecereMethod___ecereNameSpace__ecere__sys__File_Close(struct __ecereNameSp { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__File * __ecerePointer___ecereNameSpace__ecere__sys__File = (struct __ecereNameSpace__ecere__sys__File *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__File->offset) : 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput])(this); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseOutput]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_CloseInput]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__sys__File_PrintLn(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * object, ...) @@ -1207,16 +1282,26 @@ char buffer[4096]; __builtin_va_start(args, object); __ecereNameSpace__ecere__com__PrintStdArgsToBuffer(buffer, sizeof (buffer), class, object, args); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(this, buffer); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, buffer) : (unsigned int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc])(this, '\n'); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, '\n') : (unsigned int)1; +})); __builtin_va_end(args); } @@ -1228,11 +1313,16 @@ char buffer[4096]; __builtin_va_start(args, object); __ecereNameSpace__ecere__com__PrintStdArgsToBuffer(buffer, sizeof (buffer), class, object, args); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(this, buffer); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, buffer) : (unsigned int)1; +})); __builtin_va_end(args); } @@ -1252,11 +1342,16 @@ if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)result)->_class && if(!((struct __ecereNameSpace__ecere__com__Instance *)(char *)result)->_refCount) result->_refCount++; result->_refCount++; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = result; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(result, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(result, 0, 0) : (unsigned int)1; +})); } else result = (((void *)0)); @@ -1347,24 +1442,39 @@ struct __ecereNameSpace__ecere__com__Instance * f = __ecereNameSpace__ecere__sys if(f) { (*this) = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile); -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__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_Eof])(f)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(f) : (unsigned int)1; +}))) { unsigned char buffer[4096]; -unsigned int read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +unsigned int read = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, buffer, 1, sizeof (buffer)); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, buffer, 1, sizeof (buffer)) : (int)1; +})); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = (*this); __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])((*this), buffer, 1, read); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod((*this), buffer, 1, read) : (int)1; +})); } (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); return 1; @@ -1384,28 +1494,48 @@ if(f) unsigned char buffer[65536]; result = 1; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(this, 0, 0); -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, 0, 0) : (unsigned int)1; +})); +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(this)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (unsigned int)1; +}))) { -unsigned int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +unsigned int count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(this, buffer, 1, sizeof (buffer)); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, buffer, 1, sizeof (buffer)) : (int)1; +})); + +if(count && !(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); -if(count && !((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__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_Write])(f, buffer, 1, count)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, buffer, 1, count) : (int)1; +}))) { result = 0; break; @@ -1413,11 +1543,16 @@ break; } (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(this, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, 0, 0) : (unsigned int)1; +})); return result; } diff --git a/compiler/bootstrap/ecere/bootstrap/LinkList.c b/compiler/bootstrap/ecere/bootstrap/LinkList.c index 8085932..8926ff0 100644 --- a/compiler/bootstrap/ecere/bootstrap/LinkList.c +++ b/compiler/bootstrap/ecere/bootstrap/LinkList.c @@ -433,11 +433,16 @@ void __ecereMethod___ecereNameSpace__ecere__com__LinkList_Delete(struct __ecereN { __attribute__((unused)) struct __ecereNameSpace__ecere__com__LinkList * __ecerePointer___ecereNameSpace__ecere__com__LinkList = (struct __ecereNameSpace__ecere__com__LinkList *)(this ? (((char *)this) + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance)) : 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, item); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, item) : (void)1; +})); (__ecereNameSpace__ecere__com__eSystem_Delete(item), item = 0); } @@ -598,11 +603,16 @@ void * item; while((item = ((void * )((uintptr_t)(__ecerePointer___ecereNameSpace__ecere__com__LinkList->first))))) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, ((void *)((uintptr_t)(item)))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ((void *)((uintptr_t)(item)))) : (void)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[3].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(item)))), item = 0); } } diff --git a/compiler/bootstrap/ecere/bootstrap/List.c b/compiler/bootstrap/ecere/bootstrap/List.c index 1c19efc..ba152f7 100644 --- a/compiler/bootstrap/ecere/bootstrap/List.c +++ b/compiler/bootstrap/ecere/bootstrap/List.c @@ -435,18 +435,28 @@ return 1; void __ecereMethod___ecereNameSpace__ecere__com__List_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Link * link) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, (void *)(link)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(link)) : (uint64)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(data)))), data = 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(link)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(link)) : (void)1; +})); } struct __ecereNameSpace__ecere__com__Link * __ecereMethod___ecereNameSpace__ecere__com__List_Insert(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Link * after, uint64 value) @@ -464,17 +474,27 @@ struct __ecereNameSpace__ecere__com__Link * __ecereInstance1 = __ecereNameSpace_ __ecereInstance1->data = ((uint64)(value)), __ecereInstance1; }); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value))__ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Insert])(this, (void *)(after), (uint64)(uintptr_t)link); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value))__ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Insert]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(after), (uint64)(uintptr_t)link) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return link; } struct __ecereNameSpace__ecere__com__Link * __ecereMethod___ecereNameSpace__ecere__com__List_Add(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value) { -return (struct __ecereNameSpace__ecere__com__Link *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value))__extension__ ({ +return (struct __ecereNameSpace__ecere__com__Link *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * after, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Insert])(this, (void *)(((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->last), value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Insert]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->last), value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__List_Free(struct __ecereNameSpace__ecere__com__Instance * this) @@ -483,24 +503,39 @@ void * item; while((item = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first)) { -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, ((void * )((uintptr_t)(item)))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ((void * )((uintptr_t)(item)))) : (uint64)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(data)))), data = 0); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, ((void * )((uintptr_t)(item)))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ((void * )((uintptr_t)(item)))) : (void)1; +})); } } void __ecereMethod___ecereNameSpace__ecere__com__List_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Link * link) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(link)); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(link)) : (void)1; +})); ((link ? __extension__ ({ void * __ecerePtrToDelete = (link); @@ -510,7 +545,12 @@ __ecereClass___ecereNameSpace__ecere__com__Link->Destructor ? __ecereClass___ece struct __ecereNameSpace__ecere__com__Link * __ecereMethod___ecereNameSpace__ecere__com__List_Find(struct __ecereNameSpace__ecere__com__Instance * this, const uint64 value) { -return (struct __ecereNameSpace__ecere__com__Link *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__ecereClass___ecereNameSpace__ecere__com__Container->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find])(this, value); +return (struct __ecereNameSpace__ecere__com__Link *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__ecereClass___ecereNameSpace__ecere__com__Container->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } void __ecereUnregisterModule_List(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/ecere/bootstrap/Map.c b/compiler/bootstrap/ecere/bootstrap/Map.c index 9f30e77..cd341e3 100644 --- a/compiler/bootstrap/ecere/bootstrap/Map.c +++ b/compiler/bootstrap/ecere/bootstrap/Map.c @@ -573,25 +573,40 @@ struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; uint64 __ecereProp___ecereNameSpace__ecere__com__MapIterator_Get_value(struct __ecereNameSpace__ecere__com__MapIterator * this) { -return ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +return (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this->container, this->pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer) : (uint64)1; +})); } void __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_value(struct __ecereNameSpace__ecere__com__MapIterator * this, uint64 value) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this->container, this->pointer, value); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->container, this->pointer, value) : (unsigned int)1; +})); } struct __ecereNameSpace__ecere__com__MapNode * __ecereMethod___ecereNameSpace__ecere__com__Map_Find(struct __ecereNameSpace__ecere__com__Instance * this, uint64 value) { -return (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__ecereClass___ecereNameSpace__ecere__com__Container->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find])(this, value); +return (struct __ecereNameSpace__ecere__com__MapNode *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 value))__ecereClass___ecereNameSpace__ecere__com__Container->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Find]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } uint64 __ecereMethod___ecereNameSpace__ecere__com__Map_GetKey(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) @@ -625,53 +640,97 @@ return 1; void __ecereMethod___ecereNameSpace__ecere__com__Map_FreeKey(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) { -if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) -{ -struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass; +uint64 value = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); -((void (*)(void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnFree])(Tclass, (((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *)))); -} -else -(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(node))))), __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(node, 0)); +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; +})); + +(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); } void __ecereProp___ecereNameSpace__ecere__com__Map_Set_mapSrc(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value) { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(this); -if(value && __ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)value)->_class, __ecereClass___ecereNameSpace__ecere__com__Map)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); +if(__ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)value)->_class, __ecereClass___ecereNameSpace__ecere__com__Map)) { -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = value; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(value); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(value) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = value; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(value, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(value, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { struct __ecereNameSpace__ecere__com__MapNode * srcNode = (struct __ecereNameSpace__ecere__com__MapNode *)i; -struct __ecereNameSpace__ecere__com__MapNode * destNode = (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ +struct __ecereNameSpace__ecere__com__MapNode * destNode = (struct __ecereNameSpace__ecere__com__MapNode *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition])(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(srcNode), 1, (((void *)0))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(srcNode), 1, (((void *)0))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); + +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this, (void *)(destNode), ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(destNode), (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, (void *)(srcNode))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(srcNode)) : (uint64)1; +}))) : (unsigned int)1; +})); } } __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__com__Map_mapSrc), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__com__Map_mapSrc); @@ -723,17 +782,27 @@ struct __ecereNameSpace__ecere__com__MapNode * newNode = (struct __ecereNameSpac if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1 || ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->type == 1) { -struct __ecereNameSpace__ecere__com__MapNode * realNode = (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ +struct __ecereNameSpace__ecere__com__MapNode * realNode = (struct __ecereNameSpace__ecere__com__MapNode *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition])(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(newNode), 1, (((void *)0))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(newNode), 1, (((void *)0))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); + +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this, (void *)(realNode), __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_value(newNode)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(realNode), __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_value(newNode)) : (unsigned int)1; +})); return newNode; } else @@ -749,7 +818,12 @@ if((Tclass->type == 1000 && !Tclass->byValueSystemClass) || Tclass->type == 2 || onCopy(Tclass, (unsigned char *)&newNode->key + __ENDIAN_PAD(Tclass->typeSize), (unsigned char *)&newNode->key + __ENDIAN_PAD(Tclass->typeSize)); else onCopy(Tclass, (unsigned char *)&newNode->key + __ENDIAN_PAD(sizeof(void *)), (void *)(uintptr_t)(uint64)(newNode->key)); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this, (uint64)(uintptr_t)newNode); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (uint64)(uintptr_t)newNode) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); return newNode; } else @@ -764,60 +838,170 @@ return (((void *)0)); } } +void __ecereMethod___ecereNameSpace__ecere__com__Map_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) +{ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); +if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) +{ +struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass; + +((void (*)(void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnFree])(Tclass, (((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *)))); +} +else +(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(node))))), __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(node, 0)); +((node ? __extension__ ({ +void * __ecerePtrToDelete = (node); + +__ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); +}) : 0), node = 0); +} + +void __ecereMethod___ecereNameSpace__ecere__com__Map_Free(struct __ecereNameSpace__ecere__com__Instance * this) +{ +struct __ecereNameSpace__ecere__com__MapNode * node = (void *)(((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->root); + +while(node) +{ +if(node->left) +{ +struct __ecereNameSpace__ecere__com__MapNode * left = node->left; + +node->left = (((void *)0)); +node = left; +} +else if(node->right) +{ +struct __ecereNameSpace__ecere__com__MapNode * right = node->right; + +node->right = (((void *)0)); +node = right; +} +else +{ +struct __ecereNameSpace__ecere__com__MapNode * parent = node->parent; +uint64 value = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; +})); + +(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); +((node ? __extension__ ({ +void * __ecerePtrToDelete = (node); + +__ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); +}) : 0), node = 0); +node = parent; +} +} +((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->root = (((void *)0)); +((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->count = 0; +} + void __ecereMethod___ecereNameSpace__ecere__com__Map_Copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * source) { struct __ecereNameSpace__ecere__com__IteratorPointer * i; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); if(!__ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)source)->_class, __ecereClass___ecereNameSpace__ecere__com__Map)) { -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(source); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(source) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(source, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { -struct __ecereNameSpace__ecere__com__MapNode * srcNode = (struct __ecereNameSpace__ecere__com__MapNode *)((uintptr_t)((uint64)(((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +struct __ecereNameSpace__ecere__com__MapNode * srcNode = (struct __ecereNameSpace__ecere__com__MapNode *)((uintptr_t)((uint64)((__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(source, i)))); -struct __ecereNameSpace__ecere__com__MapNode * destNode = (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(source, i) : (uint64)1; +}))))); +struct __ecereNameSpace__ecere__com__MapNode * destNode = (struct __ecereNameSpace__ecere__com__MapNode *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition])(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(srcNode), 1, (((void *)0))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(srcNode), 1, (((void *)0))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); + +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(this, (void *)(destNode), __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_value(srcNode)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(destNode), __ecereProp___ecereNameSpace__ecere__com__MapNode_Get_value(srcNode)) : (unsigned int)1; +})); } if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)source)->_class == __ecereClass___ecereNameSpace__ecere__com__BuiltInContainer) -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = source; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(source); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(source) : (void)1; +})); } } void __ecereMethod___ecereNameSpace__ecere__com__Map_OnSerialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * channel) { -unsigned int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +unsigned int count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(this); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})); struct __ecereNameSpace__ecere__com__IteratorPointer * i; struct __ecereNameSpace__ecere__com__Class * Kclass = class->templateArgs[5].__anon1.__anon1.dataTypeClass; struct __ecereNameSpace__ecere__com__Class * Dclass = class->templateArgs[6].__anon1.__anon1.dataTypeClass; @@ -825,23 +1009,38 @@ unsigned int kIsNormalClass = (Kclass->type == 0) && Kclass->structSize; unsigned int dIsNormalClass = (Dclass->type == 0) && Dclass->structSize; __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Put(channel, __ecereClass_uint, (void *)&count); -for(i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); i; i = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); i; i = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { struct __ecereNameSpace__ecere__com__MapNode * srcNode = (struct __ecereNameSpace__ecere__com__MapNode *)i; uint64 key = __ecereMethod___ecereNameSpace__ecere__com__Map_GetKey(this, (struct __ecereNameSpace__ecere__com__MapNode *)srcNode); -uint64 data = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 data = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, (void *)(srcNode)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(srcNode)) : (uint64)1; +})); struct __ecereNameSpace__ecere__com__Class * kEclass = kIsNormalClass ? ((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)((uintptr_t)((uint64)(key)))))->_class : Kclass; struct __ecereNameSpace__ecere__com__Class * dEclass = dIsNormalClass ? ((struct __ecereNameSpace__ecere__com__Instance *)(char *)((struct __ecereNameSpace__ecere__com__Instance *)((uintptr_t)((uint64)(data)))))->_class : Dclass; @@ -866,16 +1065,26 @@ uint64 data = (uint64)0; ((void (*)(void *, void *, void *))(void *)Kclass->_vTbl[__ecereVMethodID_class_OnUnserialize])(Kclass, ((char *)&key + __ENDIAN_PAD(class->templateArgs[5].__anon1.__anon1.dataTypeClass->typeSize)), channel); ((void (*)(void *, void *, void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnUnserialize])(Dclass, ((char *)&data + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), channel); -destNode = (struct __ecereNameSpace__ecere__com__MapNode *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ +destNode = (struct __ecereNameSpace__ecere__com__MapNode *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, const uint64 pos, unsigned int create, unsigned int * justAdded))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition])(container, key, 1, (((void *)0))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetAtPosition]); +__internal_VirtualMethod ? __internal_VirtualMethod(container, key, 1, (((void *)0))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer, uint64 data))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = container; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData])(container, (void *)(destNode), data); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_SetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(container, (void *)(destNode), data) : (unsigned int)1; +})); } (*this) = container; } diff --git a/compiler/bootstrap/ecere/bootstrap/System.c b/compiler/bootstrap/ecere/bootstrap/System.c index 3701ed8..18bbee8 100644 --- a/compiler/bootstrap/ecere/bootstrap/System.c +++ b/compiler/bootstrap/ecere/bootstrap/System.c @@ -731,11 +731,16 @@ struct __ecereNameSpace__ecere__com__Instance * f; if((f = __ecereNameSpace__ecere__sys__FileOpen(__ecereNameSpace__ecere__sys__globalSystem.logFile, 3))) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, text); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, text) : (unsigned int)1; +})); (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); } break; diff --git a/compiler/bootstrap/ecere/bootstrap/TempFile.c b/compiler/bootstrap/ecere/bootstrap/TempFile.c index 15adf95..6529fac 100644 --- a/compiler/bootstrap/ecere/bootstrap/TempFile.c +++ b/compiler/bootstrap/ecere/bootstrap/TempFile.c @@ -426,11 +426,16 @@ return written / size; unsigned int __ecereMethod___ecereNameSpace__ecere__sys__TempFile_Getc(struct __ecereNameSpace__ecere__com__Instance * this, char * ch) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__TempFile * __ecerePointer___ecereNameSpace__ecere__sys__TempFile = (struct __ecereNameSpace__ecere__sys__TempFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__TempFile->offset) : 0); -int read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int read = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(this, ch, 1, 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ch, 1, 1) : (int)1; +})); return !__ecerePointer___ecereNameSpace__ecere__sys__TempFile->eof && read != 0; } @@ -438,11 +443,16 @@ return !__ecerePointer___ecereNameSpace__ecere__sys__TempFile->eof && read != 0; unsigned int __ecereMethod___ecereNameSpace__ecere__sys__TempFile_Putc(struct __ecereNameSpace__ecere__com__Instance * this, char ch) { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__TempFile * __ecerePointer___ecereNameSpace__ecere__sys__TempFile = (struct __ecereNameSpace__ecere__sys__TempFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__TempFile->offset) : 0); -int written = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int written = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, &ch, 1, 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, &ch, 1, 1) : (int)1; +})); return written != 0; } @@ -451,11 +461,16 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__sys__TempFile_Puts(struct __ { __attribute__((unused)) struct __ecereNameSpace__ecere__sys__TempFile * __ecerePointer___ecereNameSpace__ecere__sys__TempFile = (struct __ecereNameSpace__ecere__sys__TempFile *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__TempFile->offset) : 0); int len = string ? strlen(string) : 0; -int written = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int written = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(this, string, 1, len); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, string, 1, len) : (int)1; +})); return written == len; } diff --git a/compiler/bootstrap/ecere/bootstrap/dataTypes.c b/compiler/bootstrap/ecere/bootstrap/dataTypes.c index 9969146..d9785b8 100644 --- a/compiler/bootstrap/ecere/bootstrap/dataTypes.c +++ b/compiler/bootstrap/ecere/bootstrap/dataTypes.c @@ -694,24 +694,63 @@ else { int c; int last = 0; +unsigned int checkFor1 = 1, checkFor9 = 1; int numDigits = 7, num = 1; +int first9 = 0; char format[10]; +char * dot; +int len; while(numDigits && (float)num < f) numDigits--, num *= 10; sprintf(format, "%%.%df", numDigits); sprintf(string, format, f); -c = strlen(string) - 1; +dot = strchr(string, '.'); +len = strlen(string); +c = len - 1; for(; c >= 0; c--) { -if(string[c] != '0') +char ch = string[c]; + +if(ch != '0' && dot) +{ +if(ch == '1' && string + c - dot >= 6 && c == len - 1 && checkFor1) +checkFor1 = 0; +else if(ch == '9' && string + c - dot >= 6 && c == len - 1 && checkFor9) +first9 = c; +else +{ last = ((last > c) ? last : c); -if(string[c] == '.') +checkFor9 = 0; +checkFor1 = 0; +} +} +if(ch == '.') { if(last == c) string[c] = 0; else +{ string[last + 1] = 0; +if(first9) +{ +while(--first9 > 0) +{ +if(first9 != c) +if(string[first9] < '9') +{ +string[first9]++; +break; +} +} +if(first9 < c) +{ +string[c - 1] = '1'; +first9 = c; +} +string[first9] = 0; +} +} break; } } @@ -1173,22 +1212,42 @@ static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Serialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * data) { -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnSerialize])(class, data, this); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnSerialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(class, data, this) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Unserialize(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data) { -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnUnserialize])(class, data, this); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnUnserialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(class, data, this) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Put(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, const void * data) { -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnSerialize])(class, data, this); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnSerialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(class, data, this) : (void)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Get(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data) { -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnUnserialize])(class, data, this); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * channel); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * channel))class->_vTbl[__ecereVMethodID_class_OnUnserialize]); +__internal_VirtualMethod ? __internal_VirtualMethod(class, data, this) : (void)1; +})); } const char * __ecereNameSpace__ecere__com__Enum_OnGetString(struct __ecereNameSpace__ecere__com__Class * _class, void * data, char * tempString, void * fieldData, unsigned int * needClass) @@ -1465,7 +1524,12 @@ void __ecereMethod___ecereNameSpace__ecere__com__StaticString_OnFree(struct __ec int __ecereNameSpace__ecere__com__PrintStdArgsToBuffer(char * buffer, int maxLen, struct __ecereNameSpace__ecere__com__Class * class, const void * object, va_list args) { int len = 0; -const char * result = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))class->_vTbl[__ecereVMethodID_class_OnGetString])(class, object, buffer, (((void *)0)), (((void *)0))); +const char * result = (__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))class->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(class, object, buffer, (((void *)0)), (((void *)0))) : (const char * )1; +})); if(result) { @@ -1535,20 +1599,30 @@ struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; void __ecereNameSpace__ecere__com__Byte_OnSerialize(struct __ecereNameSpace__ecere__com__Class * _class, unsigned char * data, struct __ecereNameSpace__ecere__com__Instance * channel) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, data, 1); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, data, 1) : (unsigned int)1; +})); } void __ecereNameSpace__ecere__com__Byte_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, unsigned char * data, struct __ecereNameSpace__ecere__com__Instance * channel) { -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, data, 1) != 1) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, data, 1) : (unsigned int)1; +})) != 1) *data = 0; } @@ -1561,11 +1635,16 @@ unsigned char bytes[4]; (bytes)[2] = (unsigned char)(((*data) >> 8) & 0xFF); (bytes)[3] = (unsigned char)((*data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 4); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 4) : (unsigned int)1; +})); } void __ecereNameSpace__ecere__com__IntPtr32_OnSerialize(struct __ecereNameSpace__ecere__com__Class * _class, int data, struct __ecereNameSpace__ecere__com__Instance * channel) @@ -1577,22 +1656,32 @@ unsigned char bytes[4]; (bytes)[2] = (unsigned char)(((data) >> 8) & 0xFF); (bytes)[3] = (unsigned char)((data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 4); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 4) : (unsigned int)1; +})); } void __ecereNameSpace__ecere__com__Int_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, int * data, struct __ecereNameSpace__ecere__com__Instance * channel) { unsigned char bytes[4]; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, bytes, 4) == 4) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 4) : (unsigned int)1; +})) == 4) *data = (unsigned int)(((bytes)[0] << 24) | ((bytes)[1] << 16) | ((bytes)[2] << 8) | (bytes)[3]); else *data = 0; @@ -1611,11 +1700,16 @@ unsigned char bytes[8]; (bytes)[6] = (unsigned char)(((*data) >> 8) & 0xFF); (bytes)[7] = (unsigned char)((*data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 8); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 8) : (unsigned int)1; +})); } static void __ecereNameSpace__ecere__com__IntPtr64_OnSerialize(struct __ecereNameSpace__ecere__com__Class * _class, long long data, struct __ecereNameSpace__ecere__com__Instance * channel) @@ -1631,22 +1725,32 @@ unsigned char bytes[8]; (bytes)[6] = (unsigned char)(((data) >> 8) & 0xFF); (bytes)[7] = (unsigned char)((data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 8); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 8) : (unsigned int)1; +})); } void __ecereNameSpace__ecere__com__Int64_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, long long * data, struct __ecereNameSpace__ecere__com__Instance * channel) { unsigned char bytes[8]; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, bytes, 8) == 8) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 8) : (unsigned int)1; +})) == 8) *data = (((uint64)(bytes)[0] << 56) | ((uint64)(bytes)[1] << 48) | ((uint64)(bytes)[2] << 40) | ((uint64)(bytes)[3] << 32) | ((uint64)(bytes)[4] << 24) | ((bytes)[5] << 16) | ((bytes)[6] << 8) | (bytes)[7]); else *data = 0; @@ -1659,22 +1763,32 @@ unsigned char bytes[2]; (bytes)[0] = (unsigned char)(((*data) >> 8) & 0xFF); (bytes)[1] = (unsigned char)(((*data)) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 2); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 2) : (unsigned int)1; +})); } void __ecereNameSpace__ecere__com__Word_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, unsigned short * data, struct __ecereNameSpace__ecere__com__Instance * channel) { unsigned char bytes[2]; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, bytes, 2) == 2) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 2) : (unsigned int)1; +})) == 2) *data = (unsigned short)(((bytes)[0] << 8) | (bytes)[1]); else *data = 0; @@ -1689,22 +1803,32 @@ unsigned char bytes[4]; (bytes)[2] = (unsigned char)(((*(unsigned int *)data) >> 8) & 0xFF); (bytes)[3] = (unsigned char)((*(unsigned int *)data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 4); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 4) : (unsigned int)1; +})); } static void __ecereNameSpace__ecere__com__Float_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, float * data, struct __ecereNameSpace__ecere__com__Instance * channel) { unsigned char bytes[4]; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, bytes, 4) == 4) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 4) : (unsigned int)1; +})) == 4) *(unsigned int *)data = (unsigned int)(((bytes)[0] << 24) | ((bytes)[1] << 16) | ((bytes)[2] << 8) | (bytes)[3]); else *data = 0; @@ -1723,22 +1847,32 @@ unsigned char bytes[8]; (bytes)[6] = (unsigned char)(((*(uint64 *)data) >> 8) & 0xFF); (bytes)[7] = (unsigned char)((*(uint64 *)data) & 0xFF); ; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, bytes, 8); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 8) : (unsigned int)1; +})); } static void __ecereNameSpace__ecere__com__Double_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, double * data, struct __ecereNameSpace__ecere__com__Instance * channel) { unsigned char bytes[8]; -if(((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +if((__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, bytes, 8) == 8) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, bytes, 8) : (unsigned int)1; +})) == 8) *(uint64 *)data = (((uint64)(bytes)[0] << 56) | ((uint64)(bytes)[1] << 48) | ((uint64)(bytes)[2] << 40) | ((uint64)(bytes)[3] << 32) | ((uint64)(bytes)[4] << 24) | ((bytes)[5] << 16) | ((bytes)[6] << 8) | (bytes)[7]); else *data = 0; @@ -1748,11 +1882,16 @@ void __ecereMethod___ecereNameSpace__ecere__com__StaticString_OnSerialize(struct { unsigned int len = this ? strlen(this->string) : 0; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, this ? this->string : "", len + 1); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, this ? this->string : "", len + 1) : (unsigned int)1; +})); } void __ecereMethod___ecereNameSpace__ecere__com__StaticString_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__StaticString * this, struct __ecereNameSpace__ecere__com__Instance * channel) @@ -1761,11 +1900,16 @@ if(this) { int c; -for(c = 0; ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +for(c = 0; (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, &(*this).string[c], 1) && (*this).string[c]; c++) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, &(*this).string[c], 1) : (unsigned int)1; +})) && (*this).string[c]; c++) ; (*this).string[c++] = '\0'; } @@ -1775,11 +1919,16 @@ static void __ecereNameSpace__ecere__com__String_OnSerialize(struct __ecereNameS { int len = string ? strlen(string) : 0; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData])(channel, string ? string : "", len + 1); +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_WriteData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, string ? string : "", len + 1) : (unsigned int)1; +})); } static void __ecereNameSpace__ecere__com__String_OnUnserialize(struct __ecereNameSpace__ecere__com__Class * _class, char ** string, struct __ecereNameSpace__ecere__com__Instance * channel) @@ -1790,11 +1939,16 @@ int c; unsigned int size = 64; *string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (size)); -for(c = 0; ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ +for(c = 0; (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * data, unsigned int numBytes))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = channel; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__IOChannel->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData])(channel, &(*string)[c], 1) && (*string)[c]; c++) +})[__ecereVMethodID___ecereNameSpace__ecere__com__IOChannel_ReadData]); +__internal_VirtualMethod ? __internal_VirtualMethod(channel, &(*string)[c], 1) : (unsigned int)1; +})) && (*string)[c]; c++) { if(c == size - 1) { @@ -2195,19 +2349,54 @@ int __internalValue001; int __internalValue000; int a; -((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass_int, (void *)&a, 0, 0, 0); -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnFree])(__ecereClass_int, (void *)&a); -((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * newData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCopy])(__ecereClass_int, (void *)&a, __extension__ ({ +(__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, 0, 0, 0) : (const char * )1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * ); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnFree]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , const void * newData); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * newData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCopy]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, __extension__ ({ __internalValue000 = 0; &__internalValue000; +})) : (void)1; })); -((int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCompare])(__ecereClass_int, (void *)&a, __extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , const void * object); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnCompare]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, __extension__ ({ __internalValue001 = 0; &__internalValue001; +})) : (int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * window, void * object); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * window, void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnSaveEdit]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0)), 0) : (unsigned int)1; +})); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__Instance * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , struct __ecereNameSpace__ecere__com__Instance * dataBox, struct __ecereNameSpace__ecere__com__Instance * obsolete, int x, int y, int w, int h, void * userData); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__Instance * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * dataBox, struct __ecereNameSpace__ecere__com__Instance * obsolete, int x, int y, int w, int h, void * userData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnEdit]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0)), (((void *)0)), 0, 0, 0, 20, 0) : (struct __ecereNameSpace__ecere__com__Instance *)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , const char * string); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const char * string))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetDataFromString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, (((void *)0))) : (unsigned int)1; })); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * window, void * object))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnSaveEdit])(__ecereClass_int, (void *)&a, (((void *)0)), 0); -((struct __ecereNameSpace__ecere__com__Instance * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, struct __ecereNameSpace__ecere__com__Instance * dataBox, struct __ecereNameSpace__ecere__com__Instance * obsolete, int x, int y, int w, int h, void * userData))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnEdit])(__ecereClass_int, (void *)&a, (((void *)0)), (((void *)0)), 0, 0, 0, 20, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, const char * string))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetDataFromString])(__ecereClass_int, (void *)&a, (((void *)0))); } static const char * __ecereNameSpace__ecere__com__OnGetString(struct __ecereNameSpace__ecere__com__Class * _class, void * data, char * tempString, void * fieldData, unsigned int * needClass) diff --git a/compiler/bootstrap/ecere/bootstrap/i18n.c b/compiler/bootstrap/ecere/bootstrap/i18n.c index 811505c..6816066 100644 --- a/compiler/bootstrap/ecere/bootstrap/i18n.c +++ b/compiler/bootstrap/ecere/bootstrap/i18n.c @@ -550,11 +550,16 @@ if(f) { unsigned int magic = 0; -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &magic, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &magic, sizeof(unsigned int), 1) : (int)1; +})); if(magic == 0x950412de || magic == 0xde120495) { struct __ecereNameSpace__ecere__com__Instance * textMap; @@ -565,46 +570,76 @@ unsigned int origStrings = 0, transStrings = 0; unsigned int hashingSize = 0, hashingOffset = 0; int c; -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &revision, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &revision, sizeof(unsigned int), 1) : (int)1; +})); if(swap) revision = ((((revision) & 0x000000ff) << 24) | (((revision) & 0x0000ff00) << 8) | (((revision) & 0x00ff0000) >> 8) | (((revision) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &numStrings, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &numStrings, sizeof(unsigned int), 1) : (int)1; +})); if(swap) numStrings = ((((numStrings) & 0x000000ff) << 24) | (((numStrings) & 0x0000ff00) << 8) | (((numStrings) & 0x00ff0000) >> 8) | (((numStrings) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &origStrings, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &origStrings, sizeof(unsigned int), 1) : (int)1; +})); if(swap) origStrings = ((((origStrings) & 0x000000ff) << 24) | (((origStrings) & 0x0000ff00) << 8) | (((origStrings) & 0x00ff0000) >> 8) | (((origStrings) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &transStrings, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &transStrings, sizeof(unsigned int), 1) : (int)1; +})); if(swap) transStrings = ((((transStrings) & 0x000000ff) << 24) | (((transStrings) & 0x0000ff00) << 8) | (((transStrings) & 0x00ff0000) >> 8) | (((transStrings) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &hashingSize, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &hashingSize, sizeof(unsigned int), 1) : (int)1; +})); if(swap) hashingSize = ((((hashingSize) & 0x000000ff) << 24) | (((hashingSize) & 0x0000ff00) << 8) | (((hashingSize) & 0x00ff0000) >> 8) | (((hashingSize) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &hashingOffset, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &hashingOffset, sizeof(unsigned int), 1) : (int)1; +})); if(swap) hashingOffset = ((((hashingOffset) & 0x000000ff) << 24) | (((hashingOffset) & 0x0000ff00) << 8) | (((hashingOffset) & 0x00ff0000) >> 8) | (((hashingOffset) & 0xff000000) >> 24)); if(!__ecereNameSpace__ecere__moduleMaps) @@ -629,66 +664,116 @@ for(c = 0; c < numStrings; c++) unsigned int len = 0, offset = 0; char * original = (((void *)0)), * translated = (((void *)0)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__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_Seek])(f, origStrings + c * 2 * sizeof(unsigned int), 0); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, origStrings + c * 2 * sizeof(unsigned int), 0) : (unsigned int)1; +})); +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &len, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &len, sizeof(unsigned int), 1) : (int)1; +})); if(swap) len = ((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &offset, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &offset, sizeof(unsigned int), 1) : (int)1; +})); if(swap) offset = ((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__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_Seek])(f, offset, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, offset, 0) : (unsigned int)1; +})); original = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, original, 1, len + 1); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, original, 1, len + 1) : (int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__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_Seek])(f, transStrings + c * 2 * sizeof(unsigned int), 0); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, transStrings + c * 2 * sizeof(unsigned int), 0) : (unsigned int)1; +})); +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &len, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &len, sizeof(unsigned int), 1) : (int)1; +})); if(swap) len = ((((len) & 0x000000ff) << 24) | (((len) & 0x0000ff00) << 8) | (((len) & 0x00ff0000) >> 8) | (((len) & 0xff000000) >> 24)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, &offset, sizeof(unsigned int), 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, &offset, sizeof(unsigned int), 1) : (int)1; +})); if(swap) offset = ((((offset) & 0x000000ff) << 24) | (((offset) & 0x0000ff00) << 8) | (((offset) & 0x00ff0000) >> 8) | (((offset) & 0xff000000) >> 24)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__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_Seek])(f, offset, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, offset, 0) : (unsigned int)1; +})); translated = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len + 1)); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, translated, 1, len + 1); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, translated, 1, len + 1) : (int)1; +})); if(len) { struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, it.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&it, textMap), it); @@ -725,16 +810,26 @@ struct __ecereNameSpace__ecere__com__MapIterator it = (it.container = (void *)0, if(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index((void *)(&it), (uint64)(uintptr_t)(name), 0)) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = ((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it))); __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it)))); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it)))) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * i))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __ecereNameSpace__ecere__moduleMaps; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete])(__ecereNameSpace__ecere__moduleMaps, it.pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereNameSpace__ecere__moduleMaps, it.pointer) : (void)1; +})); } } diff --git a/compiler/bootstrap/ecere/bootstrap/instance.c b/compiler/bootstrap/ecere/bootstrap/instance.c index d4b6011..253491c 100644 --- a/compiler/bootstrap/ecere/bootstrap/instance.c +++ b/compiler/bootstrap/ecere/bootstrap/instance.c @@ -2734,7 +2734,7 @@ void * oldFunction = _class->_vTbl[method->vid]; if(method->vid >= _class->vTblSize) printf("error: virtual methods overriding failure\n"); else -_class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction; +_class->_vTbl[method->vid] = function ? function : (((void *)0)); for(deriv = _class->derivatives.first; deriv; deriv = deriv->next) { struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data; @@ -2773,7 +2773,7 @@ return method; } if(!base) { -struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method); +struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (((void *)0)), method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method); __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method); return method; @@ -2906,7 +2906,12 @@ return (((void *)0)); const char * __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this) { -return ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__Platform, (void *)&this, (((void *)0)), (((void *)0)), (((void *)0))); +return (__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass___ecereNameSpace__ecere__com__Platform, (void *)&this, (((void *)0)), (((void *)0)), (((void *)0))) : (const char * )1; +})); } struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this) @@ -2947,7 +2952,7 @@ if(method->type == 1) if(method->vid >= _class->vTblSize) printf("error: virtual methods overriding failure\n"); else -_class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction; +_class->_vTbl[method->vid] = function ? function : (((void *)0)); } else base = (((void *)0)); @@ -2956,13 +2961,13 @@ return method; } if(!base) { -struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method); +struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (((void *)0)), method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method); __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method); _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize)); -_class->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction; +_class->_vTbl[method->vid] = function ? function : (((void *)0)); if(_class->derivatives.first || _class->templatized.first) -__ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type); +__ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (((void *)0)), type); return method; } } @@ -3380,7 +3385,7 @@ if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl == ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize); memcpy(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl, sizeof(int (*)()) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize); } -((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction; +((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : (((void *)0)); } } } diff --git a/compiler/bootstrap/ecp/bootstrap/ecp.c b/compiler/bootstrap/ecp/bootstrap/ecp.c index 2b5ad47..65a6399 100644 --- a/compiler/bootstrap/ecp/bootstrap/ecp.c +++ b/compiler/bootstrap/ecp/bootstrap/ecp.c @@ -1695,16 +1695,26 @@ temp[0] = 0; PrintExpression(tp->defaultArgument->__anon1.expression, temp); __ecereNameSpace__ecere__sys__ChangeCh(temp, '\n', ' '); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " "); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, temp); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, temp) : (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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); } else __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " [None]\n"); @@ -2969,32 +2979,52 @@ SetFileInput(fileInput); SetMainModule(mainModule); __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&imports, mainModule); resetScanner(); -for(; !((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +for(; !(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = cppOutput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(cppOutput); ) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(cppOutput) : (unsigned int)1; +})); ) { char junk[4096]; -int count = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int count = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = cppOutput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__DualPipe->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(cppOutput, junk, 1, 4096); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(cppOutput, junk, 1, 4096) : (int)1; +})); + +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, junk, 1, count); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, junk, 1, count) : (int)1; +})); } exitCode = __ecereMethod___ecereNameSpace__ecere__sys__DualPipe_GetExitCode(cppOutput); (__ecereNameSpace__ecere__com__eInstance_DecRef(cppOutput), cppOutput = 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, 0, 0) : (unsigned int)1; +})); ParseEc(); SetCurrentNameSpace((((void *)0))); SetYydebug(0); diff --git a/compiler/bootstrap/ecs/bootstrap/ecs.c b/compiler/bootstrap/ecs/bootstrap/ecs.c index 40c4f66..550a9f9 100644 --- a/compiler/bootstrap/ecs/bootstrap/ecs.c +++ b/compiler/bootstrap/ecs/bootstrap/ecs.c @@ -1307,11 +1307,16 @@ if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String")) DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString"); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "(StaticString)"); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, param->name); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, param->name) : (unsigned int)1; +})); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n"); } __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " "); @@ -1641,11 +1646,16 @@ if(param->kind == 8 && !strcmp(param->__anon1._class->string, "String")) DeclareClass((((void *)0)), FindClass("StaticString"), "__ecereClass_StaticString"); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "(StaticString)"); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, param->name); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, param->name) : (unsigned int)1; +})); __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, ");\n"); } __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " "); @@ -1889,16 +1899,26 @@ __ecereNameSpace__ecere__sys__StripExtension(projectName); FixModuleName(mainModuleName); if(targetPlatform == 1 && !isConsole && !isStaticLibrary && !isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "typedef void * HINSTANCE;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "typedef void * HINSTANCE;\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])(f, "#define WINAPI __stdcall\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "#define WINAPI __stdcall\n") : (unsigned int)1; +})); } for(importedModule = _defines.first; importedModule; importedModule = importedModule->next) { @@ -1910,22 +1930,37 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "static ", importedMo __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\"%s\"\n", importedModule->name); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "default:\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "default:\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])(f, "static Module __currentModule;\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "static Module __currentModule;\n\n") : (unsigned int)1; +})); if(!isStaticLibrary) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "Module __thisModule;\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "Module __thisModule;\n\n") : (unsigned int)1; +})); BindDCOMServer(); BindDCOMClient(); if(dcomSymbols) @@ -2026,31 +2061,51 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "void __ecereDestroyM if(dcomSymbols) { __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(dcomSymbols, 0, 0); -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(dcomSymbols, 0, 0) : (unsigned int)1; +})); +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof])(dcomSymbols)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(dcomSymbols) : (unsigned int)1; +}))) { char buffer[4096]; -int read = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +int read = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = dcomSymbols; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(dcomSymbols, buffer, 1, sizeof (buffer)); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(dcomSymbols, buffer, 1, sizeof (buffer)) : (int)1; +})); if(!read) break; -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__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_Write])(f, buffer, 1, read); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, buffer, 1, read) : (int)1; +})); } __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n"); } @@ -2061,127 +2116,227 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\nbool __ecereDll_Lo else if(isDynamicLibrary) { if(targetPlatform == 1) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\ndllexport bool __stdcall __ecereDll_Load(Module module)\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\ndllexport bool __stdcall __ecereDll_Load(Module module)\n{\n") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\ndllexport bool __ecereDll_Load(Module module)\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\ndllexport bool __ecereDll_Load(Module module)\n{\n") : (unsigned int)1; +})); } else if(targetPlatform == 1 && !isConsole) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\nint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, char * cmdLine, int show)\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\nint WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, char * cmdLine, int show)\n{\n") : (unsigned int)1; +})); } else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\nint main(int _argc, char * _argv[])\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\nint main(int _argc, char * _argv[])\n{\n") : (unsigned int)1; +})); if(!isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " int exitCode;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " int exitCode;\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])(f, " Module module;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " Module module;\n") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __attribute__((unused)) Class _class;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __attribute__((unused)) Class _class;\n") : (unsigned int)1; +})); if(anyMethod) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __attribute__((unused)) Method method;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __attribute__((unused)) Method method;\n") : (unsigned int)1; +})); if(anyProp) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __attribute__((unused)) Property _property;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __attribute__((unused)) Property _property;\n") : (unsigned int)1; +})); if(anyFunction) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __attribute__((unused)) GlobalFunction function;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __attribute__((unused)) GlobalFunction function;\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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); if(disabledPooling) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " eSystem_SetPoolingDisabled(true);\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " eSystem_SetPoolingDisabled(true);\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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(!__currentModule)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(!__currentModule)\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])(f, " {\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " {\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])(f, " __currentModule = module;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __currentModule = module;\n") : (unsigned int)1; +})); if(!isStaticLibrary) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __thisModule = module;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = 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])(f, " }\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n\n") : (unsigned int)1; +})); } else if(targetPlatform == 1 && !isConsole) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = __currentModule = module = __ecere_COM_Initialize(1, 0, null);\n\n") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " __thisModule = __currentModule = module = __ecere_COM_Initialize(1, _argc, (void *)_argv);\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__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) @@ -2217,16 +2372,26 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereRegisterMo } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(__currentModule == module)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(__currentModule == 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])(f, " {\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " {\n") : (unsigned int)1; +})); } for(module = _imports.first; module; module = module->next) { @@ -2327,11 +2492,16 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " LoadTranslated } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " }\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n") : (unsigned int)1; +})); } if(!isDynamicLibrary && thisAppClass) { @@ -2341,16 +2511,26 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __thisModule = __ } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(__currentModule == module)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(__currentModule == 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])(f, " {\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " {\n") : (unsigned int)1; +})); } if(modules.count) { @@ -2369,11 +2549,16 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n"); } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " }\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n") : (unsigned int)1; +})); } if(!isDynamicLibrary && thisAppClass) { @@ -2381,16 +2566,26 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " ((void(*)(void *) } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " return true;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " return true;\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])(f, "}\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "}\n") : (unsigned int)1; +})); if(isStaticLibrary) { __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\nbool __ecereDll_Unload_%s(Module module)\n{\n", projectName); @@ -2398,31 +2593,51 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\nbool __ecereDll_Un else { if(targetPlatform == 1) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\ndllexport bool __stdcall __ecereDll_Unload(Module module)\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\ndllexport bool __stdcall __ecereDll_Unload(Module module)\n{\n") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\ndllexport bool __ecereDll_Unload(Module module)\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\ndllexport bool __ecereDll_Unload(Module module)\n{\n") : (unsigned int)1; +})); } } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(__currentModule == module)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(__currentModule == 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])(f, " {\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " {\n") : (unsigned int)1; +})); } { unsigned int destroyI18n = 0; @@ -2452,11 +2667,16 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereDestroyMod } if(isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " }\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " }\n") : (unsigned int)1; +})); if(isDynamicLibrary) { } @@ -2472,49 +2692,84 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereUnregister } __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n"); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(__currentModule == module)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(__currentModule == 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])(f, " __currentModule = (void *)0;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __currentModule = (void *)0;\n") : (unsigned int)1; +})); if(!isStaticLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " if(__thisModule == module)\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " if(__thisModule == 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])(f, " __thisModule = (void *)0;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " __thisModule = (void *)0;\n") : (unsigned int)1; +})); } } if(!isDynamicLibrary) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n _class = eSystem_FindClass(__currentModule, \"ecere::com::Application\");\n exitCode = ((ecere::com::Application)__currentModule).exitCode;\n delete __currentModule;\n return exitCode;\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n _class = eSystem_FindClass(__currentModule, \"ecere::com::Application\");\n exitCode = ((ecere::com::Application)__currentModule).exitCode;\n delete __currentModule;\n return exitCode;\n") : (unsigned int)1; +})); } else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " return true;\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " return true;\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])(f, "}\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "}\n") : (unsigned int)1; +})); __ecereNameSpace__ecere__com__eInstance_Delete(f); } } @@ -2791,11 +3046,16 @@ static char line[65536]; struct __ecereNameSpace__ecere__com__Instance * comments = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_String_); char * msgid = (((void *)0)), * msgstr = (((void *)0)), * msgctxt = (((void *)0)); -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__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_Eof])(f)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(f) : (unsigned int)1; +}))) { if(__ecereMethod___ecereNameSpace__ecere__sys__File_GetLine(f, line, sizeof (line))) { @@ -2804,11 +3064,16 @@ int len; __ecereNameSpace__ecere__sys__TrimLSpaces(line, line); if(line[0] == '#') { -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(comments, (uint64)(uintptr_t)(__ecereNameSpace__ecere__sys__CopyString(line))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(comments, (uint64)(uintptr_t)(__ecereNameSpace__ecere__sys__CopyString(line))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } else if(strstr(line, "msgid \"") == line) { @@ -2866,17 +3131,27 @@ struct __ecereNameSpace__ecere__com__Iterator s = }; while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&s)) -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = ((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it))); __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it))), __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&s)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data((void *)(&it))), __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&s)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll])(comments); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(comments) : (void)1; +})); } (__ecereNameSpace__ecere__com__eSystem_Delete(msgid), msgid = 0); (__ecereNameSpace__ecere__com__eSystem_Delete(msgctxt), msgctxt = 0); @@ -2884,11 +3159,16 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa } } } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = comments; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(comments); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(comments) : (void)1; +})); (__ecereNameSpace__ecere__com__eInstance_DecRef(comments), comments = 0); (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); } @@ -2915,66 +3195,126 @@ __ecereNameSpace__ecere__sys__ChangeExtension(potFileName, "pot", potFileName); potFile = __ecereNameSpace__ecere__sys__FileOpen(potFileName, 2); if(potFile) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgid \"\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "msgid \"\"\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgstr \"\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "msgstr \"\"\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Project-Id-Version: \\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"Project-Id-Version: \\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"POT-Creation-Date: \\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"POT-Creation-Date: \\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"PO-Revision-Date: \\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"PO-Revision-Date: \\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Last-Translator: \\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"Last-Translator: \\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Language-Team: \\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"Language-Team: \\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"MIME-Version: 1.0\\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"MIME-Version: 1.0\\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Content-Type: text/plain; charset=iso-8859-1\\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"Content-Type: text/plain; charset=iso-8859-1\\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"Content-Transfer-Encoding: 8bit\\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"Content-Transfer-Encoding: 8bit\\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"X-Poedit-Basepath: ../\\n\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"X-Poedit-Basepath: ../\\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\n") : (unsigned int)1; +})); { struct __ecereNameSpace__ecere__com__MapIterator i = (i.container = (void *)0, i.pointer = (void *)0, __ecereProp___ecereNameSpace__ecere__com__MapIterator_Set_map(&i, (intlStrings)), i); @@ -2992,73 +3332,133 @@ struct __ecereNameSpace__ecere__com__Iterator s = while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&s)) { __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(potFile, ((char * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&s))))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\n") : (unsigned int)1; +})); } } if(pair.context) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgctxt \""); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "msgctxt \"") : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.context); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, pair.context) : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"\n") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgid \""); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "msgid \"") : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.string); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, pair.string) : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "msgstr \""); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "msgstr \"") : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, pair.string); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, pair.string) : (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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\"\n"); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\"\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 = potFile; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts])(potFile, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(potFile, "\n") : (unsigned int)1; +})); } } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = intlStrings; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(intlStrings); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(intlStrings) : (void)1; +})); (__ecereNameSpace__ecere__com__eInstance_DecRef(intlStrings), intlStrings = 0); (__ecereNameSpace__ecere__com__eInstance_DecRef(potFile), potFile = 0); } diff --git a/compiler/bootstrap/libec/bootstrap/ast.c b/compiler/bootstrap/libec/bootstrap/ast.c index 12d3215..3ec4dbd 100644 --- a/compiler/bootstrap/libec/bootstrap/ast.c +++ b/compiler/bootstrap/libec/bootstrap/ast.c @@ -2718,11 +2718,16 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "msgstr \"%s\"\n\n", } (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = intlStrings; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(intlStrings); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(intlStrings) : (void)1; +})); } } @@ -2801,11 +2806,16 @@ else (__ecereNameSpace__ecere__com__eSystem_Delete(pair.string), pair.string = 0); (__ecereNameSpace__ecere__com__eSystem_Delete(pair.context), pair.context = 0); } -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(list, (uint64)(uintptr_t)(&yylloc)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(list, (uint64)(uintptr_t)(&yylloc)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } s = QMkString(i18nModuleName ? i18nModuleName : ""); ListAdd(list, MkExpString(s)); diff --git a/compiler/bootstrap/libec/bootstrap/ecdefs.c b/compiler/bootstrap/libec/bootstrap/ecdefs.c index 80d393b..ceaff47 100644 --- a/compiler/bootstrap/libec/bootstrap/ecdefs.c +++ b/compiler/bootstrap/libec/bootstrap/ecdefs.c @@ -2214,16 +2214,26 @@ void __ecereMethod_External_CreateEdge(struct External * this, struct External * { struct TopoEdge * e = (e = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_TopoEdge), e->from = from, e->to = this, e->breakable = soft, e); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = from->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(from->outgoing, (uint64)(uintptr_t)(e)); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(from->outgoing, (uint64)(uintptr_t)(e)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(this->incoming, (uint64)(uintptr_t)(e)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this->incoming, (uint64)(uintptr_t)(e)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); if(!soft) this->nonBreakableIncoming++; } @@ -2282,11 +2292,16 @@ void __ecereMethod_External_CreateUniqueEdge(struct External * this, struct Exte struct TopoEdge * i; struct __ecereNameSpace__ecere__com__Instance * __internalLinkList = from->outgoing; -for(i = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; i; i = (struct TopoEdge *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +for(i = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; i; i = (struct TopoEdge *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __internalLinkList; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) if(i->to == this) { if(i->breakable && !soft) diff --git a/compiler/bootstrap/libec/bootstrap/freeAst.c b/compiler/bootstrap/libec/bootstrap/freeAst.c index 6c57380..bf789df 100644 --- a/compiler/bootstrap/libec/bootstrap/freeAst.c +++ b/compiler/bootstrap/libec/bootstrap/freeAst.c @@ -2176,11 +2176,16 @@ while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&it)) { if(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&it)) == module) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(list, it.pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(list, it.pointer) : (void)1; +})); found = 1; break; } @@ -2199,20 +2204,35 @@ __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&__internalIterator, ((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&__internalIterator)); }))))); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(list, ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(list, (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(list)); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(list) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = loadedModules; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(loadedModules, mapIt.pointer); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(loadedModules, mapIt.pointer) : (void)1; +})); (__ecereNameSpace__ecere__com__eInstance_DecRef(list), list = 0); __ecereNameSpace__ecere__com__eModule_Unload(((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application, mod); } @@ -2965,16 +2985,26 @@ struct TopoEdge * e; while((e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)external->incoming + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first)) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = e->from->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(e->from->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(e->from->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = external->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(external->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(external->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); ((e ? __extension__ ({ void * __ecerePtrToDelete = (e); @@ -2983,16 +3013,26 @@ __ecereClass_TopoEdge->Destructor ? __ecereClass_TopoEdge->Destructor((void *)__ } while((e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)external->outgoing + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first)) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = e->to->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(e->to->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(e->to->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = external->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(external->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(external->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); if(!e->breakable) e->to->nonBreakableIncoming--; ((e ? __extension__ ({ diff --git a/compiler/bootstrap/libec/bootstrap/grammar.c b/compiler/bootstrap/libec/bootstrap/grammar.c index c3487ae..109892a 100644 --- a/compiler/bootstrap/libec/bootstrap/grammar.c +++ b/compiler/bootstrap/libec/bootstrap/grammar.c @@ -3169,11 +3169,16 @@ case 2: yyval.specifier = (((void *)0)); _DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); FreeIdentifier(yyvsp[(1) - (2)].id); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (yychar = (-2)); (yyvsp -= (1), yyssp -= (1), yylsp -= (1)); @@ -3199,11 +3204,16 @@ case 3: yyval.specifier = (((void *)0)); _DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); FreeIdentifier(yyvsp[(1) - (2)].id); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (yychar = (-2)); (yyvsp -= (1), yyssp -= (1), yylsp -= (1)); @@ -3243,11 +3253,16 @@ else _DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); FreeIdentifier(yyvsp[(1) - (2)].id); FreeIdentifier(yyvsp[(2) - (2)].id); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (yychar = (-2)); (yyvsp -= (1), yyssp -= (1), yylsp -= (1)); @@ -3295,11 +3310,16 @@ yyval.specifier = yyvsp[(1) - (4)].specifier; SetClassTemplateArgs(yyval.specifier, yyvsp[(3) - (4)].list); yyval.specifier->loc = (yyloc); (yylsp[(4) - (4)]).end.pos--; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(4) - (4)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(4) - (4)]).end.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(4) - (4)]).end); (yychar = (-2)); ; @@ -3566,11 +3586,16 @@ yyval.memberInit = MkMemberInitExp(yyvsp[(1) - (3)].exp, MkInitializerAssignment yyval.memberInit->loc = (yyloc); yyval.memberInit->realLoc = (yyloc); yyval.memberInit->initializer->loc.start = yyval.memberInit->initializer->loc.end = (yylsp[(2) - (3)]).end; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(2) - (3)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(2) - (3)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(2) - (3)]).end); (yyloc.start = (yylsp[(1) - (3)]).start); @@ -6849,11 +6874,16 @@ _DeclClass(yyvsp[(1) - (2)].exp->__anon1.__anon1.identifier->_class, yyvsp[(1) - skipErrors = 0; FreeExpression(yyvsp[(1) - (2)].exp); FreeExpression(yyvsp[(2) - (2)].exp); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (yychar = (-2)); (yyvsp -= (1), yyssp -= (1), yylsp -= (1)); @@ -9649,11 +9679,16 @@ break; case 895: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (2)].declarator, yyvsp[(2) - (2)].list); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (2)]).end); (yyloc.start = (yylsp[(1) - (2)]).start); @@ -9664,11 +9699,16 @@ break; case 896: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (2)].declarator, (((void *)0))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (2)]).end); (yyloc.start = (yylsp[(1) - (2)]).start); @@ -9679,11 +9719,16 @@ break; case 897: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (3)].declarator, yyvsp[(2) - (3)].list); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (3)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (3)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (3)]).end); (yyloc.start = (yylsp[(1) - (3)]).start); @@ -9694,11 +9739,16 @@ break; case 898: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (4)].declarator, (((void *)0))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (4)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (4)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (4)]).end); (yyloc.start = (yylsp[(1) - (4)]).start); @@ -9741,11 +9791,16 @@ break; case 907: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (2)].declarator, yyvsp[(2) - (2)].list); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (2)]).end); (yyloc.start = (yylsp[(1) - (2)]).start); @@ -9756,11 +9811,16 @@ break; case 908: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (2)].declarator, (((void *)0))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (2)]).end); (yyloc.start = (yylsp[(1) - (2)]).start); @@ -9771,11 +9831,16 @@ break; case 909: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (3)].declarator, yyvsp[(2) - (3)].list); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (3)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (3)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (3)]).end); (yyloc.start = (yylsp[(1) - (3)]).start); @@ -9786,11 +9851,16 @@ break; case 910: { yyval.declarator = MkDeclaratorFunction(yyvsp[(1) - (4)].declarator, (((void *)0))); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (4)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (4)]).end.pos, 0) : (unsigned int)1; +})); (yychar = (-2)); resetScannerPos(&(yylsp[(1) - (4)]).end); (yyloc.start = (yylsp[(1) - (4)]).start); diff --git a/compiler/bootstrap/libec/bootstrap/lexer.c b/compiler/bootstrap/libec/bootstrap/lexer.c index c142d3e..e19be8a 100644 --- a/compiler/bootstrap/libec/bootstrap/lexer.c +++ b/compiler/bootstrap/libec/bootstrap/lexer.c @@ -2640,11 +2640,16 @@ num_to_read = (*yy_current_buffer).yy_buf_size - number_to_move - 1; } if(num_to_read > 8192) num_to_read = 8192; -yy_n_chars = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +yy_n_chars = (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(fileInput, (&(*yy_current_buffer).yy_ch_buf[number_to_move]), 1, num_to_read); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (&(*yy_current_buffer).yy_ch_buf[number_to_move]), 1, num_to_read) : (int)1; +})); (*yy_current_buffer).yy_n_chars = yy_n_chars; } if(yy_n_chars == 0) diff --git a/compiler/bootstrap/libec/bootstrap/loadSymbols.c b/compiler/bootstrap/libec/bootstrap/loadSymbols.c index a182684..418d91e 100644 --- a/compiler/bootstrap/libec/bootstrap/loadSymbols.c +++ b/compiler/bootstrap/libec/bootstrap/loadSymbols.c @@ -1607,11 +1607,16 @@ ReadDataMembers(regClass, (((void *)0)), f); } else if(!strcmp(line, "[Template Parameters]")) { -while(!((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +while(!(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__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_Eof])(f)) +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Eof]); +__internal_VirtualMethod ? __internal_VirtualMethod(f) : (unsigned int)1; +}))) { char name[1024]; int type = 0; @@ -1960,11 +1965,16 @@ struct __ecereNameSpace__ecere__com__Instance * firstModule = __ecereNameSpace__ if(firstModule) { list = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ecere__com__Module_); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(list, (uint64)(uintptr_t)(firstModule)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(list, (uint64)(uintptr_t)(firstModule)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); __extension__ ({ struct __ecereNameSpace__ecere__com__Iterator __internalIterator = { @@ -1989,11 +1999,16 @@ if(loadedModule) ((struct __ecereNameSpace__ecere__com__Module *)(((char *)loadedModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->importType = importType; module->dllOnly = 0; if(list) -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = list; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(list, (uint64)(uintptr_t)(loadedModule)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(list, (uint64)(uintptr_t)(loadedModule)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } } } diff --git a/compiler/bootstrap/libec/bootstrap/output.c b/compiler/bootstrap/libec/bootstrap/output.c index 817e1f0..1b072d6 100644 --- a/compiler/bootstrap/libec/bootstrap/output.c +++ b/compiler/bootstrap/libec/bootstrap/output.c @@ -1092,42 +1092,67 @@ if(id->_class) if(id->_class->type == 8) { if(id->_class->__anon1.templateParameter && id->_class->__anon1.templateParameter->identifier && id->_class->__anon1.templateParameter->identifier->string) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, id->_class->__anon1.templateParameter->identifier->string); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, id->_class->__anon1.templateParameter->identifier->string) : (unsigned int)1; +})); } else { if(id->_class->__anon1.__anon1.name) { if(!strcmp(id->_class->__anon1.__anon1.name, "class")) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "typed_object"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "typed_object") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, id->_class->__anon1.__anon1.name); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, id->_class->__anon1.__anon1.name) : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "::"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "::") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, (id && id->string) ? id->string : "(null identifier)"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, (id && id->string) ? id->string : "(null identifier)") : (unsigned int)1; +})); } static void OutputOperator(int op, struct __ecereNameSpace__ecere__com__Instance * f) @@ -1135,151 +1160,256 @@ static void OutputOperator(int op, struct __ecereNameSpace__ecere__com__Instance switch(op) { case INC_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "++"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "++") : (unsigned int)1; +})); break; case DEC_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "--"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "--") : (unsigned int)1; +})); break; case SIZEOF: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "sizeof "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "sizeof ") : (unsigned int)1; +})); break; case LEFT_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "<<"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "<<") : (unsigned int)1; +})); break; case RIGHT_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ">>"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ">>") : (unsigned int)1; +})); break; case LE_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "<="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "<=") : (unsigned int)1; +})); break; case GE_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ">="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ">=") : (unsigned int)1; +})); break; case EQ_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "=="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "==") : (unsigned int)1; +})); break; case NE_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "!="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "!=") : (unsigned int)1; +})); break; case AND_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "&&"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "&&") : (unsigned int)1; +})); break; case OR_OP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "||"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "||") : (unsigned int)1; +})); break; case MUL_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "*="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "*=") : (unsigned int)1; +})); break; case DIV_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "/="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "/=") : (unsigned int)1; +})); break; case MOD_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "%="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "%=") : (unsigned int)1; +})); break; case ADD_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "+="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "+=") : (unsigned int)1; +})); break; case SUB_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "-="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "-=") : (unsigned int)1; +})); break; case LEFT_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "<<="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "<<=") : (unsigned int)1; +})); break; case RIGHT_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ">>="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ">>=") : (unsigned int)1; +})); break; case AND_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "&="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "&=") : (unsigned int)1; +})); break; case XOR_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "^="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "^=") : (unsigned int)1; +})); break; case OR_ASSIGN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "|="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "|=") : (unsigned int)1; +})); break; case '&': case '*': @@ -1294,18 +1424,28 @@ case '>': case '|': case '^': case '=': -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, char ch); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, char ch))__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_Putc])(f, (char)op); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Putc]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, (char)op) : (unsigned int)1; +})); break; case DELETE: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "delete "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "delete ") : (unsigned int)1; +})); break; } } @@ -1525,29 +1665,44 @@ static void OutputSpecifier(struct Specifier * spec, struct __ecereNameSpace__e static void OutputPointer(struct Pointer * ptr, struct __ecereNameSpace__ecere__com__Instance * f) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "*"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "*") : (unsigned int)1; +})); if(ptr->qualifiers) { struct Specifier * spec; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); for(spec = (*ptr->qualifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } } if(ptr->pointer) @@ -1562,36 +1717,61 @@ static void OutputAsmField(struct AsmField * field, struct __ecereNameSpace__ece { if(field->symbolic) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); OutputIdentifier(field->symbolic, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, field->command); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, field->command) : (unsigned int)1; +})); if(field->expression) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); OutputExpression(field->expression, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); } } @@ -1600,11 +1780,16 @@ static void OutputEnumerator(struct Enumerator * enumerator, struct __ecereNameS OutputIdentifier(enumerator->id, f); if(enumerator->exp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " = "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " = ") : (unsigned int)1; +})); OutputExpression(enumerator->exp, f); } } @@ -1612,18 +1797,28 @@ OutputExpression(enumerator->exp, f); static void OutputAttribute(struct Attribute * attr, struct __ecereNameSpace__ecere__com__Instance * f) { if(attr->attr) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, attr->attr); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, attr->attr) : (unsigned int)1; +})); if(attr->exp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputExpression(attr->exp, f); } } @@ -1640,24 +1835,39 @@ __ecereNameSpace__ecere__sys__PathCat(origName, outputFile); __ecereNameSpace__ecere__sys__ChangeCh(origName, '\\', '/'); } if(initializer->type == 1) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); if(initializer->id) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "."); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ".") : (unsigned int)1; +})); OutputIdentifier(initializer->id, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " ="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " =") : (unsigned int)1; +})); } switch(initializer->type) { @@ -1666,16 +1876,26 @@ case 1: struct Initializer * init; if(initializer->id) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (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])(f, "{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "{\n") : (unsigned int)1; +})); outputLine += 2; if(inCompiler && outputLineNumbers && initializer->loc.start.line) { @@ -1686,17 +1906,27 @@ for(init = (*initializer->__anon1.list).first; init; init = init->next) { OutputInitializer(init, f); if(init->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, init->next->type == 1 ? "," : ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, init->next->type == 1 ? "," : ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n}"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n}") : (unsigned int)1; +})); if(inCompiler && outputLineNumbers && initializer->loc.start.line) { __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", initializer->loc.start.line, name); @@ -1707,11 +1937,16 @@ break; } case 0: if(initializer->id) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); if(initializer->__anon1.exp) OutputExpression(initializer->__anon1.exp, f); break; @@ -1723,25 +1958,40 @@ static void OutputAttrib(struct Attrib * attr, struct __ecereNameSpace__ecere__c switch(attr->type) { case ATTRIB: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__attribute__(("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__attribute__((") : (unsigned int)1; +})); break; case __ATTRIB: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__attribute(("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__attribute((") : (unsigned int)1; +})); break; case ATTRIB_DEP: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__attribute_deprecated__(("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__attribute_deprecated__((") : (unsigned int)1; +})); break; } if(attr->attribs) @@ -1751,19 +2001,29 @@ struct Attribute * attrib; for(attrib = (*attr->attribs).first; attrib; attrib = attrib->next) { if(attrib->prev) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputAttribute(attrib, f); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "))"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "))") : (unsigned int)1; +})); } static void OutputMemberInit(struct MemberInit * init, struct __ecereNameSpace__ecere__com__Instance * f) @@ -1778,26 +2038,41 @@ for(id = (*init->identifiers).first; id; id = id->next) { OutputIdentifier(id, f); if(id->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "."); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ".") : (unsigned int)1; +})); } } else if((*init->identifiers).first) OutputIdentifier((*init->identifiers).first, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " ="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " =") : (unsigned int)1; +})); if(init->initializer && init->initializer->type == 0) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } if(init->initializer) OutputInitializer(init->initializer, f); @@ -1806,11 +2081,16 @@ OutputInitializer(init->initializer, f); static void OutputExtDecl(struct ExtDecl * extDecl, struct __ecereNameSpace__ecere__com__Instance * f) { if(extDecl->type == 0 && extDecl->__anon1.s) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, extDecl->__anon1.s); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, extDecl->__anon1.s) : (unsigned int)1; +})); else if(extDecl->type == 1) OutputAttrib(extDecl->__anon1.attr, f); } @@ -1828,29 +2108,44 @@ OutputDeclarator(decl->declarator, f); } if(decl->__anon1.structDecl.exp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " : "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " : ") : (unsigned int)1; +})); OutputExpression(decl->__anon1.structDecl.exp, f); } if(decl->__anon1.structDecl.posExp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " : "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " : ") : (unsigned int)1; +})); OutputExpression(decl->__anon1.structDecl.posExp, f); } if(decl->__anon1.structDecl.attrib) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputAttrib(decl->__anon1.structDecl.attrib, f); } break; @@ -1858,35 +2153,55 @@ case 1: OutputIdentifier(decl->__anon1.identifier, f); break; case 2: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); OutputDeclarator(decl->declarator, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 6: if(decl->__anon1.extended.extended) OutputExtDecl(decl->__anon1.extended.extended, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputDeclarator(decl->declarator, f); break; case 7: OutputDeclarator(decl->declarator, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); if(decl->__anon1.extended.extended) OutputExtDecl(decl->__anon1.extended.extended, f); break; @@ -1895,11 +2210,16 @@ if(decl->declarator) { OutputDeclarator(decl->declarator, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); if(decl->__anon1.array.exp) { ProcessExpressionType(decl->__anon1.array.exp); @@ -1915,11 +2235,16 @@ if(_class && _class->__anon1.registered) __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "%d", (int)__ecereNameSpace__ecere__com__eClass_GetProperty(_class->__anon1.registered, "enumSize")); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; case 4: { @@ -1927,29 +2252,44 @@ struct TypeName * param; if(decl->declarator) OutputDeclarator(decl->declarator, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); if(decl->__anon1.function.parameters && (*decl->__anon1.function.parameters).first) { for(param = (*decl->__anon1.function.parameters).first; param; param = param->next) { OutputTypeName(param, f, 0); if(param->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; } case 5: @@ -1957,11 +2297,16 @@ if(decl->__anon1.pointer.pointer) OutputPointer(decl->__anon1.pointer.pointer, f); if(decl->declarator) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputDeclarator(decl->declarator, f); } break; @@ -1983,22 +2328,37 @@ void * __ecerePtrToDelete = (typeName); __ecereClass_TypeName->Destructor ? __ecereClass_TypeName->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); }) : 0), typeName = 0); -size = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +size = (__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *))__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_GetSize])(f); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_GetSize]); +__internal_VirtualMethod ? __internal_VirtualMethod(f) : (unsigned int)1; +})); string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (size + 1)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__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_Seek])(f, 0, 0); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, 0, 0) : (unsigned int)1; +})); +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__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_Read])(f, string, 1, (unsigned int)size); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, string, 1, (unsigned int)size) : (int)1; +})); string[size] = '\0'; __ecereNameSpace__ecere__sys__TrimRSpaces(string, string); (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); @@ -2015,28 +2375,43 @@ for(spec = (*type->qualifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, typeName); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } } if(type->declarator) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputDeclarator(type->declarator, f); } if(!type->qualifiers && !type->declarator) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "..."); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "...") : (unsigned int)1; +})); } static void OutputInitDeclarator(struct InitDeclarator * decl, struct __ecereNameSpace__ecere__com__Instance * f) @@ -2044,17 +2419,27 @@ static void OutputInitDeclarator(struct InitDeclarator * decl, struct __ecereNam OutputDeclarator(decl->declarator, f); if(decl->initializer) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " ="); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " =") : (unsigned int)1; +})); if(decl->initializer->type == 0) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputInitializer(decl->initializer, f); } } @@ -2071,201 +2456,341 @@ case 0: switch(spec->__anon1.specifier) { case TYPEDEF: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "typedef"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "typedef") : (unsigned int)1; +})); break; case EXTERN: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "extern"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "extern") : (unsigned int)1; +})); break; case STATIC: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "static"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "static") : (unsigned int)1; +})); break; case AUTO: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "auto"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "auto") : (unsigned int)1; +})); break; case REGISTER: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "register"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "register") : (unsigned int)1; +})); break; case THREAD: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__thread"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__thread") : (unsigned int)1; +})); break; case CONST: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "const"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "const") : (unsigned int)1; +})); break; case VOLATILE: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "volatile"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "volatile") : (unsigned int)1; +})); break; case VOID: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "void"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "void") : (unsigned int)1; +})); break; case CHAR: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "char"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "char") : (unsigned int)1; +})); break; case _BOOL: case BOOL: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "_Bool"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "_Bool") : (unsigned int)1; +})); break; case _COMPLEX: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "_Complex"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "_Complex") : (unsigned int)1; +})); break; case _IMAGINARY: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "_Imaginary"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "_Imaginary") : (unsigned int)1; +})); break; case RESTRICT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "restrict"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "restrict") : (unsigned int)1; +})); break; case SHORT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "short"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "short") : (unsigned int)1; +})); break; case INT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "int"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "int") : (unsigned int)1; +})); break; case UINT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, typeName ? "uint" : "unsigned int"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, typeName ? "uint" : "unsigned int") : (unsigned int)1; +})); break; case INT64: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, typeName ? "int64" : "long long"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, typeName ? "int64" : "long long") : (unsigned int)1; +})); break; case VALIST: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__builtin_va_list"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__builtin_va_list") : (unsigned int)1; +})); break; case LONG: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "long"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "long") : (unsigned int)1; +})); break; case FLOAT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "float"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "float") : (unsigned int)1; +})); break; case DOUBLE: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "double"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "double") : (unsigned int)1; +})); break; case SIGNED: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "signed"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "signed") : (unsigned int)1; +})); break; case UNSIGNED: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "unsigned"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "unsigned") : (unsigned int)1; +})); break; case TYPED_OBJECT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "typed_object"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "typed_object") : (unsigned int)1; +})); break; case ANY_OBJECT: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "any_object"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "any_object") : (unsigned int)1; +})); break; case CLASS: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "class"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "class") : (unsigned int)1; +})); break; case THISCLASS: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "thisclass"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "thisclass") : (unsigned int)1; +})); break; } break; @@ -2276,11 +2801,16 @@ break; case 1: if(spec->__anon1.__anon1.name && !strcmp(spec->__anon1.__anon1.name, "class")) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "typed_object"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "typed_object") : (unsigned int)1; +})); } else { @@ -2290,61 +2820,96 @@ if(!symbol && spec->__anon1.__anon1.name) symbol = FindClass(spec->__anon1.__anon1.name); if(symbol) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, symbol->string ? symbol->string : "(null)"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, symbol->string ? symbol->string : "(null)") : (unsigned int)1; +})); } else if(spec->__anon1.__anon1.name) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, spec->__anon1.__anon1.name); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, spec->__anon1.__anon1.name) : (unsigned int)1; +})); } break; case 2: { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "enum"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "enum") : (unsigned int)1; +})); if(spec->__anon1.__anon2.id) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputIdentifier(spec->__anon1.__anon2.id, f); } if(spec->__anon1.__anon2.list) { struct Enumerator * enumerator; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n{\n") : (unsigned int)1; +})); outputLine += 2; for(enumerator = (*spec->__anon1.__anon2.list).first; enumerator; enumerator = enumerator->next) { OutputEnumerator(enumerator, f); if(enumerator->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n}"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n}") : (unsigned int)1; +})); outputLine++; } break; @@ -2352,76 +2917,121 @@ break; case 3: case 4: { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, (spec->type == 3) ? "struct" : "union"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, (spec->type == 3) ? "struct" : "union") : (unsigned int)1; +})); if(spec->__anon1.__anon2.extDeclStruct) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputExtDecl(spec->__anon1.__anon2.extDeclStruct, f); } if(spec->__anon1.__anon2.id) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputIdentifier(spec->__anon1.__anon2.id, f); } if(spec->__anon1.__anon2.definitions) { struct ClassDef * def; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n{\n") : (unsigned int)1; +})); outputLine += 2; for(def = (*spec->__anon1.__anon2.definitions).first; def; def = def->next) { OutputClassDef(def, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "} ecere_gcc_struct"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "} ecere_gcc_struct") : (unsigned int)1; +})); } break; } case 6: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__typeof("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__typeof(") : (unsigned int)1; +})); OutputExpression(spec->__anon1.expression, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 7: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "subclass("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "subclass(") : (unsigned int)1; +})); OutputSpecifier(spec->__anon1._class, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 8: OutputIdentifier(spec->__anon1.templateParameter->identifier, f); @@ -2431,21 +3041,31 @@ break; static void OutputClass(struct ClassDefinition * _class, struct __ecereNameSpace__ecere__com__Instance * f) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "class "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "class ") : (unsigned int)1; +})); OutputSpecifier(_class->_class, f, 0); if(_class->baseSpecs) { struct Specifier * spec; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " : "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " : ") : (unsigned int)1; +})); for(spec = (*_class->baseSpecs).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); @@ -2455,29 +3075,44 @@ if(_class->definitions) { struct ClassDef * def; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n{\n") : (unsigned int)1; +})); outputLine += 2; for(def = (*_class->definitions).first; def; def = def->next) { OutputClassDef(def, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "}\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "}\n") : (unsigned int)1; +})); outputLine++; } else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";") : (unsigned int)1; +})); } static void OutputMembersInit(struct MembersInit * init, struct __ecereNameSpace__ecere__com__Instance * f); @@ -2488,34 +3123,54 @@ if(inst->_class) OutputSpecifier(inst->_class, f, 0); if(inst->exp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputExpression(inst->exp, f); } if(inst->members && (*inst->members).count > 1) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n{\n") : (unsigned int)1; +})); outputLine += 2; } else if(inst->members) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " { "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " { ") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "{"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "{") : (unsigned int)1; +})); if(inst->members) { struct MembersInit * init; @@ -2525,27 +3180,42 @@ for(init = (*inst->members).first; init; init = init->next) OutputMembersInit(init, f); if(init->type == 0 && init->next) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";\n") : (unsigned int)1; +})); outputLine++; } } } if(inst->members) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " }"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " }") : (unsigned int)1; +})); else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "}"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "}") : (unsigned int)1; +})); } static void OutputDeclaration(struct Declaration * decl, struct __ecereNameSpace__ecere__com__Instance * f) @@ -2581,29 +3251,44 @@ if(spec->type == 0 && spec->__anon1.specifier == TYPEDEF) inTypeDef = 1; OutputSpecifier(spec, f, inTypeDef && !spec->next); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } } if(decl->__anon1.__anon1.declarators && (*decl->__anon1.__anon1.declarators).first) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next) { OutputInitDeclarator(d, f); if(d->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } break; @@ -2616,40 +3301,60 @@ for(spec = (*decl->__anon1.__anon1.specifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } } if(decl->__anon1.__anon1.declarators) { struct Declarator * d; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); for(d = (*decl->__anon1.__anon1.declarators).first; d; d = d->next) { OutputDeclarator(d, f); if(d->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } if(decl->extStorage) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputSpecifier(decl->extStorage, f, 0); } break; @@ -2663,11 +3368,16 @@ break; case 3: return ; } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";\n") : (unsigned int)1; +})); outputLine++; if(inCompiler && outputLineNumbers && decl->loc.start.line) { @@ -2699,66 +3409,101 @@ OutputDeclaration(stmt->__anon1.decl, f); break; case 0: OutputIdentifier(stmt->__anon1.labeled.id, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ":\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ":\n") : (unsigned int)1; +})); outputLine++; if(stmt->__anon1.labeled.stmt) { if(stmt->__anon1.labeled.stmt->type == 14) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "; "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "; ") : (unsigned int)1; +})); OutputStatement(stmt->__anon1.labeled.stmt, f); } break; case 1: if(stmt->__anon1.caseStmt.exp) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "case "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "case ") : (unsigned int)1; +})); OutputExpression(stmt->__anon1.caseStmt.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ":\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ":\n") : (unsigned int)1; +})); outputLine++; } else { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "default:\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "default:\n") : (unsigned int)1; +})); outputLine++; } if(stmt->__anon1.caseStmt.stmt) { if(stmt->__anon1.caseStmt.stmt->type == 14) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "; "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "; ") : (unsigned int)1; +})); OutputStatement(stmt->__anon1.caseStmt.stmt, f); } break; case 2: { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "{\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "{\n") : (unsigned int)1; +})); outputLine++; if(stmt->__anon1.compound.declarations) { @@ -2775,21 +3520,31 @@ struct Statement * statement; if(stmt->__anon1.compound.declarations) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } for(statement = (*stmt->__anon1.compound.statements).first; statement; statement = statement->next) { OutputStatement(statement, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } } @@ -2798,11 +3553,16 @@ if(inCompiler && outputLineNumbers && stmt->loc.end.line) __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "\n#line %d \"%s\"\n", stmt->loc.end.line, name); outputLine += 2; } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "}"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "}") : (unsigned int)1; +})); break; } case 3: @@ -2815,75 +3575,120 @@ for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";") : (unsigned int)1; +})); break; } case 4: { struct Expression * exp; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "if("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "if(") : (unsigned int)1; +})); for(exp = (*stmt->__anon1.ifStmt.exp).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")\n") : (unsigned int)1; +})); outputLine++; if(stmt->__anon1.ifStmt.stmt) OutputStatement(stmt->__anon1.ifStmt.stmt, f); if(stmt->__anon1.ifStmt.elseStmt) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "else"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "else") : (unsigned int)1; +})); if(stmt->__anon1.ifStmt.elseStmt->type != 4) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputStatement(stmt->__anon1.ifStmt.elseStmt, f); } break; @@ -2892,29 +3697,44 @@ case 5: { struct Expression * exp; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "switch("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "switch(") : (unsigned int)1; +})); if(stmt->__anon1.switchStmt.exp) { for(exp = (*stmt->__anon1.switchStmt.exp).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")\n") : (unsigned int)1; +})); outputLine++; OutputStatement(stmt->__anon1.switchStmt.stmt, f); break; @@ -2923,29 +3743,44 @@ case 6: { struct Expression * exp; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "while("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "while(") : (unsigned int)1; +})); if(stmt->__anon1.switchStmt.exp) { for(exp = (*stmt->__anon1.switchStmt.exp).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")\n") : (unsigned int)1; +})); outputLine++; OutputStatement(stmt->__anon1.whileStmt.stmt, f); break; @@ -2954,56 +3789,91 @@ case 7: { struct Expression * exp; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "do\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "do\n") : (unsigned int)1; +})); outputLine++; OutputStatement(stmt->__anon1.whileStmt.stmt, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "while("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "while(") : (unsigned int)1; +})); for(exp = (*stmt->__anon1.switchStmt.exp).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ");"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ");") : (unsigned int)1; +})); break; } case 8: { struct Expression * exp; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "for("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "for(") : (unsigned int)1; +})); OutputStatement(stmt->__anon1.forStmt.init, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputStatement(stmt->__anon1.forStmt.check, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); if(stmt->__anon1.forStmt.increment) { if(inCompiler && outputLineNumbers && stmt->loc.end.line) @@ -3015,50 +3885,80 @@ for(exp = (*stmt->__anon1.forStmt.increment).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")\n") : (unsigned int)1; +})); outputLine++; OutputStatement(stmt->__anon1.forStmt.stmt, f); break; } case 9: { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "goto "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "goto ") : (unsigned int)1; +})); OutputIdentifier(stmt->__anon1.gotoStmt.id, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";") : (unsigned int)1; +})); break; } case 10: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "continue;"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "continue;") : (unsigned int)1; +})); break; case 11: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "break;"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "break;") : (unsigned int)1; +})); break; case 12: { @@ -3109,11 +4009,16 @@ FreeTypeName(typeName); } } if(!memoryGuard) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "return "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "return ") : (unsigned int)1; +})); else { struct Expression * exp = stmt->__anon1.expressions ? (*stmt->__anon1.expressions).last : (((void *)0)); @@ -3127,18 +4032,28 @@ for(exp = (*stmt->__anon1.expressions).first; exp; exp = exp->next) { OutputExpression(exp, f); if(exp->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";") : (unsigned int)1; +})); if(inCompiler && memoryGuard) { struct Expression * exp = stmt->__anon1.expressions ? (struct Expression *)(*stmt->__anon1.expressions).last : (((void *)0)); @@ -3156,88 +4071,138 @@ case 13: { struct AsmField * field; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__asm__ "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__asm__ ") : (unsigned int)1; +})); if(stmt->__anon1.asmStmt.spec) OutputSpecifier(stmt->__anon1.asmStmt.spec, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (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])(f, stmt->__anon1.asmStmt.statements); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, stmt->__anon1.asmStmt.statements) : (unsigned int)1; +})); if(stmt->__anon1.asmStmt.inputFields || stmt->__anon1.asmStmt.outputFields || stmt->__anon1.asmStmt.clobberedFields) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ":"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ":") : (unsigned int)1; +})); if(stmt->__anon1.asmStmt.inputFields) { for(field = (*stmt->__anon1.asmStmt.inputFields).first; field; field = field->next) { if(field->prev) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ","); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ",") : (unsigned int)1; +})); OutputAsmField(field, f); } } } if(stmt->__anon1.asmStmt.outputFields || stmt->__anon1.asmStmt.clobberedFields) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ":"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ":") : (unsigned int)1; +})); if(stmt->__anon1.asmStmt.outputFields) { for(field = (*stmt->__anon1.asmStmt.outputFields).first; field; field = field->next) { if(field->prev) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ","); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ",") : (unsigned int)1; +})); OutputAsmField(field, f); } } } if(stmt->__anon1.asmStmt.clobberedFields) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ":"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ":") : (unsigned int)1; +})); for(field = (*stmt->__anon1.asmStmt.clobberedFields).first; field; field = field->next) { if(field->prev) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ","); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ",") : (unsigned int)1; +})); OutputAsmField(field, f); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ");\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ");\n") : (unsigned int)1; +})); outputLine++; break; } @@ -3260,30 +4225,45 @@ switch(external->type) { case 0: OutputFunction(external->__anon1.function, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; case 1: if(external->__anon1.declaration) OutputDeclaration(external->__anon1.declaration, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; case 2: OutputClass(external->__anon1._class, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; } @@ -3296,30 +4276,45 @@ switch(external->type) { case 0: OutputFunction(external->__anon1.function, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; case 1: if(external->__anon1.declaration) OutputDeclaration(external->__anon1.declaration, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; case 2: OutputClass(external->__anon1._class, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; } @@ -3330,11 +4325,16 @@ void OutputExpression(struct Expression * exp, struct __ecereNameSpace__ecere__c switch(exp->type) { case 24: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "class("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "class(") : (unsigned int)1; +})); if(exp->__anon1._classExp.specifiers) { struct Specifier * spec; @@ -3343,40 +4343,65 @@ for(spec = (*exp->__anon1._classExp.specifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } if(exp->__anon1._classExp.decl) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputDeclarator(exp->__anon1._classExp.decl, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); } break; case 23: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__extension__ ("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__extension__ (") : (unsigned int)1; +})); OutputStatement(exp->__anon1.compound, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); if(inCompiler && outputLineNumbers && exp->loc.end.line) { char name[274] = ""; @@ -3387,102 +4412,182 @@ outputLine += 2; } break; case 13: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "new "); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "new ") : (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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputTypeName(exp->__anon1._renew.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.size, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; case 26: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "new0 "); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "new0 ") : (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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputTypeName(exp->__anon1._renew.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.size, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; case 14: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "renew "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "renew ") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputTypeName(exp->__anon1._renew.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.size, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; case 27: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "renew0 "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "renew0 ") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputTypeName(exp->__anon1._renew.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); OutputExpression(exp->__anon1._renew.size, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; case 0: if(exp->__anon1.__anon1.identifier) @@ -3494,40 +4599,60 @@ OutputInstance(exp->__anon1.instance, f); break; case 2: if(exp->__anon1.__anon1.constant) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, exp->__anon1.__anon1.constant); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, exp->__anon1.__anon1.constant) : (unsigned int)1; +})); break; case 3: if(exp->__anon1.__anon2.string) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, exp->__anon1.__anon2.string); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, exp->__anon1.__anon2.string) : (unsigned int)1; +})); break; case 4: if(exp->__anon1.op.exp1) { OutputExpression(exp->__anon1.op.exp1, f); if(exp->__anon1.op.exp2) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } OutputOperator(exp->__anon1.op.op, f); if(exp->__anon1.op.exp2) { if(exp->__anon1.op.exp1 || (exp->__anon1.op.exp2->type == 4 && !exp->__anon1.op.exp2->__anon1.op.exp1 && exp->__anon1.op.exp2->__anon1.op.op == exp->__anon1.op.op)) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); OutputExpression(exp->__anon1.op.exp2, f); } break; @@ -3537,34 +4662,54 @@ case 5: struct Expression * expression; if(exp->type == 32) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__extension__ ("); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__extension__ (") : (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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); if(exp->__anon1.list) { for(expression = (*exp->__anon1.list).first; expression; expression = expression->next) { OutputExpression(expression, f); if(expression->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; } case 6: @@ -3573,37 +4718,57 @@ struct Expression * expression; if(exp->__anon1.index.exp) OutputExpression(exp->__anon1.index.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); if(exp->__anon1.index.index) for(expression = (*exp->__anon1.index.index).first; expression; expression = expression->next) { OutputExpression(expression, f); if(expression->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; } case 7: { OutputExpression(exp->__anon1.call.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); if(exp->__anon1.call.arguments) { struct Expression * expression; @@ -3612,125 +4777,205 @@ for(expression = (*exp->__anon1.call.arguments).first; expression; expression = { OutputExpression(expression, f); if(expression->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; } case 8: if(exp->__anon1.member.exp) OutputExpression(exp->__anon1.member.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "."); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ".") : (unsigned int)1; +})); if(exp->__anon1.member.member) OutputIdentifier(exp->__anon1.member.member, f); break; case 9: OutputExpression(exp->__anon1.member.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "->"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "->") : (unsigned int)1; +})); OutputIdentifier(exp->__anon1.member.member, f); break; case 10: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "sizeof("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "sizeof(") : (unsigned int)1; +})); OutputTypeName(exp->__anon1.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 36: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__alignof__("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__alignof__(") : (unsigned int)1; +})); OutputTypeName(exp->__anon1.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 40: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__builtin_offsetof("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__builtin_offsetof(") : (unsigned int)1; +})); if(exp->__anon1.typeName) OutputTypeName(exp->__anon1.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); if(exp->__anon1.__anon1.identifier) OutputIdentifier(exp->__anon1.__anon1.identifier, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 33: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__extension__ ("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__extension__ (") : (unsigned int)1; +})); if(exp->__anon1.initializer.typeName) OutputTypeName(exp->__anon1.initializer.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); if(exp->__anon1.initializer.initializer) OutputInitializer(exp->__anon1.initializer.initializer, f); break; case 11: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "(") : (unsigned int)1; +})); OutputTypeName(exp->__anon1.cast.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); if(exp->__anon1.cast.exp) OutputExpression(exp->__anon1.cast.exp, f); break; case 12: OutputExpression(exp->__anon1.cond.cond, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " ? "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ? ") : (unsigned int)1; +})); { struct Expression * expression; @@ -3738,46 +4983,76 @@ for(expression = (*exp->__anon1.cond.exp).first; expression; expression = expres { OutputExpression(expression, f); if(expression->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " : "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " : ") : (unsigned int)1; +})); if(exp->__anon1.cond.elseExp) OutputExpression(exp->__anon1.cond.elseExp, f); break; case 34: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "__builtin_va_arg("); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "__builtin_va_arg(") : (unsigned int)1; +})); OutputExpression(exp->__anon1.vaArg.exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); OutputTypeName(exp->__anon1.vaArg.typeName, f, 0); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ")"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ")") : (unsigned int)1; +})); break; case 35: -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "["); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "[") : (unsigned int)1; +})); if(exp->__anon1.list) { struct Expression * expression; @@ -3786,18 +5061,28 @@ for(expression = (*exp->__anon1.list).first; expression; expression = expression { OutputExpression(expression, f); if(expression->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "]"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "]") : (unsigned int)1; +})); break; } } @@ -3815,25 +5100,40 @@ for(spec = (*func->specifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } if(func->declarator) OutputDeclarator(func->declarator, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; if(func->declarations) { @@ -3843,11 +5143,16 @@ for(decl = (*func->declarations).first; decl; decl = decl->next) { OutputDeclaration(decl, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } if(func->body) @@ -3869,11 +5174,16 @@ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, " __ecereNameSpace_ __ecereMethod___ecereNameSpace__ecere__sys__File_Printf(f, "}\n"); outputLine += 2; } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } curFunction = oldFunc; @@ -3889,25 +5199,40 @@ for(spec = (*func->specifiers).first; spec; spec = spec->next) { OutputSpecifier(spec, f, 0); if(spec->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, " "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, " ") : (unsigned int)1; +})); } if(func->declarator) OutputDeclarator(func->declarator, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; if(func->declarations) { @@ -3917,29 +5242,44 @@ for(decl = (*func->declarations).first; decl; decl = decl->next) { OutputDeclaration(decl, f); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } if(func->body) { OutputStatement(func->body, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } else -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";") : (unsigned int)1; +})); } void __ecereRegisterModule_output(struct __ecereNameSpace__ecere__com__Instance * module) @@ -3969,11 +5309,16 @@ for(member = (*init->__anon1.dataMembers).first; member; member = member->next) { OutputMemberInit(member, f); if(member->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } } break; @@ -3994,11 +5339,16 @@ if(def->__anon1.decl) OutputDeclaration(def->__anon1.decl, f); if(def->next && def->next->type != 2) { -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; } } @@ -4011,27 +5361,42 @@ for(init = (*def->__anon1.defProperties).first; init; init = init->next) { OutputMemberInit(init, f); if(init->next) -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ", "); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ", ") : (unsigned int)1; +})); } -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, ";\n\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, ";\n\n") : (unsigned int)1; +})); outputLine += 2; break; } case 0: OutputClassFunction(def->__anon1.function, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, const char * string))__extension__ ({ +(__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])(f, "\n"); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Puts]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, "\n") : (unsigned int)1; +})); outputLine++; break; } diff --git a/compiler/bootstrap/libec/bootstrap/pass0.c b/compiler/bootstrap/libec/bootstrap/pass0.c index fc1cc95..18c3ee0 100644 --- a/compiler/bootstrap/libec/bootstrap/pass0.c +++ b/compiler/bootstrap/libec/bootstrap/pass0.c @@ -1985,22 +1985,32 @@ if(symbol->__anon2.__anon1.structExternal) struct TopoEdge * e; struct __ecereNameSpace__ecere__com__Instance * __internalLinkList = symbol->__anon2.__anon1.structExternal->incoming; -for(e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; e; e = (struct TopoEdge *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +for(e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; e; e = (struct TopoEdge *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __internalLinkList; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) __ecereMethod_External_CreateUniqueEdge(external, e->from, e->breakable); } { struct TopoEdge * e; struct __ecereNameSpace__ecere__com__Instance * __internalLinkList = symbol->__anon2.__anon1.structExternal->outgoing; -for(e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; e; e = (struct TopoEdge *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +for(e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; e; e = (struct TopoEdge *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __internalLinkList; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) __ecereMethod_External_CreateUniqueEdge(e->to, external, e->breakable); } __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), symbol->__anon2.__anon1.structExternal); diff --git a/compiler/bootstrap/libec/bootstrap/pass1.c b/compiler/bootstrap/libec/bootstrap/pass1.c index 4b283e3..3bbbdea 100644 --- a/compiler/bootstrap/libec/bootstrap/pass1.c +++ b/compiler/bootstrap/libec/bootstrap/pass1.c @@ -2859,7 +2859,12 @@ case 1: char memberTypeString[132] = "TemplateMemberType::"; unsigned int needClass = 1; -((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, (void *)¶m->__anon1.memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass); +(__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, (void *)¶m->__anon1.memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass) : (const char * )1; +})); ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString)))); break; } @@ -2978,15 +2983,20 @@ ListAdd(registerModuleBody->__anon1.compound.statements, stmt); } else if(def->type == 11) { -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(uintptr_t)(__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(classPropValues, (uint64)(uintptr_t)(__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue); ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->staticClass = (declMode == 3), ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->__anon1.__anon1.id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->__anon1.__anon1.initializer->__anon1.exp, __ecereInstance1; -}))); +}))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); def->__anon1.__anon1.id = (((void *)0)); def->__anon1.__anon1.initializer->__anon1.exp = (((void *)0)); } @@ -3253,11 +3263,16 @@ __ecereInstance1->parent = registerModuleBody->__anon1.compound.context, __ecere ListAdd(registerModuleBody->__anon1.compound.statements, compoundStmt); } } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]); +__internal_VirtualMethod ? __internal_VirtualMethod(classPropValues) : (void)1; +})); } } diff --git a/compiler/bootstrap/libec/bootstrap/pass15.c b/compiler/bootstrap/libec/bootstrap/pass15.c index 1ebd5bd..7f495cb 100644 --- a/compiler/bootstrap/libec/bootstrap/pass15.c +++ b/compiler/bootstrap/libec/bootstrap/pass15.c @@ -8245,17 +8245,27 @@ unsigned int backOutputLineNumbers = outputLineNumbers; outputLineNumbers = 0; if(exp) OutputExpression(exp, f); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(f, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, 0, 0) : (unsigned int)1; +})); count = strlen(string); -count += ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ +count += (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__TempFile->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read])(f, string + count, 1, 1023); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Read]); +__internal_VirtualMethod ? __internal_VirtualMethod(f, string + count, 1, 1023) : (int)1; +})); string[count] = '\0'; (__ecereNameSpace__ecere__com__eInstance_DecRef(f), f = 0); outputLineNumbers = backOutputLineNumbers; @@ -8353,23 +8363,38 @@ static __attribute__((unused)) void UnusedFunction() { int a; -((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass_int, (void *)&a, 0, 0, 0); +(__extension__ ({ +const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass); + +__internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass_int->_vTbl[__ecereVMethodID_class_OnGetString]); +__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass_int, (void *)&a, 0, 0, 0) : (const char * )1; +})); } struct Expression * ParseExpressionString(char * expression) { parseError = 0; fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, expression, 1, strlen(expression)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, expression, 1, strlen(expression)) : (int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, 0, 0) : (unsigned int)1; +})); echoOn = 0; parsedExpression = (((void *)0)); resetScanner(); @@ -16042,16 +16067,26 @@ struct __ecereNameSpace__ecere__com__Instance * backInput = fileInput; definedExpStack[definedExpStackPos++] = definedExp; fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, definedExp->value, 1, strlen(definedExp->value)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, definedExp->value, 1, strlen(definedExp->value)) : (int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, 0, 0) : (unsigned int)1; +})); echoOn = 0; parsedExpression = (((void *)0)); resetScanner(); diff --git a/compiler/bootstrap/libec/bootstrap/pass16.c b/compiler/bootstrap/libec/bootstrap/pass16.c index 0880866..05922fc 100644 --- a/compiler/bootstrap/libec/bootstrap/pass16.c +++ b/compiler/bootstrap/libec/bootstrap/pass16.c @@ -2450,20 +2450,30 @@ if(reroute) unsigned int skip = 0; e->to = createInstancesExternal; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = external->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(external->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(external->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); { struct TopoEdge * i; struct __ecereNameSpace__ecere__com__Instance * __internalLinkList = createInstancesExternal->incoming; -for(i = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; i; i = (struct TopoEdge *)((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +for(i = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)__internalLinkList + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; i; i = (struct TopoEdge *)(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = __internalLinkList; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)i)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(__internalLinkList, (struct __ecereNameSpace__ecere__com__IteratorPointer *)i) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +}))) { if(i->from == from) { @@ -2480,11 +2490,16 @@ break; if(skip) { external->nonBreakableIncoming--; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = e->from->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(e->from->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(e->from->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); ((e ? __extension__ ({ void * __ecerePtrToDelete = (e); @@ -2493,11 +2508,16 @@ __ecereClass_TopoEdge->Destructor ? __ecereClass_TopoEdge->Destructor((void *)__ } else { -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = createInstancesExternal->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(createInstancesExternal->incoming, (uint64)(uintptr_t)(e)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(createInstancesExternal->incoming, (uint64)(uintptr_t)(e)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); if(!e->breakable) { external->nonBreakableIncoming--; diff --git a/compiler/bootstrap/libec/bootstrap/pass2.c b/compiler/bootstrap/libec/bootstrap/pass2.c index 27e75f7..b6dd3d6 100644 --- a/compiler/bootstrap/libec/bootstrap/pass2.c +++ b/compiler/bootstrap/libec/bootstrap/pass2.c @@ -109,8 +109,6 @@ extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory); struct Enumerator; -struct Pointer; - struct Attrib; struct ExtDecl; @@ -184,8 +182,6 @@ void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameS unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item); -extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer); - struct Location { struct CodePosition start; @@ -303,12 +299,14 @@ extern struct Declarator * SpecDeclFromString(const char * string, struct __ece extern struct Declarator * MkDeclaratorBrackets(struct Declarator * declarator); -extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator); - extern struct Declarator * GetFuncDecl(struct Declarator * decl); extern struct Declarator * QMkPtrDecl(const char * id); +extern struct Declarator * CopyDeclarator(struct Declarator * declarator); + +extern struct Declarator * PlugDeclarator(struct Declarator * decl, struct Declarator * baseDecl); + extern void FreeDeclarator(struct Declarator * decl); extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl); @@ -319,8 +317,6 @@ struct __ecereNameSpace__ecere__sys__OldList * specifiers; struct Declarator * decl; } ecere_gcc_struct; -extern struct Declarator * CopyDeclarator(struct Declarator * declarator); - struct Specifier; extern struct Specifier * MkSpecifierName(const char * name); @@ -329,10 +325,10 @@ extern void FreeSpecifier(struct Specifier * spec); extern struct Specifier * MkSpecifier(int specifier); -extern struct Expression * MkExpClassSize(struct Specifier * _class); - extern struct Specifier * CopySpecifier(struct Specifier * spec); +extern struct Expression * MkExpClassSize(struct Specifier * _class); + struct Symbol; extern struct Symbol * FindClass(const char * name); @@ -343,43 +339,6 @@ extern void FreeSymbol(struct Symbol * symbol); struct Identifier; -struct Declarator -{ -struct Declarator * prev; -struct Declarator * next; -struct Location loc; -int type; -struct Symbol * symbol; -struct Declarator * declarator; -union -{ -struct Identifier * identifier; -struct -{ -struct Expression * exp; -struct Expression * posExp; -struct Attrib * attrib; -} ecere_gcc_struct structDecl; -struct -{ -struct Expression * exp; -struct Specifier * enumClass; -} ecere_gcc_struct array; -struct -{ -struct __ecereNameSpace__ecere__sys__OldList * parameters; -} ecere_gcc_struct function; -struct -{ -struct Pointer * pointer; -} ecere_gcc_struct pointer; -struct -{ -struct ExtDecl * extended; -} ecere_gcc_struct extended; -} ecere_gcc_struct __anon1; -} ecere_gcc_struct; - extern void FreeIdentifier(struct Identifier * id); extern struct Expression * MkExpPointer(struct Expression * expression, struct Identifier * member); @@ -493,6 +452,58 @@ extern struct TypeName * QMkType(const char * spec, struct Declarator * decl); extern void FreeTypeName(struct TypeName * typeName); +struct Pointer; + +extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator); + +extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer); + +struct Declarator +{ +struct Declarator * prev; +struct Declarator * next; +struct Location loc; +int type; +struct Symbol * symbol; +struct Declarator * declarator; +union +{ +struct Identifier * identifier; +struct +{ +struct Expression * exp; +struct Expression * posExp; +struct Attrib * attrib; +} ecere_gcc_struct structDecl; +struct +{ +struct Expression * exp; +struct Specifier * enumClass; +} ecere_gcc_struct array; +struct +{ +struct __ecereNameSpace__ecere__sys__OldList * parameters; +} ecere_gcc_struct function; +struct +{ +struct Pointer * pointer; +} ecere_gcc_struct pointer; +struct +{ +struct ExtDecl * extended; +} ecere_gcc_struct extended; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; + +struct Pointer +{ +struct Pointer * prev; +struct Pointer * next; +struct Location loc; +struct __ecereNameSpace__ecere__sys__OldList * qualifiers; +struct Pointer * pointer; +} ecere_gcc_struct; + struct Declaration; struct Statement @@ -2757,10 +2768,14 @@ struct Expression * e; unsigned int typedObject = 0; struct Type * ellipsisDestType = (((void *)0)); unsigned int usedEllipsis = 0; +struct Expression * expCallExp = exp->__anon1.call.exp; +struct __ecereNameSpace__ecere__sys__OldList * arguments = exp->__anon1.call.arguments; +unsigned int handleNullVMethod = 0; +struct TypeName * typeName = (((void *)0)); -if(exp->__anon1.call.arguments) +if(arguments) { -for(e = (*exp->__anon1.call.arguments).first; e; e = e->next) +for(e = (*arguments).first; e; e = e->next) { int __simpleStruct2, __simpleStruct3; int __simpleStruct0, __simpleStruct1; @@ -2772,22 +2787,21 @@ ProcessExpression(e); exp->tempCount = (__simpleStruct2 = exp->tempCount, __simpleStruct3 = e->tempCount, (__simpleStruct2 > __simpleStruct3) ? __simpleStruct2 : __simpleStruct3); } } -exp->__anon1.call.exp->usage = (exp->__anon1.call.exp->usage & ~0x1) | (((unsigned int)(1)) << 0); -exp->__anon1.call.exp->usage = (exp->__anon1.call.exp->usage & ~0x8) | (((unsigned int)(1)) << 3); -exp->__anon1.call.exp->tempCount = exp->tempCount; -ProcessExpression(exp->__anon1.call.exp); -if(exp->__anon1.call.exp->expType && exp->__anon1.call.exp->expType->kind == 16) +expCallExp->usage = (expCallExp->usage & ~0x1) | (((unsigned int)(1)) << 0); +expCallExp->usage = (expCallExp->usage & ~0x8) | (((unsigned int)(1)) << 3); +expCallExp->tempCount = exp->tempCount; +ProcessExpression(expCallExp); +if(expCallExp->expType && expCallExp->expType->kind == 16) { unsigned int nullMemberExp = 0; -struct Expression * memberExp = (exp->__anon1.call.exp->type == 8) ? exp->__anon1.call.exp : (((void *)0)); -struct __ecereNameSpace__ecere__com__Class * _class = exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass; -struct __ecereNameSpace__ecere__com__Class * argClass = exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass; -struct __ecereNameSpace__ecere__com__Method * method = exp->__anon1.call.exp->expType->__anon1.__anon3.method; +struct Expression * memberExp = (expCallExp->type == 8) ? expCallExp : (((void *)0)); +struct __ecereNameSpace__ecere__com__Class * _class = expCallExp->expType->__anon1.__anon3.methodClass; +struct __ecereNameSpace__ecere__com__Class * argClass = expCallExp->expType->__anon1.__anon3.methodClass; +struct __ecereNameSpace__ecere__com__Method * method = expCallExp->expType->__anon1.__anon3.method; if(method->type == 1) { char name[1024]; -struct TypeName * typeName; struct Declarator * decl; struct Context * back; struct __ecereNameSpace__ecere__sys__OldList * specs = MkList(); @@ -2885,7 +2899,7 @@ struct Type * type = memberExp ? memberExp->__anon1.member.exp->expType : (((voi struct __ecereNameSpace__ecere__com__Class * regClass = (type && type->kind == 8 && type->__anon1._class) ? type->__anon1._class->__anon1.registered : (((void *)0)); char className[1024]; -if(!exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass && !_class && type && type->classObjectType) +if(!expCallExp->expType->__anon1.__anon3.methodClass && !_class && type && type->classObjectType) strcpy(className, "class"); else { @@ -2897,7 +2911,7 @@ if(!cl) cl = regClass; if(!cl) cl = __ecereClass_int; -if(cl->templateClass && !_class && exp->__anon1.call.exp->expType->__anon1._class && !exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass && (type->kind == 19 || (regClass && regClass->type == 0 && strcmp(regClass->dataTypeString, "char *")))) +if(cl->templateClass && !_class && expCallExp->expType->__anon1._class && !expCallExp->expType->__anon1.__anon3.methodClass && (type->kind == 19 || (regClass && regClass->type == 0 && strcmp(regClass->dataTypeString, "char *")))) cl = cl->templateClass; strcpy(className, "__ecereClass_"); FullClassNameCat(className, cl->fullName, 1); @@ -2905,29 +2919,34 @@ if(!cl->symbol) cl->symbol = FindClass(cl->fullName); DeclareClass(curExternal, cl->symbol, className); } -if(type && type->kind == 19 && !_class && !exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass && memberExp) +if(type && type->kind == 19 && !_class && !expCallExp->expType->__anon1.__anon3.methodClass && memberExp) { -exp->__anon1.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(CopyExpression(memberExp->__anon1.member.exp), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(CopyExpression(memberExp->__anon1.member.exp), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +handleNullVMethod = 1; } -else if(_class || exp->__anon1.call.exp->expType->__anon1.__anon3.methodClass || !memberExp || !regClass || regClass->type != 0 || !strcmp(regClass->dataTypeString, "char *")) +else if(_class || expCallExp->expType->__anon1.__anon3.methodClass || !memberExp || !regClass || regClass->type != 0 || !strcmp(regClass->dataTypeString, "char *")) { if(!memberExp) -FreeExpression(exp->__anon1.call.exp); -exp->__anon1.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +FreeExpression(expCallExp); +expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +handleNullVMethod = 1; } else { -struct Expression * c; +struct Expression * vTblExp; struct Context * context = PushContext(); struct __ecereNameSpace__ecere__sys__OldList * specs; +struct __ecereNameSpace__ecere__sys__OldList * declList = MkListOne(MkDeclaration((specs = MkListOne(MkSpecifierName("Instance"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal_ClassInst")), MkInitializerAssignment(CopyExpression(memberExp->__anon1.member.exp)))))); +struct __ecereNameSpace__ecere__sys__OldList * stmtList = MkListOne(MkExpressionStmt(MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkListOne(MkExpPointer(MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkIdentifier("_vTbl"))), MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")))))); -c = MkExpExtensionCompound(MkCompoundStmt(MkListOne(MkDeclaration((specs = MkListOne(MkSpecifierName("Instance"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal_ClassInst")), MkInitializerAssignment(CopyExpression(memberExp->__anon1.member.exp)))))), MkListOne(MkExpressionStmt(MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkListOne(MkExpPointer(MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkIdentifier("_vTbl"))), MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")))))))); +vTblExp = MkExpExtensionCompound(MkCompoundStmt(declList, stmtList)); if(__ecereProp_Type_Get_specConst(type)) __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*specs), (((void *)0)), MkSpecifier(CONST)); -c->loc = exp->loc; -c->__anon1.compound->__anon1.compound.context = context; +vTblExp->loc = exp->loc; +vTblExp->__anon1.compound->__anon1.compound.context = context; PopContext(context); -exp->__anon1.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(c, MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(vTblExp, MkListOne(MkExpIdentifier(MkIdentifier(name))))))); +handleNullVMethod = 1; } } } @@ -2940,12 +2959,12 @@ FullClassNameCat(name, method->_class->fullName, 0); strcat(name, "_"); strcat(name, method->name); if(!memberExp) -FreeExpression(exp->__anon1.call.exp); -exp->__anon1.call.exp = MkExpIdentifier(MkIdentifier(name)); +FreeExpression(expCallExp); +expCallExp = MkExpIdentifier(MkIdentifier(name)); DeclareMethod(curExternal, method, name); if(memberExp && memberExp->expType && method->dataType) { -exp->__anon1.call.exp->expType = method->dataType; +expCallExp->expType = method->dataType; method->dataType->refCount++; } } @@ -2953,8 +2972,8 @@ if(memberExp && (!memberExp->__anon1.member.exp || !memberExp->__anon1.member.ex { if(method->dataType && !method->dataType->__anon1.__anon2.staticMethod && !method->dataType->extraParam) { -if(!exp->__anon1.call.arguments) -exp->__anon1.call.arguments = MkList(); +if(!arguments) +arguments = MkList(); if(typedObject && memberExp->__anon1.member.exp && memberExp->__anon1.member.exp->expType) { unsigned int changeReference = 0; @@ -2977,12 +2996,12 @@ if(changeReference) { if(memberExp->__anon1.member.exp->type == 5 && memberExp->__anon1.member.exp->__anon1.list && (*memberExp->__anon1.member.exp->__anon1.list).count == 1 && ((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->type == 4 && ((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->__anon1.op.op == '*' && !((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->__anon1.op.exp1) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), ((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->__anon1.op.exp2); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), ((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->__anon1.op.exp2); ((struct Expression *)(*memberExp->__anon1.member.exp->__anon1.list).first)->__anon1.op.exp2 = (((void *)0)); } else if(memberExp->__anon1.member.exp->type == 4 && memberExp->__anon1.member.exp->__anon1.op.op == '*' && !memberExp->__anon1.member.exp->__anon1.op.exp1) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), memberExp->__anon1.member.exp->__anon1.op.exp2); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), memberExp->__anon1.member.exp->__anon1.op.exp2); memberExp->__anon1.member.exp->__anon1.op.exp2 = (((void *)0)); } else if(!memberExp->__anon1.member.exp->byReference || stillAddReferenceOp) @@ -3045,17 +3064,17 @@ FreeType((parentExp ? parentExp : newExp)->destType); if(checkedExp->expType) checkedExp->expType->refCount++; } -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), parentExp ? parentExp : newExp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), parentExp ? parentExp : newExp); } else { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), memberExp->__anon1.member.exp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), memberExp->__anon1.member.exp); nullMemberExp = 1; } } else { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), memberExp->__anon1.member.exp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), memberExp->__anon1.member.exp); nullMemberExp = 1; } { @@ -3088,11 +3107,11 @@ c->__anon1.compound->__anon1.compound.context = context; PopContext(context); if(__ecereProp_Type_Get_specConst(type)) __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*specs), (((void *)0)), MkSpecifier(CONST)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), c); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), c); memberExpMemberExp = (((void *)0)); } else -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), MkExpIdentifier(MkIdentifier(className))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), MkExpIdentifier(MkIdentifier(className))); } } if(memberExpMemberExp) @@ -3100,7 +3119,7 @@ FreeExpression(memberExpMemberExp); } else { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (((void *)0)), memberExp->__anon1.member.exp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (((void *)0)), memberExp->__anon1.member.exp); nullMemberExp = 1; } } @@ -3112,9 +3131,9 @@ memberExp->__anon1.member.exp = (((void *)0)); FreeExpression(memberExp); } } -if(exp->__anon1.call.arguments) +if(arguments) { -for(e = (*exp->__anon1.call.arguments).first; e; e = e->next) +for(e = (*arguments).first; e; e = e->next) { struct Type * destType = (e->destType && e->destType->kind == 14) ? ellipsisDestType : e->destType; @@ -3196,8 +3215,8 @@ newExp = MkExpBrackets(MkListOne(MkExpOp(MkExpCast(MkTypeName(MkListOne(MkSpecif } if(parentExp->type == 7) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), e->prev, newExp); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*exp->__anon1.call.arguments), e); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), e->prev, newExp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*arguments), e); e = newExp; } else if(parentExp->type == 5 || parentExp->type == 32) @@ -3317,8 +3336,8 @@ newExp->byReference = 1; } if(parentExp->type == 7) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), e->prev, newExp); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*exp->__anon1.call.arguments), e); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), e->prev, newExp); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*arguments), e); e = newExp; } else if(parentExp->type == 5 || parentExp->type == 32) @@ -3363,7 +3382,7 @@ struct Context * context = PushContext(); if(_class->templateClass && !strcmp(_class->templateClass->name, "Container") && e->__anon1.list && (*e->__anon1.list).first && ((struct Expression *)(*e->__anon1.list).first)->type == 11 && ((struct Expression *)(*e->__anon1.list).first)->__anon1.cast.exp && ((struct Expression *)(*e->__anon1.list).first)->__anon1.cast.exp->type == 4 && ((struct Expression *)(*e->__anon1.list).first)->__anon1.cast.exp->__anon1.op.op == '&' && ((struct Expression *)(*e->__anon1.list).first)->__anon1.cast.exp->__anon1.op.exp2 && ((struct Expression *)(*e->__anon1.list).first)->__anon1.cast.exp->__anon1.op.exp2->type == 33) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), e->prev, MkExpIdentifier(MkIdentifier(className))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), e->prev, MkExpIdentifier(MkIdentifier(className))); } else { @@ -3374,11 +3393,11 @@ c->__anon1.compound->__anon1.compound.context = context; PopContext(context); if(__ecereProp_Type_Get_specConst(type)) __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*specs), (((void *)0)), MkSpecifier(CONST)); -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), e->prev, c); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), e->prev, c); } } else -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), e->prev, MkExpIdentifier(MkIdentifier(className))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), e->prev, MkExpIdentifier(MkIdentifier(className))); } } } @@ -3388,11 +3407,59 @@ FixReference(e, !destType || !destType->declaredWithStruct); } if(ellipsisDestType) { -if(usedEllipsis || (exp->__anon1.call.exp->expType && exp->__anon1.call.exp->expType->kind == 11 && exp->__anon1.call.exp->expType->__anon1.__anon2.params.last && ((struct Type *)exp->__anon1.call.exp->expType->__anon1.__anon2.params.last)->kind == 14)) +if(usedEllipsis || (expCallExp->expType && expCallExp->expType->kind == 11 && expCallExp->expType->__anon1.__anon2.params.last && ((struct Type *)expCallExp->expType->__anon1.__anon2.params.last)->kind == 14)) { -__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*exp->__anon1.call.arguments), (*exp->__anon1.call.arguments).last, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*arguments), (*arguments).last, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))); +} } } +if(handleNullVMethod) +{ +struct Expression * compoundExp; +struct Context * context = PushContext(); +struct __ecereNameSpace__ecere__sys__OldList * declList = MkList(); +struct __ecereNameSpace__ecere__sys__OldList * stmtList = MkList(); +struct TypeName * castTypeName; +struct __ecereNameSpace__ecere__sys__OldList * specs = MkList(); +struct Specifier * spec; + +for(spec = typeName->qualifiers ? (*typeName->qualifiers).first : (((void *)0)); spec; spec = spec->next) +{ +if(spec->type != 5) +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specs), CopySpecifier(spec)); +} +if(typeName->declarator->type == 5) +{ +struct Pointer * p = typeName->declarator->__anon1.pointer.pointer->pointer; + +castTypeName = MkTypeName(specs, CopyDeclarator(typeName->declarator->declarator->declarator->declarator)); +while(p) +{ +struct Pointer * pp; + +for(pp = castTypeName->declarator->__anon1.pointer.pointer; pp->pointer; pp = pp->pointer) +; +pp->pointer = MkPointer((((void *)0)), (((void *)0))); +pp->qualifiers = CopyList(p->qualifiers, (void *)(CopySpecifier)); +p = p->pointer; +} +} +else +castTypeName = MkTypeName(specs, CopyDeclarator(typeName->declarator->declarator->declarator->declarator)); +compoundExp = MkExpExtensionCompound(MkCompoundStmt(declList, stmtList)); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*declList), MkDeclaration(CopyList(typeName->qualifiers, (void *)(CopySpecifier)), MkListOne(MkInitDeclarator(PlugDeclarator(CopyDeclarator(typeName->declarator), MkDeclaratorIdentifier(MkIdentifier("__internal_VirtualMethod"))), (((void *)0)))))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*stmtList), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), '=', expCallExp)))); +__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*stmtList), MkExpressionStmt(MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), arguments)), MkExpCast(castTypeName, MkExpConstant("1")))))); +compoundExp->loc = exp->loc; +compoundExp->__anon1.compound->__anon1.compound.context = context; +PopContext(context); +exp->type = 5; +exp->__anon1.list = MkListOne(compoundExp); +} +else +{ +exp->__anon1.call.exp = expCallExp; +exp->__anon1.call.arguments = arguments; } break; } diff --git a/compiler/bootstrap/libec/bootstrap/pass3.c b/compiler/bootstrap/libec/bootstrap/pass3.c index a89822a..f323a90 100644 --- a/compiler/bootstrap/libec/bootstrap/pass3.c +++ b/compiler/bootstrap/libec/bootstrap/pass3.c @@ -1253,16 +1253,26 @@ if(!e->breakable) { m->nonBreakableIncoming--; } -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = n->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(n->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(n->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = m->incoming; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(m->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(m->incoming, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e) : (void)1; +})); ((e ? __extension__ ({ void * __ecerePtrToDelete = (e); @@ -1322,16 +1332,26 @@ else ; e2->breakable = 0; e2->from = f; -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = m->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(m->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e2); -((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(m->outgoing, (struct __ecereNameSpace__ecere__com__IteratorPointer *)e2) : (void)1; +})); +(__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = f->outgoing; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__LinkList->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(f->outgoing, (uint64)(uintptr_t)(e2)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(f->outgoing, (uint64)(uintptr_t)(e2)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); to->nonBreakableIncoming++; if(e2 != e && to->nonBreakableIncoming == 1) { diff --git a/compiler/bootstrap/libec/bootstrap/shortcuts.c b/compiler/bootstrap/libec/bootstrap/shortcuts.c index da3e3a1..ba3bcfc 100644 --- a/compiler/bootstrap/libec/bootstrap/shortcuts.c +++ b/compiler/bootstrap/libec/bootstrap/shortcuts.c @@ -668,16 +668,26 @@ struct __ecereNameSpace__ecere__com__Instance * backFileInput = fileInput; if(!string) string = "void()"; fileInput = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__TempFile); -((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ +(__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *, const void * buffer, unsigned int size, unsigned int count))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write])(fileInput, string, 1, strlen(string)); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Write]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, string, 1, strlen(string)) : (int)1; +})); +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, 0, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, 0, 0) : (unsigned int)1; +})); echoOn = 0; parseTypeError = 0; parsedType = (((void *)0)); diff --git a/compiler/bootstrap/libec/bootstrap/type.c b/compiler/bootstrap/libec/bootstrap/type.c index f2c1f0c..c1f556a 100644 --- a/compiler/bootstrap/libec/bootstrap/type.c +++ b/compiler/bootstrap/libec/bootstrap/type.c @@ -2297,11 +2297,16 @@ case 2: { yyval.specifier = (((void *)0)); DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (type_yychar = (-2)); FreeIdentifier(yyvsp[(1) - (2)].id); @@ -2328,11 +2333,16 @@ case 3: yyval.specifier = (((void *)0)); _DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); FreeIdentifier(yyvsp[(1) - (2)].id); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (type_yychar = (-2)); (yyvsp -= (1), yyssp -= (1), yylsp -= (1)); @@ -2356,11 +2366,16 @@ break; case 4: { DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); parseTypeError = (unsigned int)0; resetScannerPos(&(yylsp[(1) - (2)]).start); (type_yychar = (-2)); @@ -2392,11 +2407,16 @@ break; case 6: { DeclClass(yyvsp[(1) - (2)].id->_class, yyvsp[(1) - (2)].id->string); -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(1) - (2)]).start.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(1) - (2)]).start.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(1) - (2)]).start); (type_yychar = (-2)); FreeIdentifier(yyvsp[(1) - (2)].id); @@ -2439,11 +2459,16 @@ yyval.specifier = yyvsp[(1) - (4)].specifier; SetClassTemplateArgs(yyval.specifier, yyvsp[(3) - (4)].list); yyval.specifier->loc = (yyloc); (yylsp[(4) - (4)]).end.pos--; -((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ +(__extension__ ({ +unsigned int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode); + +__internal_VirtualMethod = ((unsigned int (*)(struct __ecereNameSpace__ecere__com__Instance *, int pos, int mode))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = fileInput; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__sys__File->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek])(fileInput, (yylsp[(4) - (4)]).end.pos, 0); +})[__ecereVMethodID___ecereNameSpace__ecere__sys__File_Seek]); +__internal_VirtualMethod ? __internal_VirtualMethod(fileInput, (yylsp[(4) - (4)]).end.pos, 0) : (unsigned int)1; +})); resetScannerPos(&(yylsp[(4) - (4)]).end); (type_yychar = (-2)); ; diff --git a/compiler/libec/src/pass2.ec b/compiler/libec/src/pass2.ec index e02ce8c..b8b1ad9 100644 --- a/compiler/libec/src/pass2.ec +++ b/compiler/libec/src/pass2.ec @@ -1643,10 +1643,14 @@ static void ProcessExpression(Expression exp) bool typedObject = false; Type ellipsisDestType = null; bool usedEllipsis = false; + Expression expCallExp = exp.call.exp; + OldList * arguments = exp.call.arguments; + bool handleNullVMethod = false; + TypeName typeName = null; - if(exp.call.arguments) + if(arguments) { - for(e = exp.call.arguments->first; e; e = e.next) + for(e = arguments->first; e; e = e.next) { e.usage.usageGet = true; e.usage.usageArg = true; @@ -1655,24 +1659,23 @@ static void ProcessExpression(Expression exp) exp.tempCount = Max(exp.tempCount, e.tempCount); } } - exp.call.exp.usage.usageGet = true; - exp.call.exp.usage.usageCall = true; - exp.call.exp.tempCount = exp.tempCount; + expCallExp.usage.usageGet = true; + expCallExp.usage.usageCall = true; + expCallExp.tempCount = exp.tempCount; - ProcessExpression(exp.call.exp); + ProcessExpression(expCallExp); - if(exp.call.exp.expType && exp.call.exp.expType.kind == methodType) + if(expCallExp.expType && expCallExp.expType.kind == methodType) { bool nullMemberExp = false; - Expression memberExp = (exp.call.exp.type == ExpressionType::memberExp) ? exp.call.exp : null; + Expression memberExp = (expCallExp.type == ExpressionType::memberExp) ? expCallExp : null; - Class _class = exp.call.exp.expType.methodClass; // For Virtual Method - Class argClass = exp.call.exp.expType.methodClass; // Class actually passed - Method method = exp.call.exp.expType.method; + Class _class = expCallExp.expType.methodClass; // For Virtual Method + Class argClass = expCallExp.expType.methodClass; // Class actually passed + Method method = expCallExp.expType.method; if(method.type == virtualMethod) { char name[1024]; - TypeName typeName; Declarator decl; Context back; OldList * specs = MkList(); @@ -1736,7 +1739,6 @@ static void ProcessExpression(Expression exp) typeName = MkTypeName(specs, decl); - // Added !exp.call.exp.expType.methodClass if(memberExp && memberExp.member.exp.expType) { Type type = memberExp.member.exp.expType; @@ -1783,7 +1785,8 @@ static void ProcessExpression(Expression exp) Class regClass = (type && type.kind == classType && type._class) ? type._class.registered : null; char className[1024]; - if(!exp.call.exp.expType.methodClass && !_class && type && type.classObjectType) + // Added !exp.call.exp.expType.methodClass + if(!expCallExp.expType.methodClass && !_class && type && type.classObjectType) strcpy(className, "class"); else { @@ -1798,7 +1801,7 @@ static void ProcessExpression(Expression exp) cl = class(int); // To avoid declaring classes templatized after this class template (e.g. public struct Iterator { Container container; } ) - if(cl.templateClass && !_class && exp.call.exp.expType._class && !exp.call.exp.expType.methodClass && + if(cl.templateClass && !_class && expCallExp.expType._class && !expCallExp.expType.methodClass && (type.kind == subClassType || (regClass && regClass.type == normalClass && strcmp(regClass.dataTypeString, "char *")))) cl = cl.templateClass; @@ -1812,20 +1815,24 @@ static void ProcessExpression(Expression exp) DeclareClass(curExternal, cl.symbol, className); } - if(type && type.kind == subClassType && !_class && !exp.call.exp.expType.methodClass && memberExp) + if(type && type.kind == subClassType && !_class && !expCallExp.expType.methodClass && memberExp) { - exp.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, + expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(CopyExpression(memberExp.member.exp), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); + + handleNullVMethod = true; } - else if(_class || exp.call.exp.expType.methodClass || !memberExp || + else if(_class || expCallExp.expType.methodClass || !memberExp || !regClass || regClass.type != normalClass || !strcmp(regClass.dataTypeString, "char *")) { if(!memberExp) - FreeExpression(exp.call.exp); - exp.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, + FreeExpression(expCallExp); + expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, MkExpIndex(MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")), MkListOne(MkExpIdentifier(MkIdentifier(name))))))); + + handleNullVMethod = true; } else { @@ -1833,25 +1840,31 @@ static void ProcessExpression(Expression exp) // as opposed to the File class vTbl one // ({ Instance __internal_ClassInst = e; __internal_ClassInst ? __internal_ClassInst._vTbl : __ecereClass_...; }) - Expression c; + Expression vTblExp; Context context = PushContext(); OldList * specs; - c = MkExpExtensionCompound(MkCompoundStmt( - MkListOne(MkDeclaration( + OldList * declList = MkListOne(MkDeclaration( (specs = MkListOne(MkSpecifierName("Instance"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("__internal_ClassInst")), - MkInitializerAssignment(CopyExpression(memberExp.member.exp)))))), - MkListOne(MkExpressionStmt(MkListOne(MkExpCondition( + MkInitializerAssignment(CopyExpression(memberExp.member.exp)))))); + OldList * stmtList = MkListOne(MkExpressionStmt(MkListOne(MkExpCondition( MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkListOne(MkExpPointer(MkExpIdentifier(MkIdentifier("__internal_ClassInst")), MkIdentifier("_vTbl"))), - MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")))))))); + MkExpPointer(MkExpIdentifier(MkIdentifier(className)), MkIdentifier("_vTbl")))))); + + vTblExp = MkExpExtensionCompound(MkCompoundStmt(declList, stmtList)); + if(type.specConst) specs->Insert(null, MkSpecifier(CONST)); - c.loc = exp.loc; - c.compound.compound.context = context; + + vTblExp.loc = exp.loc; + vTblExp.compound.compound.context = context; PopContext(context); - exp.call.exp = MkExpBrackets(MkListOne(MkExpCast(typeName, - MkExpIndex(c, MkListOne(MkExpIdentifier(MkIdentifier(name))))))); + + expCallExp = MkExpBrackets(MkListOne(MkExpCast(typeName, + MkExpIndex(vTblExp, MkListOne(MkExpIdentifier(MkIdentifier(name))))))); + + handleNullVMethod = true; } } } @@ -1864,12 +1877,12 @@ static void ProcessExpression(Expression exp) strcat(name, method.name); if(!memberExp) - FreeExpression(exp.call.exp); - exp.call.exp = MkExpIdentifier(MkIdentifier(name)); + FreeExpression(expCallExp); + expCallExp = MkExpIdentifier(MkIdentifier(name)); DeclareMethod(curExternal, method, name); if(memberExp && memberExp.expType && method.dataType) { - exp.call.exp.expType = method.dataType; + expCallExp.expType = method.dataType; method.dataType.refCount++; } } @@ -1877,8 +1890,8 @@ static void ProcessExpression(Expression exp) { if(method.dataType && !method.dataType.staticMethod && !method.dataType.extraParam) { - if(!exp.call.arguments) - exp.call.arguments = MkList(); + if(!arguments) + arguments = MkList(); // Testing this (COMMENTED OUT TESTING, CALLING METHODS ON ENUM/UNIT ADDED & IN FRONT OF VARIABLES /* @@ -1938,12 +1951,12 @@ static void ProcessExpression(Expression exp) if(memberExp.member.exp.type == bracketsExp && memberExp.member.exp.list && memberExp.member.exp.list->count == 1 && ((Expression)memberExp.member.exp.list->first).type == opExp && ((Expression)memberExp.member.exp.list->first).op.op == '*' && !((Expression)memberExp.member.exp.list->first).op.exp1) { - exp.call.arguments->Insert(null, ((Expression)memberExp.member.exp.list->first).op.exp2); + arguments->Insert(null, ((Expression)memberExp.member.exp.list->first).op.exp2); ((Expression)memberExp.member.exp.list->first).op.exp2 = null; } else if(memberExp.member.exp.type == opExp && memberExp.member.exp.op.op == '*' && !memberExp.member.exp.op.exp1) { - exp.call.arguments->Insert(null, memberExp.member.exp.op.exp2); + arguments->Insert(null, memberExp.member.exp.op.exp2); memberExp.member.exp.op.exp2 = null; } else if(!memberExp.member.exp.byReference || stillAddReferenceOp) @@ -2009,17 +2022,17 @@ static void ProcessExpression(Expression exp) (parentExp ? parentExp : newExp).destType = destType; if(checkedExp.expType) checkedExp.expType.refCount++; } - exp.call.arguments->Insert(null, parentExp ? parentExp : newExp); + arguments->Insert(null, parentExp ? parentExp : newExp); } else { - exp.call.arguments->Insert(null, memberExp.member.exp); + arguments->Insert(null, memberExp.member.exp); nullMemberExp = true; } } else { - exp.call.arguments->Insert(null, memberExp.member.exp); + arguments->Insert(null, memberExp.member.exp); nullMemberExp = true; } @@ -2067,12 +2080,12 @@ static void ProcessExpression(Expression exp) if(type.specConst) specs->Insert(null, MkSpecifier(CONST)); - exp.call.arguments->Insert(null, c); + arguments->Insert(null, c); memberExpMemberExp = null; // We used this } else - exp.call.arguments->Insert(null, MkExpIdentifier(MkIdentifier(className))); + arguments->Insert(null, MkExpIdentifier(MkIdentifier(className))); } } @@ -2081,7 +2094,7 @@ static void ProcessExpression(Expression exp) } else { - exp.call.arguments->Insert(null, memberExp.member.exp); + arguments->Insert(null, memberExp.member.exp); nullMemberExp = true; } } @@ -2097,9 +2110,9 @@ static void ProcessExpression(Expression exp) } } - if(exp.call.arguments) + if(arguments) { - for(e = exp.call.arguments->first; e; e = e.next) + for(e = arguments->first; e; e = e.next) { Type destType = (e.destType && e.destType.kind == ellipsisType) ? ellipsisDestType : e.destType; //if(e.destType && e.destType.kind == classType && e.destType._class && !strcmp(e.destType._class.string, "class")) @@ -2178,8 +2191,8 @@ static void ProcessExpression(Expression exp) { /* Expression newExp = e.op.exp2; - exp.call.arguments->Insert(e.prev, newExp); - exp.call.arguments->Remove(e); + arguments->Insert(e.prev, newExp); + arguments->Remove(e); e.op.exp2 = null; FreeExpContents(e); e = newExp; @@ -2200,8 +2213,8 @@ static void ProcessExpression(Expression exp) if(parentExp.type == callExp) { - exp.call.arguments->Insert(e.prev, newExp); - exp.call.arguments->Remove(e); + arguments->Insert(e.prev, newExp); + arguments->Remove(e); e = newExp; } else if(parentExp.type == bracketsExp || parentExp.type == extensionExpressionExp) @@ -2342,8 +2355,8 @@ static void ProcessExpression(Expression exp) } if(parentExp.type == callExp) { - exp.call.arguments->Insert(e.prev, newExp); - exp.call.arguments->Remove(e); + arguments->Insert(e.prev, newExp); + arguments->Remove(e); e = newExp; } else if(parentExp.type == bracketsExp || parentExp.type == extensionExpressionExp) @@ -2403,7 +2416,7 @@ static void ProcessExpression(Expression exp) ((Expression)e.list->first).cast.exp.op.exp2 && ((Expression)e.list->first).cast.exp.op.exp2.type == extensionInitializerExp) { - exp.call.arguments->Insert(e.prev, MkExpIdentifier(MkIdentifier(className))); + arguments->Insert(e.prev, MkExpIdentifier(MkIdentifier(className))); } else { @@ -2423,11 +2436,11 @@ static void ProcessExpression(Expression exp) if(type.specConst) specs->Insert(null, MkSpecifier(CONST)); - exp.call.arguments->Insert(e.prev, c); + arguments->Insert(e.prev, c); } } else - exp.call.arguments->Insert(e.prev, MkExpIdentifier(MkIdentifier(className))); + arguments->Insert(e.prev, MkExpIdentifier(MkIdentifier(className))); } } } @@ -2443,12 +2456,67 @@ static void ProcessExpression(Expression exp) if(ellipsisDestType) { if(usedEllipsis || - (exp.call.exp.expType && exp.call.exp.expType.kind == functionType && exp.call.exp.expType.params.last && - ((Type)exp.call.exp.expType.params.last).kind == ellipsisType)) + (expCallExp.expType && expCallExp.expType.kind == functionType && expCallExp.expType.params.last && + ((Type)expCallExp.expType.params.last).kind == ellipsisType)) + { + arguments->Insert(arguments->last, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer(null, null),null)),MkExpConstant("0"))); + } + } + } + + if(handleNullVMethod) + { + Expression compoundExp; + Context context = PushContext(); + OldList * declList = MkList(); + OldList * stmtList = MkList(); + TypeName castTypeName; + OldList * specs = MkList(); + Specifier spec; + + for(spec = typeName.qualifiers ? typeName.qualifiers->first : null; spec; spec = spec.next) + { + if(spec.type != extendedSpecifier) + specs->Add(CopySpecifier(spec)); + } + + if(typeName.declarator.type == pointerDeclarator) + { + Pointer p = typeName.declarator.pointer.pointer.pointer; + castTypeName = MkTypeName(specs, CopyDeclarator(typeName.declarator.declarator.declarator.declarator)); + while(p) { - exp.call.arguments->Insert(exp.call.arguments->last, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer(null, null),null)),MkExpConstant("0"))); + Pointer pp; + for(pp = castTypeName.declarator.pointer.pointer; pp.pointer; pp = pp.pointer); + pp.pointer = MkPointer(null, null); + pp.qualifiers = CopyList(p.qualifiers, CopySpecifier); + p = p.pointer; } } + else + castTypeName = MkTypeName(specs, CopyDeclarator(typeName.declarator.declarator.declarator.declarator)); + + compoundExp = MkExpExtensionCompound(MkCompoundStmt(declList, stmtList)); + + declList->Add(MkDeclaration(CopyList(typeName.qualifiers, CopySpecifier), + MkListOne(MkInitDeclarator(PlugDeclarator(CopyDeclarator(typeName.declarator), MkDeclaratorIdentifier(MkIdentifier("__internal_VirtualMethod"))), null)))); + + stmtList->Add(MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), '=', expCallExp)))); + stmtList->Add(MkExpressionStmt(MkListOne(MkExpCondition( + MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), + MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("__internal_VirtualMethod")), arguments)), MkExpCast(castTypeName, MkExpConstant("1")))))); + + compoundExp.loc = exp.loc; + compoundExp.compound.compound.context = context; + PopContext(context); + + exp.type = bracketsExp; + exp.list = MkListOne(compoundExp); + } + else + { + exp.call.exp = expCallExp; + exp.call.arguments = arguments; } break; } diff --git a/ecere/src/com/instance.ec b/ecere/src/com/instance.ec index 9134629..103a5a8 100644 --- a/ecere/src/com/instance.ec +++ b/ecere/src/com/instance.ec @@ -4225,7 +4225,7 @@ public dllexport Method eClass_AddMethod(Class _class, const char * name, const if(method.vid >= _class.vTblSize) printf("error: virtual methods overriding failure\n"); else - _class._vTbl[method.vid] = function ? function : (void *)DefaultFunction; + _class._vTbl[method.vid] = function ? function : null; //(void *)DefaultFunction; for(deriv = _class.derivatives.first; deriv; deriv = deriv.next) { Class derivClass = deriv.data; @@ -4266,7 +4266,7 @@ public dllexport Method eClass_AddMethod(Class _class, const char * name, const Method method { name = CopyString(name), - function = function ? function : DefaultFunction; + function = function ? function : null; //DefaultFunction; _class = _class; dataTypeString = CopyString(type); memberAccess = declMode; @@ -4294,7 +4294,7 @@ public dllexport Method eClass_AddVirtualMethod(Class _class, const char * name, if(method.vid >= _class.vTblSize) printf("error: virtual methods overriding failure\n"); else - _class._vTbl[method.vid] = function ? function : (void *)DefaultFunction; + _class._vTbl[method.vid] = function ? function : null; //(void *)DefaultFunction; } else base = null; @@ -4307,7 +4307,7 @@ public dllexport Method eClass_AddVirtualMethod(Class _class, const char * name, Method method { name = CopyString(name); - function = function ? function : DefaultFunction; + function = function ? function : null; //DefaultFunction; type = virtualMethod; _class = _class; vid = _class.vTblSize++; @@ -4316,11 +4316,11 @@ public dllexport Method eClass_AddVirtualMethod(Class _class, const char * name, }; _class.methods.Add((BTNode)method); _class._vTbl = renew _class._vTbl void *[_class.vTblSize]; - _class._vTbl[method.vid] = function ? function : (void *)DefaultFunction; + _class._vTbl[method.vid] = function ? function : null; //(void *)DefaultFunction; // TODO: Fix derived classes if(_class.derivatives.first || _class.templatized.first) - FixDerivativeVirtualMethod(_class, name, method.vid, function ? function : (void *)DefaultFunction, type); + FixDerivativeVirtualMethod(_class, name, method.vid, function ? function : null /*(void *)DefaultFunction*/, type); return method; } } @@ -5186,7 +5186,7 @@ public dllexport void eInstance_SetMethod(Instance instance, const char * name, memcpy(instance._vTbl, instance._class._vTbl, sizeof(int(*)()) * instance._class.vTblSize); } - instance._vTbl[method.vid] = function ? function : (void *)DefaultFunction; + instance._vTbl[method.vid] = function ? function : null; //(void *)DefaultFunction; } } } diff --git a/ecere/src/gui/Window.ec b/ecere/src/gui/Window.ec index b00fa6b..b5fbb3d 100644 --- a/ecere/src/gui/Window.ec +++ b/ecere/src/gui/Window.ec @@ -9948,25 +9948,37 @@ class WindowControllerInterface : ControllableWindow { bool OnKeyDown(Key key, unichar ch) { - bool result = ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyDown)((Window)controller.controlled, controller, key, ch); + bool result = controller.OnKeyDown ? ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyDown)((Window)controller.controlled, controller, key, ch) : true; if(result) - result = ((bool (*)(Window, Key, unichar))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyDown])(controller.window, key, ch); + { + bool (* onKeyDown)(Window, Key, unichar) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyDown]; + if(onKeyDown) + result = onKeyDown(controller.window, key, ch); + } return result; } bool OnKeyUp(Key key, unichar ch) { - bool result = ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyUp)((Window)controller.controlled, controller, key, ch); + bool result = controller.OnKeyUp ? ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyUp)((Window)controller.controlled, controller, key, ch) : true; if(result) - result = ((bool(*)(Window, Key, unichar))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyUp])(controller.window, key, ch); + { + bool (* onKeyUp)(Window, Key, unichar) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyUp]; + if(onKeyUp) + result = onKeyUp(controller.window, key, ch); + } return result; } bool OnKeyHit(Key key, unichar ch) { - bool result = ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyHit)((Window)controller.controlled, controller, key, ch); + bool result = controller.OnKeyHit ? ((bool(*)(Window, WindowController, Key, unichar))(void *)controller.OnKeyHit)((Window)controller.controlled, controller, key, ch) : true; if(result) - result = ((bool(*)(Window, Key, unichar))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyHit])(controller.window, key, ch); + { + bool (* onKeyHit)(Window, Key, unichar) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnKeyHit]; + if(onKeyHit) + result = onKeyHit(controller.window, key, ch); + } return result; } @@ -9974,79 +9986,119 @@ class WindowControllerInterface : ControllableWindow { bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMouseMove)((Window)controller.controlled, controller, x, y, mods); if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMouseMove])(controller.window, x, y, mods); + { + bool(* onMouseMove)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMouseMove]; + if(onMouseMove) + result = onMouseMove(controller.window, x, y, mods); + } return result; } bool OnLeftButtonDown(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftButtonDown)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnLeftButtonDown ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftButtonDown)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftButtonDown])(controller.window, x, y, mods); + { + bool(* onLeftButtonDown)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftButtonDown]; + if(onLeftButtonDown) + result = onLeftButtonDown(controller.window, x, y, mods); + } return result; } bool OnLeftButtonUp(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftButtonUp)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnLeftButtonUp ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftButtonUp)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftButtonUp])(controller.window, x, y, mods); + { + bool(* onLeftButtonUp)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftButtonUp]; + if(onLeftButtonUp) + result = onLeftButtonUp(controller.window, x, y, mods); + } return result; } bool OnLeftDoubleClick(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftDoubleClick)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnLeftDoubleClick ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnLeftDoubleClick)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftDoubleClick])(controller.window, x, y, mods); + { + bool(* onLeftDoubleClick)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLeftDoubleClick]; + if(onLeftDoubleClick) + result = onLeftDoubleClick(controller.window, x, y, mods); + } return result; } bool OnRightButtonDown(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightButtonDown)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnRightButtonDown ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightButtonDown)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightButtonDown])(controller.window, x, y, mods); + { + bool(* onRightButtonDown)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightButtonDown]; + if(onRightButtonDown) + result = onRightButtonDown(controller.window, x, y, mods); + } return result; } bool OnRightButtonUp(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightButtonUp)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnRightButtonUp ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightButtonUp)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightButtonUp])(controller.window, x, y, mods); + { + bool(* onRightButtonUp)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightButtonUp]; + if(onRightButtonUp) + result = onRightButtonUp(controller.window, x, y, mods); + } return result; } bool OnRightDoubleClick(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightDoubleClick)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnRightDoubleClick ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnRightDoubleClick)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightDoubleClick])(controller.window, x, y, mods); + { + bool(* onRightDoubleClick)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRightDoubleClick]; + if(onRightDoubleClick) + result = onRightDoubleClick(controller.window, x, y, mods); + } return result; } bool OnMiddleButtonDown(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleButtonDown)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnMiddleButtonDown ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleButtonDown)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleButtonDown])(controller.window, x, y, mods); + { + bool(* onMiddleButtonDown)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleButtonDown]; + if(onMiddleButtonDown) + result = onMiddleButtonDown(controller.window, x, y, mods); + } return result; } bool OnMiddleButtonUp(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleButtonUp)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnMiddleButtonUp ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleButtonUp)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleButtonUp])(controller.window, x, y, mods); + { + bool(* onMiddleButtonUp)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleButtonUp]; + if(onMiddleButtonUp) + result = onMiddleButtonUp(controller.window, x, y, mods); + } return result; } bool OnMiddleDoubleClick(int x, int y, Modifiers mods) { - bool result = ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleDoubleClick)((Window)controller.controlled, controller, x, y, mods); + bool result = controller.OnMiddleDoubleClick ? ((bool(*)(Window, WindowController, int, int, Modifiers))(void *)controller.OnMiddleDoubleClick)((Window)controller.controlled, controller, x, y, mods) : true; if(result) - result = ((bool(*)(Window, int, int, Modifiers))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleDoubleClick])(controller.window, x, y, mods); + { + bool(* onMiddleDoubleClick)(Window, int, int, Modifiers) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnMiddleDoubleClick]; + if(onMiddleDoubleClick) + onMiddleDoubleClick(controller.window, x, y, mods); + } return result; } @@ -10064,36 +10116,59 @@ class WindowControllerInterface : ControllableWindow void OnResize(int width, int height) { - ((void(*)(Window, WindowController, int, int))(void *)controller.OnResize)((Window)controller.controlled, controller, width, height); - ((void(*)(Window, int, int))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnResize])(controller.window, width, height); + if(controller.OnResize) + ((void(*)(Window, WindowController, int, int))(void *)controller.OnResize)((Window)controller.controlled, controller, width, height); + { + void(* onResize)(Window, int, int) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnResize]; + if(onResize) + onResize(controller.window, width, height); + } } void OnRedraw(Surface surface) { - ((void(*)(Window, WindowController, Surface))(void *)controller.OnRedraw)((Window)controller.controlled, controller, surface); - ((void(*)(Window, Surface))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRedraw])(controller.window, surface); + if(controller.OnRedraw) + ((void(*)(Window, WindowController, Surface))(void *)controller.OnRedraw)((Window)controller.controlled, controller, surface); + { + void(* onRedraw)(Window, Surface) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnRedraw]; + if(onRedraw) + onRedraw(controller.window, surface); + } } bool OnCreate() { - bool result = ((bool(*)(Window, WindowController))(void *)controller.OnCreate)((Window)controller.controlled, controller); + bool result = controller.OnCreate ? ((bool(*)(Window, WindowController))(void *)controller.OnCreate)((Window)controller.controlled, controller) : true; if(result) - result = ((bool(*)(Window))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnCreate])(controller.window); + { + bool(* onCreate)(Window) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnCreate]; + if(onCreate) + result = onCreate(controller.window); + } return result; } bool OnLoadGraphics() { - bool result = ((bool(*)(Window, WindowController))(void *)controller.OnLoadGraphics)((Window)controller.controlled, controller); + bool result = controller.OnLoadGraphics ? ((bool(*)(Window, WindowController))(void *)controller.OnLoadGraphics)((Window)controller.controlled, controller) : true; if(result) - result = ((bool(*)(Window))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLoadGraphics])(controller.window); + { + bool(* onLoadGraphics)(Window) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnLoadGraphics]; + if(onLoadGraphics) + result = onLoadGraphics(controller.window); + } return result; } void OnUnloadGraphics() { - ((void(*)(Window, WindowController))(void *)controller.OnUnloadGraphics)((Window)controller.controlled, controller); - ((void(*)(Window))(void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnUnloadGraphics])(controller.window); + if(controller.OnUnloadGraphics) + ((void(*)(Window, WindowController))(void *)controller.OnUnloadGraphics)((Window)controller.controlled, controller); + { + void(* onUnloadGraphics)(Window) = (void *)controller.windowVTbl[__ecereVMethodID___ecereNameSpace__ecere__gui__Window_OnUnloadGraphics]; + if(onUnloadGraphics) + onUnloadGraphics(controller.window); + } } } @@ -10119,7 +10194,7 @@ public: for(c = 0; c < size; c++) { void * function = class(WindowControllerInterface)._vTbl[c]; - if(function != DefaultFunction) + if(function && function != DefaultFunction) value._vTbl[c] = function; else value._vTbl[c] = windowVTbl[c]; diff --git a/ecere/src/gui/controls/DataBox.ec b/ecere/src/gui/controls/DataBox.ec index 0c3faa4..7d3932f 100644 --- a/ecere/src/gui/controls/DataBox.ec +++ b/ecere/src/gui/controls/DataBox.ec @@ -60,7 +60,8 @@ public: bool SaveData() // TODO: Clear this up, along with Saving DataBox { - if(editor && ((bool (*)(void *, void *, Window, void *))(void *)type._vTbl[__ecereVMethodID_class_OnSaveEdit])(type, data, editor, null)) + bool (* onSaveEdit)(void *, void *, Window, void *) = (void *)type._vTbl[__ecereVMethodID_class_OnSaveEdit]; + if(editor && (!onSaveEdit || onSaveEdit(type, data, editor, null))) { Refresh(); NotifyChanged(master, this, false); diff --git a/ecere/src/gui/controls/DropBox.ec b/ecere/src/gui/controls/DropBox.ec index 616e2cd..aacf773 100644 --- a/ecere/src/gui/controls/DropBox.ec +++ b/ecere/src/gui/controls/DropBox.ec @@ -102,7 +102,10 @@ public: { char tempString[4096]; if(currentRow) - editBox.contents = ((const char *(*)(void *, void *, char *, void *, bool *))(void *)dataType._vTbl[__ecereVMethodID_class_OnGetString])(dataType, currentRow.GetData(null), tempString, null, null); + { + const char *(* onGetString)(void *, void *, char *, void *, bool *) = (void *)dataType._vTbl[__ecereVMethodID_class_OnGetString]; + editBox.contents = onGetString(dataType, currentRow.GetData(null), tempString, null, null); + } else editBox.contents = ""; } @@ -404,7 +407,10 @@ public: { char tempString[4096]; if(currentRow) - editBox.contents = ((const char *(*)(void *, void *, char *, void *, bool *))(void *)dataType._vTbl[__ecereVMethodID_class_OnGetString])(dataType, currentRow.GetData(null), tempString, null, null); + { + const char *(* onGetString)(void *, void *, char *, void *, bool *) = (void *)dataType._vTbl[__ecereVMethodID_class_OnGetString]; + editBox.contents = onGetString(dataType, currentRow.GetData(null), tempString, null, null); + } else editBox.contents = ""; } @@ -580,7 +586,10 @@ private: { char tempString[4096]; if(currentRow) - editBox.contents = ((const char *(*)(void *, void *, char *, void *, bool *))(void *)dataType._vTbl[__ecereVMethodID_class_OnGetString])(dataType, currentRow.GetData(null), tempString, null, null); + { + const char *(* onGetString)(void *, void *, char *, void *, bool *) = (void *)dataType._vTbl[__ecereVMethodID_class_OnGetString]; + editBox.contents = onGetString(dataType, currentRow.GetData(null), tempString, null, null); + } else editBox.contents = ""; } @@ -641,9 +650,11 @@ private: if(currentRow) { DataDisplayFlags displayFlags { active = active, current = true, dropBox = true, selected = true, fullRow = true }; - ((void (*)(void *, void *, void *, int, int, int, void *, uint, uint))(void *)dataType._vTbl[__ecereVMethodID_class_OnDisplay])(dataType, currentRow.GetData(null), surface, 3, - 1+(clientSize.h - listBox.rowHeight) / 2, clientSize.w - (button.visible ? button.size.w : 0) - 3, - field.userData, alignment, displayFlags); + void (* onDisplay)(void *, void *, void *, int, int, int, void *, uint, uint) = (void *)dataType._vTbl[__ecereVMethodID_class_OnDisplay]; + if(onDisplay) + onDisplay(dataType, currentRow.GetData(null), surface, 3, + 1+(clientSize.h - listBox.rowHeight) / 2, clientSize.w - (button.visible ? button.size.w : 0) - 3, + field.userData, alignment, displayFlags); } else surface.WriteText(2,2, "(none)", 6); @@ -882,7 +893,10 @@ private: { char tempString[4096]; if(currentRow) - editBox.contents = ((const char *(*)(void *, void *, char *, void *, bool *))(void *)dataType._vTbl[__ecereVMethodID_class_OnGetString])(dataType, currentRow.GetData(null), tempString, null, null); + { + const char *(* onGetString)(void *, void *, char *, void *, bool *) = (void *)dataType._vTbl[__ecereVMethodID_class_OnGetString]; + editBox.contents = onGetString(dataType, currentRow.GetData(null), tempString, null, null); + } else editBox.contents = ""; if(active) diff --git a/ecere/src/gui/controls/ToolTip.ec b/ecere/src/gui/controls/ToolTip.ec index 74a6f9f..4b9885e 100644 --- a/ecere/src/gui/controls/ToolTip.ec +++ b/ecere/src/gui/controls/ToolTip.ec @@ -186,7 +186,7 @@ public class ToolTip : Window toolTip.closeTimer.Stop(); if(!mods.isSideEffect && !toolTip.created && rootWindow.active) toolTip.timer.Start(); - return toolTip.OrigOnMouseOver(this, x, y, mods); + return toolTip.OrigOnMouseOver ? toolTip.OrigOnMouseOver(this, x, y, mods) : true; } return true; } @@ -198,7 +198,7 @@ public class ToolTip : Window { toolTip.timer.Stop(); toolTip.closeTimer.Start(); - return toolTip.OrigOnMouseLeave(this, mods); + return toolTip.OrigOnMouseLeave ? toolTip.OrigOnMouseLeave(this, mods) : true; } return true; } @@ -210,7 +210,7 @@ public class ToolTip : Window { toolTip.timer.Stop(); toolTip.Destroy(0); - return toolTip.OrigOnLeftButtonDown(this, x, y, mods); + return toolTip.OrigOnLeftButtonDown ? toolTip.OrigOnLeftButtonDown(this, x, y, mods) : true; } return true; } @@ -227,7 +227,7 @@ public class ToolTip : Window toolTip.timer.Stop(); toolTip.timer.Start(); } - return toolTip.OrigOnMouseMove(this, x, y, mods); + return toolTip.OrigOnMouseMove ? toolTip.OrigOnMouseMove(this, x, y, mods) : true; } return true; } diff --git a/ide/src/ProjectSettings.ec b/ide/src/ProjectSettings.ec index 4a7f077..f47b3ab 100644 --- a/ide/src/ProjectSettings.ec +++ b/ide/src/ProjectSettings.ec @@ -344,7 +344,7 @@ class OptionBox : CommonControl ob.Unset(); return false; } - return ((bool(*)(Window, Key, unichar)) ob.chainKeyDown)(this, key, ch); + return ob.chainKeyDown ? ((bool(*)(Window, Key, unichar)) ob.chainKeyDown)(this, key, ch) : true; } // code: 0 = not set anywhere, 1 = overridden here, 2 = inherited @@ -1970,9 +1970,11 @@ class CompilerTab : Tab { if(id) { + void (* onDisplay)(void *, void *, void *, int, int, int, void *, uint, uint) = (void *)class(ProjectNode)._vTbl[__ecereVMethodID_class_OnDisplay]; + ide.projectView.drawingInProjectSettingsDialogHeader = true; - ((void (*)(void *, void *, void *, int, int, int, void *, uint, uint))(void *)class(ProjectNode)._vTbl[__ecereVMethodID_class_OnDisplay])(class(ProjectNode), - (void *)(intptr)id, surface, 8, 2, clientSize.w, ide.projectView, Alignment::left, DataDisplayFlags { selected = true }); + if(onDisplay) + onDisplay(class(ProjectNode), (void *)(intptr)id, surface, 8, 2, clientSize.w, ide.projectView, Alignment::left, DataDisplayFlags { selected = true }); ide.projectView.drawingInProjectSettingsDialogHeader = false; } } diff --git a/ide/src/designer/CodeEditor.ec b/ide/src/designer/CodeEditor.ec index 1518338..50c8ee1 100644 --- a/ide/src/designer/CodeEditor.ec +++ b/ide/src/designer/CodeEditor.ec @@ -606,7 +606,7 @@ bool Code_IsFunctionEmpty(ClassFunction function, Method method, ObjectInfo obje // Check if it contains any code if((!body.compound.declarations || !body.compound.declarations->count) && (!body.compound.statements || body.compound.statements->count <= 1)) { - Class moduleClass = eSystem_FindClass(object.instance._class.module, "Module"); + // Class moduleClass = eSystem_FindClass(object.instance._class.module, "Module"); Statement stmt = body.compound.statements ? body.compound.statements->first : null; Type dataType = method.dataType; Type returnType = dataType.returnType; @@ -618,7 +618,7 @@ bool Code_IsFunctionEmpty(ClassFunction function, Method method, ObjectInfo obje confirmation = false; // Check if default function should be calling base class: - if(object.instance._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction + if(object.instance._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction { if(returnType.kind != voidType) { @@ -4354,7 +4354,7 @@ class CodeEditor : Window } else { - Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); + // Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); // ADDING METHOD HERE f.Printf("\n "); @@ -4383,7 +4383,7 @@ class CodeEditor : Window f.Printf(")\n"); f.Printf(" %c\n\n", OpenBracket); - if(control._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction + if(control._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction { if(returnType.kind == classType && !strcmp(returnType._class.string, "bool")) f.Printf(" return true;\n"); @@ -4967,7 +4967,7 @@ class CodeEditor : Window Type dataType = method.dataType; Type returnType = dataType.returnType; Type param; - Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); + // Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); f.Printf("\n\n"); f.Printf(" "); @@ -4993,7 +4993,7 @@ class CodeEditor : Window f.Printf(")\n"); f.Printf(" %c\n\n", OpenBracket); - if(test._class._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]) // Temp Check for DefaultFunction + if(test._class._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/) // Temp Check for DefaultFunction { if(returnType && returnType.kind == classType && !strcmp(returnType._class.string, "bool")) f.Printf(" return true;\n"); @@ -6363,7 +6363,7 @@ class CodeEditor : Window Type dataType = method.dataType; Type returnType = dataType.returnType; Type param; - Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); + // Class moduleClass = eSystem_FindClass(this.privateModule, "Module"); if(insideDef.prev) f.Printf("\n\n"); @@ -6405,7 +6405,7 @@ class CodeEditor : Window if(!_class || ( - (isInstance ? _class : _class.base)._vTbl[method.vid] == moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad] || + (isInstance ? _class : _class.base)._vTbl[method.vid] == null /*moduleClass._vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Module_OnLoad]*/ || (isInstance ? _class : _class.base)._vTbl[method.vid] == DummyMethod)) // Temp Check for DefaultFunction { if(returnType && returnType.kind == classType && !strcmp(returnType._class.string, "bool")) diff --git a/ide/src/designer/Sheet.ec b/ide/src/designer/Sheet.ec index bdbc807..68ac48a 100644 --- a/ide/src/designer/Sheet.ec +++ b/ide/src/designer/Sheet.ec @@ -1630,7 +1630,11 @@ public: } if(dataType) - editData = ((Window (*)(void *, void *, DataBox, void *, int, int, int, int, void*))(void *)dataType._vTbl[__ecereVMethodID_class_OnEdit])(dataType, dataPtr, dataBox, obsolete, x, y, w, h, object /*unused*/); + { + Window (* onEdit)(void *, void *, DataBox, void *, int, int, int, int, void*) = (void *)dataType._vTbl[__ecereVMethodID_class_OnEdit]; + if(onEdit) + editData = onEdit(dataType, dataPtr, dataBox, obsolete, x, y, w, h, object /*unused*/); + } delete data; delete subData; @@ -1820,7 +1824,8 @@ public: if(dataType) { - if(((bool (*)(void *, void *, Window, void *))(void *)dataType._vTbl[__ecereVMethodID_class_OnSaveEdit])(dataType, dataPtr, editControl, null)) + bool (* onSaveEdit)(void *, void *, Window, void *) = (void *)dataType._vTbl[__ecereVMethodID_class_OnSaveEdit]; + if(!onSaveEdit || onSaveEdit(dataType, dataPtr, editControl, null)) { if(mainDataType.type == bitClass && this.subMember) { -- 1.8.3.1