extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
+extern unsigned int __ecereNameSpace__ecere__com__eClass_IsDerived(struct __ecereNameSpace__ecere__com__Class * _class, struct __ecereNameSpace__ecere__com__Class * from);
+
extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
extern struct Identifier * CopyIdentifier(struct Identifier * id);
+extern void FreeIdentifier(struct Identifier * id);
+
struct Type;
struct __ecereNameSpace__ecere__com__Property
char * name;
struct Symbol * symbol;
struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
+struct Specifier * nsSpec;
} __attribute__ ((gcc_struct)) __anon1;
struct
{
unsigned int size;
char * name;
char * typeName;
+struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
int classObjectType;
int alignment;
unsigned int offset;
unsigned int typedByReference : 1;
unsigned int casted : 1;
unsigned int pointerAlignment : 1;
+unsigned int isLong : 1;
} __attribute__ ((gcc_struct));
extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
struct Context * ctx;
int isIterator;
struct Expression * propCategory;
+unsigned int mustRegister;
} __attribute__ ((gcc_struct));
struct ClassImport
{
if(classSym && classSym->notYetDeclared)
{
+if(!classSym->mustRegister)
+{
if(!classSym->_import)
{
if(!classSym->module)
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&classSym->module->classes, classSym->_import);
}
classSym->_import->itself = 1;
+}
classSym->notYetDeclared = 0;
if(!classSym->__anon2.__anon1.pointerExternal && inCompiler)
{
{
struct TopoEdge * e, * next;
-for(e = ((struct TopoEdge *)(uintptr_t)((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)external->incoming + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first); e; e = next)
+for(e = ((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)external->incoming + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->first; e; e = next)
{
struct External * from = e->from;
-next = ((struct TopoEdge *)(uintptr_t)e->in.next);
+next = e->in.next;
if(((struct __ecereNameSpace__ecere__com__LinkList *)(((char *)from->incoming + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->count)
{
unsigned int reroute = 1;
struct TopoEdge * i;
struct __ecereNameSpace__ecere__com__Instance * __internalLinkList = createInstancesExternal->incoming;
-for(i = ((struct TopoEdge *)(uintptr_t)((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 *)((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;
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMembers->__anon1.dataMembers), nextMember);
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMember->identifiers), nextID);
ListAdd(partList, nextMember);
+FreeIdentifier(nextID);
}
}
}
}
member->initializer->__anon1.exp = MkExpInstance(MkInstantiation(spec, (((void *)0)), MkListOne(MkMembersInitList(partList))));
+FreeIdentifier(firstID);
member->identifiers = (((void *)0));
}
found = 1;
case 8:
{
exp->__anon1.member.exp->usage = (exp->__anon1.member.exp->usage & ~0x1) | (((unsigned int)(1)) << 0);
+if(exp->__anon1.member.memberType == 3 && exp->__anon1.member.exp->expType && exp->__anon1.member.exp->expType->thisClassFrom && exp->__anon1.member.exp->expType->kind == 8 && exp->__anon1.member.exp->expType->__anon1._class && exp->__anon1.member.exp->expType->__anon1._class->__anon1.registered && !__ecereNameSpace__ecere__com__eClass_IsDerived(exp->__anon1.member.exp->expType->thisClassFrom, exp->__anon1.member.exp->expType->__anon1._class->__anon1.registered))
+exp->__anon1.member.exp->expType->passAsTemplate = 1;
ProcessExpression(exp->__anon1.member.exp);
if(!exp->__anon1.member.memberType)
{
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMembers->__anon1.dataMembers), nextMember);
__ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*nextMember->identifiers), nextID);
ListAdd(partList, nextMember);
+FreeIdentifier(nextID);
}
}
}