X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=compiler%2Fbootstrap%2Fecere%2Fbootstrap%2FContainer.c;h=c2d5604bfc28dd5c5196fd5c246d3ec74e45926b;hb=4dcd178c144c44b52f38f5786f0a25e6eb6cd8ef;hp=afc84eb71874bfb57d5b60675e3b44d1f13608b5;hpb=4836457f112e63f2634dbcb8bd335c5a2f7e7ac9;p=sdk diff --git a/compiler/bootstrap/ecere/bootstrap/Container.c b/compiler/bootstrap/ecere/bootstrap/Container.c index afc84eb..c2d5604 100644 --- a/compiler/bootstrap/ecere/bootstrap/Container.c +++ b/compiler/bootstrap/ecere/bootstrap/Container.c @@ -38,11 +38,14 @@ typedef unsigned __int64 uint64; #if defined(_WIN32) # if defined(__GNUC__) || defined(__TINYC__) # define ecere_stdcall __attribute__((__stdcall__)) +# define ecere_gcc_struct __attribute__((gcc_struct)) # else # define ecere_stdcall __stdcall +# define ecere_gcc_struct # endif #else # define ecere_stdcall +# define ecere_gcc_struct #endif #include #include @@ -65,7 +68,7 @@ void * last; int count; unsigned int offset; unsigned int circ; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__DataValue { @@ -82,8 +85,8 @@ float f; double d; long long i64; uint64 ui64; -} __attribute__ ((gcc_struct)) __anon1; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__IteratorPointer; @@ -93,7 +96,7 @@ unsigned char * _buffer; unsigned int count; unsigned int _size; unsigned int pos; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size); @@ -109,6 +112,8 @@ extern char * strcat(char * , const char * ); extern void * memset(void * area, int value, size_t count); +extern unsigned int __ecereNameSpace__ecere__com__log2i(unsigned int number); + struct __ecereNameSpace__ecere__com__ClassTemplateParameter; int __ecereVMethodID_class_OnCompare; @@ -138,7 +143,7 @@ struct __ecereNameSpace__ecere__com__Instance void * * _vTbl; struct __ecereNameSpace__ecere__com__Class * _class; int _refCount; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name); @@ -186,6 +191,8 @@ int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free; int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Delete; +int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Sort; + struct __ecereNameSpace__ecere__com__Property { struct __ecereNameSpace__ecere__com__Property * prev; @@ -210,7 +217,7 @@ const char * category; unsigned int compiled; unsigned int selfWatchable; unsigned int isWatchable; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property); @@ -226,7 +233,7 @@ struct __ecereNameSpace__ecere__com__Iterator { struct __ecereNameSpace__ecere__com__Instance * container; struct __ecereNameSpace__ecere__com__IteratorPointer * pointer; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; void __ecereProp___ecereNameSpace__ecere__com__Container_Set_copySrc(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value); @@ -255,7 +262,7 @@ uint64 __ecereMethod___ecereNameSpace__ecere__com__Container_GetData(struct __ec return (uint64)0; } -struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__Container_GetAtPosition(struct __ecereNameSpace__ecere__com__Instance * this, const uint64 pos, unsigned int create) +struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereNameSpace__ecere__com__Container_GetAtPosition(struct __ecereNameSpace__ecere__com__Instance * this, const uint64 pos, unsigned int create, unsigned int * justAdded) { return (((void *)0)); } @@ -270,6 +277,10 @@ void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Put(struct __ecereNam void __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Get(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Class * class, void * * data); +uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this); + +void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value); + struct __ecereNameSpace__ecere__sys__BinaryTree; struct __ecereNameSpace__ecere__sys__BinaryTree @@ -278,7 +289,7 @@ struct __ecereNameSpace__ecere__sys__BTNode * root; int count; int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b); void (* FreeKey)(void * key); -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__DataMember; @@ -302,7 +313,7 @@ struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha; int memberOffset; short structAlignment; short pointerAlignment; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode); @@ -316,7 +327,7 @@ struct { const char * dataTypeString; struct __ecereNameSpace__ecere__com__Class * dataTypeClass; -} __attribute__ ((gcc_struct)) __anon1; +} ecere_gcc_struct __anon1; struct __ecereNameSpace__ecere__com__DataValue expression; struct { @@ -326,10 +337,10 @@ union struct __ecereNameSpace__ecere__com__DataMember * member; struct __ecereNameSpace__ecere__com__Property * prop; struct __ecereNameSpace__ecere__com__Method * method; -} __attribute__ ((gcc_struct)) __anon1; -} __attribute__ ((gcc_struct)) __anon2; -} __attribute__ ((gcc_struct)) __anon1; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct __anon1; +} ecere_gcc_struct __anon2; +} ecere_gcc_struct __anon1; +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Method { @@ -346,7 +357,7 @@ void * symbol; const char * dataTypeString; struct __ecereNameSpace__ecere__com__Instance * dataType; int memberAccess; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode); @@ -374,7 +385,7 @@ struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces; struct __ecereNameSpace__ecere__sys__BinaryTree classes; struct __ecereNameSpace__ecere__sys__BinaryTree defines; struct __ecereNameSpace__ecere__sys__BinaryTree functions; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Class { @@ -433,7 +444,7 @@ struct __ecereNameSpace__ecere__sys__OldList templatized; int numParams; unsigned int isInstanceClass; unsigned int byValueSystemClass; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; struct __ecereNameSpace__ecere__com__Application { @@ -444,7 +455,7 @@ unsigned int isGUIApp; struct __ecereNameSpace__ecere__sys__OldList allModules; char * parsedCommand; struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Iterator; @@ -454,11 +465,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); } } @@ -491,117 +507,178 @@ int importType; int origImportType; struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace; struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace; -} __attribute__ ((gcc_struct)); +} ecere_gcc_struct; 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) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source))__extension__ ({ +if(value) +(__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); } @@ -609,95 +686,287 @@ 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; +})); -((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 = 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; +})); } } +int __ecereMethod___ecereNameSpace__ecere__com__Container_OnCompare(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * b) +{ +struct __ecereNameSpace__ecere__com__IteratorPointer * ia, * ib; +struct __ecereNameSpace__ecere__com__Class * Dclass = class->templateArgs[2].__anon1.__anon1.dataTypeClass; +unsigned int byRef = (Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3; +int (* onCompare)(void *, const void *, const void *) = (void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare]; + +if(this && !b) +return 1; +if(b && !this) +return -1; +if(!b && !this) +return 0; +if((__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]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})) > (__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 = b; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (int)1; +}))) +return 1; +if((__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]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})) < (__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 = b; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (int)1; +}))) +return -1; +ia = (__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]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +ib = (__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 = b; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +while(ia && ib) +{ +uint64 dataA = (__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]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ia) : (uint64)1; +})); +uint64 dataB = (__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 = b; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(b, ib) : (uint64)1; +})); +int r = onCompare(Dclass, byRef ? ((char *)&dataA + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataA, byRef ? ((char *)&dataB + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataB); + +if(r) +return r; +ia = (__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]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ia) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +ib = (__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 = b; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(b, ib) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +} +if(ia) +return 1; +if(ib) +return -1; +return 0; +} + int __ecereMethod___ecereNameSpace__ecere__com__Container_GetCount(struct __ecereNameSpace__ecere__com__Instance * this) { 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; } @@ -706,16 +975,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) @@ -727,22 +1006,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'; @@ -754,35 +1048,70 @@ first = 0; } } else -tempString[0] = (char)0; +tempString[0] = 0; 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) @@ -791,11 +1120,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 @@ -808,25 +1142,42 @@ struct __ecereNameSpace__ecere__com__IteratorPointer * __ecereMethod___ecereName { struct __ecereNameSpace__ecere__com__IteratorPointer * i; struct __ecereNameSpace__ecere__com__Class * Dclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass; +unsigned int byRef = (Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3; +int (* onCompare)(void *, const void *, const void *) = (void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare]; -if(((Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3)) +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 = ((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))); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; +})); +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))); if(!result) return i; @@ -834,22 +1185,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 = ((int (*)(void *, const void *, const void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_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 = onCompare(Dclass, (const void *)(uintptr_t)value, (const void *)(uintptr_t)data); if(!result) return i; @@ -860,47 +1226,78 @@ 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 = (struct __ecereNameSpace__ecere__com__Instance *)this ? (__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; +})) : 0; 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__ ({ +if((struct __ecereNameSpace__ecere__com__Instance *)this) +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); @@ -925,14 +1322,19 @@ 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) -(((void (* )(void * _class, void * data))class->templateArgs[2].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(class->templateArgs[2].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(data)))), data = 0); +(__ecereNameSpace__ecere__com__eSystem_Delete((void *)(uintptr_t)data), data = 0); (*this) = container; } @@ -950,11 +1352,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)); } @@ -963,17 +1370,201 @@ unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(struct _ { 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))__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); -return this->pointer != (((void *)0)); +})[__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; } +static void __ecereMethod___ecereNameSpace__ecere__com__Container__Sort(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int ascending, struct __ecereNameSpace__ecere__com__Instance * * lists); + +static void __ecereMethod___ecereNameSpace__ecere__com__Container__Sort(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int ascending, struct __ecereNameSpace__ecere__com__Instance ** lists) +{ +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 : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})); + +if(count >= 2 && ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[1].__anon1.__anon1.dataTypeClass == __ecereClass_int) +{ +struct __ecereNameSpace__ecere__com__Iterator __simpleStruct1 = +{ +0, 0 +}; +struct __ecereNameSpace__ecere__com__Iterator __simpleStruct0 = +{ +0, 0 +}; +struct __ecereNameSpace__ecere__com__Iterator a = +{ +this, 0 +}; +struct __ecereNameSpace__ecere__com__Iterator b = +{ +this, 0 +}; +struct __ecereNameSpace__ecere__com__Iterator mid = +{ +this, 0 +}; +struct __ecereNameSpace__ecere__com__Class * Dclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass; +unsigned int byRef = (Dclass->type == 1000 && !Dclass->byValueSystemClass) || Dclass->type == 2 || Dclass->type == 4 || Dclass->type == 3; +int (* onCompare)(void *, const void *, const void *) = (void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare]; +struct __ecereNameSpace__ecere__com__Instance * listA = lists[0]; +struct __ecereNameSpace__ecere__com__Instance * listB = lists[1]; + +__ecereMethod___ecereNameSpace__ecere__com__Iterator_Index(&mid, (uint64)(count / 2 - 1), 0); +while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&a)) +{ +(__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 = listA; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(listA, __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&a)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +if(a.pointer == mid.pointer) +break; +} +b.pointer = mid.pointer; +while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&b)) +(__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 = listB; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(listB, __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&b)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)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__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; +})); +__ecereMethod___ecereNameSpace__ecere__com__Container__Sort(listA, ascending, lists + 2); +__ecereMethod___ecereNameSpace__ecere__com__Container__Sort(listB, ascending, lists + 2); +a = (__simpleStruct0.container = listA, __simpleStruct0); +b = (__simpleStruct1.container = listB, __simpleStruct1); +__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&a); +__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&b); +while(a.pointer || b.pointer) +{ +int r; + +if(a.pointer && b.pointer) +{ +uint64 dataA = __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&a), dataB = __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&b); + +r = onCompare(Dclass, byRef ? ((char *)&dataA + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataA, byRef ? ((char *)&dataB + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataB); +} +else if(a.pointer) +r = -1; +else +r = 1; +if(!ascending) +r *= -1; +if(r < 0) +{ +(__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; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&a)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&a); +} +else +{ +(__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; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&b)) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&b); +} +} +(__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 = listA; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(listA) : (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 = listB; + +__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); +__internal_VirtualMethod ? __internal_VirtualMethod(listB) : (void)1; +})); +} +} + +void __ecereMethod___ecereNameSpace__ecere__com__Container_Sort(struct __ecereNameSpace__ecere__com__Instance * this, unsigned int ascending) +{ +int i, numLists = __ecereNameSpace__ecere__com__log2i((__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 : __ecereClass___ecereNameSpace__ecere__com__Container->_vTbl; +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +}))) * 2; +struct __ecereNameSpace__ecere__com__Instance ** lists = __ecereNameSpace__ecere__com__eSystem_New(sizeof(struct __ecereNameSpace__ecere__com__Instance *) * (numLists)); + +for(i = 0; i < numLists; i++) +lists[i] = __ecereNameSpace__ecere__com__eInstance_New(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class); +__ecereMethod___ecereNameSpace__ecere__com__Container__Sort(this, ascending, lists); +for(i = 0; i < numLists; i++) +(__ecereNameSpace__ecere__com__eInstance_DecRef(lists[i]), lists[i] = 0); +(__ecereNameSpace__ecere__com__eSystem_Delete(lists), lists = 0); +} + void __ecereRegisterModule_Container(struct __ecereNameSpace__ecere__com__Instance * module) { struct __ecereNameSpace__ecere__com__ClassTemplateArgument __simpleStruct2 = @@ -1030,6 +1621,7 @@ __ecereNameSpace__ecere__com__eClass_DoneAddingTemplateParameters(class); class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Container", 0, 0, 0, (void *)0, (void *)__ecereDestructor___ecereNameSpace__ecere__com__Container, module, 4, 1); if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class) __ecereClass___ecereNameSpace__ecere__com__Container = class; +__ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnCompare", 0, __ecereMethod___ecereNameSpace__ecere__com__Container_OnCompare, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnCopy", 0, __ecereMethod___ecereNameSpace__ecere__com__Container_OnCopy, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnFree", 0, __ecereMethod___ecereNameSpace__ecere__com__Container_OnFree, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__Container_OnGetString, 1); @@ -1041,7 +1633,7 @@ __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetPrev", "ecere:: __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetNext", "ecere::com::IteratorPointer GetNext(ecere::com::IteratorPointer pointer)", __ecereMethod___ecereNameSpace__ecere__com__Container_GetNext, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetData", "D GetData(ecere::com::IteratorPointer pointer)", __ecereMethod___ecereNameSpace__ecere__com__Container_GetData, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "SetData", "bool SetData(ecere::com::IteratorPointer pointer, D data)", 0, 1); -__ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetAtPosition", "ecere::com::IteratorPointer GetAtPosition(const I pos, bool create)", __ecereMethod___ecereNameSpace__ecere__com__Container_GetAtPosition, 1); +__ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetAtPosition", "ecere::com::IteratorPointer GetAtPosition(const I pos, bool create, bool * justAdded)", __ecereMethod___ecereNameSpace__ecere__com__Container_GetAtPosition, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Insert", "ecere::com::IteratorPointer Insert(ecere::com::IteratorPointer after, T value)", 0, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Add", "ecere::com::IteratorPointer Add(T value)", 0, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Remove", "void Remove(ecere::com::IteratorPointer it)", 0, 1); @@ -1053,6 +1645,7 @@ __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "FreeIterator", "vo __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "GetCount", "int GetCount()", __ecereMethod___ecereNameSpace__ecere__com__Container_GetCount, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Free", "void Free()", __ecereMethod___ecereNameSpace__ecere__com__Container_Free, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Delete", "void Delete(ecere::com::IteratorPointer i)", __ecereMethod___ecereNameSpace__ecere__com__Container_Delete, 1); +__ecereNameSpace__ecere__com__eClass_AddVirtualMethod(class, "Sort", "void Sort(bool ascending)", __ecereMethod___ecereNameSpace__ecere__com__Container_Sort, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(class, "TakeOut", "void TakeOut(const D d)", __ecereMethod___ecereNameSpace__ecere__com__Container_TakeOut, 1); __ecerePropM___ecereNameSpace__ecere__com__Container_copySrc = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "copySrc", "ecere::com::Container", __ecereProp___ecereNameSpace__ecere__com__Container_Set_copySrc, 0, 1); if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application)