1 /* Code generated from eC source file: pass1.ec */
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
7 #define __runtimePlatform 2
10 typedef long long int64;
11 typedef unsigned long long uint64;
15 #elif defined(__TINYC__)
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
27 typedef long long int64;
28 typedef unsigned long long uint64;
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
34 #define __ENDIAN_PAD(x) (8 - (x))
36 #define __ENDIAN_PAD(x) 0
39 # if defined(__GNUC__) || defined(__TINYC__)
40 # define ecere_stdcall __attribute__((__stdcall__))
41 # define ecere_gcc_struct __attribute__((gcc_struct))
43 # define ecere_stdcall __stdcall
44 # define ecere_gcc_struct
47 # define ecere_stdcall
48 # define ecere_gcc_struct
51 #include <sys/types.h>
54 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372, WIDE_STRING_LITERAL = 373
57 extern int propWatcherID;
59 unsigned int buildingECERECOM = 0;
61 unsigned int buildingECERECOMModule = 0;
63 extern unsigned int inCompiler;
65 extern const char * outputFile;
67 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp_Type_isPointerTypeSize;
69 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_first;
71 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__BTNode_next;
73 extern unsigned int parsingType;
75 extern const char * sourceFile;
77 static struct __ecereNameSpace__ecere__com__Instance * classPropValues;
79 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Iterator_data;
81 extern struct __ecereNameSpace__ecere__com__Property * __ecereProp_Type_isPointerType;
83 struct __ecereNameSpace__ecere__sys__OldList
92 struct __ecereNameSpace__ecere__com__DataValue
107 } ecere_gcc_struct __anon1;
110 struct __ecereNameSpace__ecere__com__SerialBuffer
112 unsigned char * _buffer;
118 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
120 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
122 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
124 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
126 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
130 struct InitDeclarator;
140 struct Instantiation;
166 struct __ecereNameSpace__ecere__com__LinkList
173 extern void Compiler_Error(const char * format, ...);
175 extern const char * __ecereNameSpace__ecere__GetTranslatedString(const char * name, const char * string, const char * stringAndContext);
177 extern char * __ecereNameSpace__ecere__sys__CopyString(const char * string);
179 extern char * __ecereNameSpace__ecere__sys__GetLastDirectory(const char * string, char * output);
181 extern unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string);
183 extern void FixModuleName(char * moduleName);
185 extern int sprintf(char * , const char * , ...);
187 extern char * QMkString(const char * source);
189 extern char * strcpy(char * , const char * );
191 extern void FullClassNameCat(char * output, const char * className, unsigned int includeTemplateParams);
193 extern char * strcat(char * , const char * );
195 extern int strcmp(const char * , const char * );
197 extern char * PrintInt64(long long result);
199 extern void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2);
201 extern unsigned int DummyMethod(void);
203 extern char * PrintUInt64(uint64 result);
205 extern size_t strlen(const char * );
207 struct __ecereNameSpace__ecere__com__IteratorPointer;
209 struct __ecereNameSpace__ecere__com__GlobalFunction;
211 int __ecereVMethodID_class_OnGetString;
213 void SetBuildingEcereCom(unsigned int b)
215 buildingECERECOM = b;
218 unsigned int GetBuildingEcereCom()
220 return buildingECERECOM;
223 void SetBuildingEcereComModule(unsigned int b)
225 buildingECERECOMModule = b;
228 unsigned int GetBuildingEcereComModule()
230 return buildingECERECOMModule;
233 extern struct __ecereNameSpace__ecere__sys__OldList * MkList(void);
235 extern struct __ecereNameSpace__ecere__sys__OldList * excludedSymbols;
237 extern struct __ecereNameSpace__ecere__sys__OldList * CopyList(struct __ecereNameSpace__ecere__sys__OldList * source, void * (* CopyFunction)(void * ));
239 extern void ListAdd(struct __ecereNameSpace__ecere__sys__OldList * list, void * item);
241 extern struct __ecereNameSpace__ecere__sys__OldList * MkListOne(void * item);
243 extern struct __ecereNameSpace__ecere__sys__OldList * ast;
245 struct __ecereNameSpace__ecere__com__EnumClassData
247 struct __ecereNameSpace__ecere__sys__OldList values;
251 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(struct __ecereNameSpace__ecere__sys__OldList * this, void * prevItem, void * item);
253 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
255 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove(struct __ecereNameSpace__ecere__sys__OldList * this, void * item);
257 extern struct Pointer * MkPointer(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Pointer * pointer);
259 extern struct Attrib * MkAttrib(int type, struct __ecereNameSpace__ecere__sys__OldList * attribs);
261 extern struct ExtDecl * MkExtDeclAttrib(struct Attrib * attr);
263 extern struct MembersInit * MkMembersInitList(struct __ecereNameSpace__ecere__sys__OldList * dataMembers);
267 struct CodePosition start;
268 struct CodePosition end;
271 extern struct Location yylloc;
275 static struct Statement * registerModuleBody;
277 static struct Statement * unregisterModuleBody;
279 extern struct Statement * MkCompoundStmt(struct __ecereNameSpace__ecere__sys__OldList * declarations, struct __ecereNameSpace__ecere__sys__OldList * statements);
281 extern struct Statement * MkExpressionStmt(struct __ecereNameSpace__ecere__sys__OldList * expressions);
283 extern struct Statement * MkIfStmt(struct __ecereNameSpace__ecere__sys__OldList * exp, struct Statement * statement, struct Statement * elseStmt);
287 static struct External * registerModuleExternal;
289 static struct External * unregisterModuleExternal;
291 extern void FreeExternal(struct External * external);
293 extern struct External * DeclareStruct(struct External * neededBy, const char * name, unsigned int skipNoHead, unsigned int needDereference);
295 extern struct External * curExternal;
299 extern struct Context * globalContext;
301 extern struct Context * curContext;
303 extern struct Context * PushContext(void);
305 extern void PopContext(struct Context * ctx);
309 extern struct Attribute * MkAttribute(char * attr, struct Expression * exp);
311 extern struct Expression * MkExpConstant(const char * string);
313 extern struct Expression * MkExpString(const char * string);
315 extern struct Expression * MkExpOp(struct Expression * exp1, int op, struct Expression * exp2);
317 extern struct Expression * MkExpCall(struct Expression * expression, struct __ecereNameSpace__ecere__sys__OldList * arguments);
319 extern struct Expression * CopyExpression(struct Expression * exp);
321 extern struct Expression * MkExpCondition(struct Expression * cond, struct __ecereNameSpace__ecere__sys__OldList * expressions, struct Expression * elseExp);
323 extern void ProcessExpressionType(struct Expression * exp);
325 extern void FreeExpContents(struct Expression * exp);
327 extern void ComputeExpression(struct Expression * exp);
329 extern struct Expression * MkExpInstance(struct Instantiation * inst);
331 extern void PrintExpression(struct Expression * exp, char * string);
333 struct __ecereNameSpace__ecere__sys__BTNode;
335 struct __ecereNameSpace__ecere__sys__BTNode
338 struct __ecereNameSpace__ecere__sys__BTNode * parent;
339 struct __ecereNameSpace__ecere__sys__BTNode * left;
340 struct __ecereNameSpace__ecere__sys__BTNode * right;
344 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
346 struct __ecereNameSpace__ecere__com__Class;
348 struct __ecereNameSpace__ecere__com__Instance
351 struct __ecereNameSpace__ecere__com__Class * _class;
355 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
357 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
359 extern void ReplaceThisClassSpecifiers(struct __ecereNameSpace__ecere__sys__OldList * specs, struct __ecereNameSpace__ecere__com__Class * _class);
361 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, long long value);
363 extern long long __ecereNameSpace__ecere__com__eEnum_AddValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string);
365 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
367 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
369 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
371 struct __ecereNameSpace__ecere__com__Iterator
373 struct __ecereNameSpace__ecere__com__Instance * container;
374 struct __ecereNameSpace__ecere__com__IteratorPointer * pointer;
377 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Add;
379 int __ecereVMethodID___ecereNameSpace__ecere__com__Container_Free;
381 extern void __ecereNameSpace__ecere__com__eInstance_DecRef(struct __ecereNameSpace__ecere__com__Instance * instance);
383 unsigned int __ecereMethod___ecereNameSpace__ecere__com__Iterator_Next();
385 uint64 __ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(struct __ecereNameSpace__ecere__com__Iterator * this);
387 void __ecereProp___ecereNameSpace__ecere__com__Iterator_Set_data(struct __ecereNameSpace__ecere__com__Iterator * this, uint64 value);
389 void __ecereDestroyModuleInstances_pass1()
391 (__ecereNameSpace__ecere__com__eInstance_DecRef(classPropValues), classPropValues = 0);
394 struct __ecereNameSpace__ecere__com__Property;
396 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
398 extern void __ecereNameSpace__ecere__com__eInstance_StopWatching(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, struct __ecereNameSpace__ecere__com__Instance * object);
400 extern void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
402 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
406 extern struct Specifier * MkSpecifier(int specifier);
408 extern struct Specifier * CopySpecifier(struct Specifier * spec);
410 extern struct Specifier * MkSpecifierName(const char * name);
412 extern struct Specifier * MkSpecifierExtended(struct ExtDecl * extDecl);
414 extern struct Instantiation * MkInstantiation(struct Specifier * _class, struct Expression * exp, struct __ecereNameSpace__ecere__sys__OldList * members);
416 struct __ecereNameSpace__ecere__com__Method;
418 extern void ProcessMethodType(struct __ecereNameSpace__ecere__com__Method * method);
420 extern void DeclareMethod(struct External * neededFor, struct __ecereNameSpace__ecere__com__Method * method, const char * name);
424 struct __ecereNameSpace__ecere__com__Property
426 struct __ecereNameSpace__ecere__com__Property * prev;
427 struct __ecereNameSpace__ecere__com__Property * next;
429 unsigned int isProperty;
432 struct __ecereNameSpace__ecere__com__Class * _class;
433 const char * dataTypeString;
434 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
435 struct Type * dataType;
436 void (* Set)(void * , int);
437 int (* Get)(void * );
438 unsigned int (* IsSet)(void * );
442 unsigned int conversion;
443 unsigned int watcherOffset;
444 const char * category;
445 unsigned int compiled;
446 unsigned int selfWatchable;
447 unsigned int isWatchable;
450 struct __ecereNameSpace__ecere__com__Method
453 struct __ecereNameSpace__ecere__com__Method * parent;
454 struct __ecereNameSpace__ecere__com__Method * left;
455 struct __ecereNameSpace__ecere__com__Method * right;
460 struct __ecereNameSpace__ecere__com__Class * _class;
462 const char * dataTypeString;
463 struct Type * dataType;
467 extern struct Type * ProcessTypeString(const char * string, unsigned int staticMethod);
469 extern unsigned int MatchTypes(struct Type * source, struct Type * dest, struct __ecereNameSpace__ecere__sys__OldList * conversions, struct __ecereNameSpace__ecere__com__Class * owningClassSource, struct __ecereNameSpace__ecere__com__Class * owningClassDest, unsigned int doConversion, unsigned int enumBaseType, unsigned int acceptReversedParams, unsigned int isConversionExploration, unsigned int warnConst);
471 extern void FreeType(struct Type * type);
473 extern int ComputeTypeSize(struct Type * type);
475 extern void PrintType(struct Type * type, char * string, unsigned int printName, unsigned int fullName);
482 struct Symbol * parent;
483 struct Symbol * left;
484 struct Symbol * right;
489 struct __ecereNameSpace__ecere__com__Method * method;
490 struct __ecereNameSpace__ecere__com__Property * _property;
491 struct __ecereNameSpace__ecere__com__Class * registered;
492 } ecere_gcc_struct __anon1;
493 unsigned int notYetDeclared;
498 struct External * pointerExternal;
499 struct External * structExternal;
500 } ecere_gcc_struct __anon1;
503 struct External * externalGet;
504 struct External * externalSet;
505 struct External * externalPtr;
506 struct External * externalIsSet;
507 } ecere_gcc_struct __anon2;
510 struct External * methodExternal;
511 struct External * methodCodeExternal;
512 } ecere_gcc_struct __anon3;
513 } ecere_gcc_struct __anon2;
514 unsigned int imported;
515 unsigned int declaredStructSym;
516 struct __ecereNameSpace__ecere__com__Class * _class;
517 unsigned int declaredStruct;
518 unsigned int needConstructor;
519 unsigned int needDestructor;
520 char * constructorName;
523 char * destructorName;
524 struct ModuleImport * module;
525 struct ClassImport * _import;
526 struct Location nameLoc;
527 unsigned int isParam;
528 unsigned int isRemote;
529 unsigned int isStruct;
530 unsigned int fireWatchersDone;
532 unsigned int classData;
533 unsigned int isStatic;
535 struct __ecereNameSpace__ecere__sys__OldList * templateParams;
536 struct __ecereNameSpace__ecere__sys__OldList templatedClasses;
537 struct Context * ctx;
539 struct Expression * propCategory;
540 unsigned int mustRegister;
543 extern struct Symbol * FindClass(const char * name);
547 extern struct Declarator * GetFuncDecl(struct Declarator * decl);
549 extern struct Declarator * CopyDeclarator(struct Declarator * declarator);
551 extern struct Declarator * MkDeclaratorFunction(struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * parameters);
553 extern struct Declarator * MkDeclaratorPointer(struct Pointer * pointer, struct Declarator * declarator);
555 extern struct Type * ProcessType(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
557 extern char * StringFromSpecDecl(struct __ecereNameSpace__ecere__sys__OldList * specs, struct Declarator * decl);
559 struct TemplateDatatype
561 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
562 struct Declarator * decl;
569 struct Declarator * prev;
570 struct Declarator * next;
573 struct Symbol * symbol;
574 struct Declarator * declarator;
577 struct Identifier * identifier;
580 struct Expression * exp;
581 struct Expression * posExp;
582 struct Attrib * attrib;
583 } ecere_gcc_struct structDecl;
586 struct Expression * exp;
587 struct Specifier * enumClass;
588 } ecere_gcc_struct array;
591 struct __ecereNameSpace__ecere__sys__OldList * parameters;
592 } ecere_gcc_struct function;
595 struct Pointer * pointer;
596 } ecere_gcc_struct pointer;
599 struct ExtDecl * extended;
600 } ecere_gcc_struct extended;
601 } ecere_gcc_struct __anon1;
604 extern struct Declarator * MkDeclaratorIdentifier(struct Identifier * id);
606 extern struct Identifier * MkIdentifier(const char * string);
608 extern struct Expression * MkExpIdentifier(struct Identifier * id);
610 extern struct Expression * MkExpMember(struct Expression * expression, struct Identifier * member);
612 extern struct Specifier * MkStructOrUnion(int type, struct Identifier * id, struct __ecereNameSpace__ecere__sys__OldList * definitions);
616 struct Identifier * prev;
617 struct Identifier * next;
619 struct Symbol * classSym;
620 struct Specifier * _class;
622 struct Identifier * badID;
625 extern struct Identifier * GetDeclId(struct Declarator * decl);
627 struct ClassPropertyValue
629 struct __ecereNameSpace__ecere__com__Class * regClass;
630 struct Identifier * id;
631 struct Expression * exp;
634 extern void FreeIdentifier(struct Identifier * id);
636 struct __ecereNameSpace__ecere__sys__NamedLink64;
638 struct __ecereNameSpace__ecere__sys__NamedLink64
640 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
641 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
646 struct __ecereNameSpace__ecere__sys__OldLink;
648 struct __ecereNameSpace__ecere__sys__OldLink
650 struct __ecereNameSpace__ecere__sys__OldLink * prev;
651 struct __ecereNameSpace__ecere__sys__OldLink * next;
655 struct ClassFunction;
659 struct ClassFunction * prev;
660 struct ClassFunction * next;
662 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
663 struct Declarator * declarator;
664 struct __ecereNameSpace__ecere__sys__OldList * declarations;
665 struct Statement * body;
666 struct __ecereNameSpace__ecere__com__Class * _class;
667 struct __ecereNameSpace__ecere__sys__OldList attached;
670 struct Symbol * propSet;
671 unsigned int isVirtual;
672 unsigned int isConstructor;
673 unsigned int isDestructor;
674 unsigned int dontMangle;
679 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
681 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
683 struct PropertyWatch;
687 struct PropertyWatch * prev;
688 struct PropertyWatch * next;
690 struct Statement * compound;
691 struct __ecereNameSpace__ecere__sys__OldList * properties;
692 unsigned int deleteWatch;
695 extern void FreePropertyWatch(struct PropertyWatch * watcher);
701 struct Statement * prev;
702 struct Statement * next;
707 struct __ecereNameSpace__ecere__sys__OldList * expressions;
710 struct Identifier * id;
711 struct Statement * stmt;
712 } ecere_gcc_struct labeled;
715 struct Expression * exp;
716 struct Statement * stmt;
717 } ecere_gcc_struct caseStmt;
720 struct __ecereNameSpace__ecere__sys__OldList * declarations;
721 struct __ecereNameSpace__ecere__sys__OldList * statements;
722 struct Context * context;
723 unsigned int isSwitch;
724 } ecere_gcc_struct compound;
727 struct __ecereNameSpace__ecere__sys__OldList * exp;
728 struct Statement * stmt;
729 struct Statement * elseStmt;
730 } ecere_gcc_struct ifStmt;
733 struct __ecereNameSpace__ecere__sys__OldList * exp;
734 struct Statement * stmt;
735 } ecere_gcc_struct switchStmt;
738 struct __ecereNameSpace__ecere__sys__OldList * exp;
739 struct Statement * stmt;
740 } ecere_gcc_struct whileStmt;
743 struct __ecereNameSpace__ecere__sys__OldList * exp;
744 struct Statement * stmt;
745 } ecere_gcc_struct doWhile;
748 struct Statement * init;
749 struct Statement * check;
750 struct __ecereNameSpace__ecere__sys__OldList * increment;
751 struct Statement * stmt;
752 } ecere_gcc_struct forStmt;
755 struct Identifier * id;
756 } ecere_gcc_struct gotoStmt;
759 struct Specifier * spec;
761 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
762 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
763 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
764 } ecere_gcc_struct asmStmt;
767 struct Expression * watcher;
768 struct Expression * object;
769 struct __ecereNameSpace__ecere__sys__OldList * watches;
770 } ecere_gcc_struct _watch;
773 struct Identifier * id;
774 struct __ecereNameSpace__ecere__sys__OldList * exp;
775 struct __ecereNameSpace__ecere__sys__OldList * filter;
776 struct Statement * stmt;
777 } ecere_gcc_struct forEachStmt;
778 struct Declaration * decl;
779 } ecere_gcc_struct __anon1;
782 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
786 struct Declaration * prev;
787 struct Declaration * next;
794 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
795 struct __ecereNameSpace__ecere__sys__OldList * declarators;
796 } ecere_gcc_struct __anon1;
797 struct Instantiation * inst;
800 struct Identifier * id;
801 struct Expression * exp;
802 } ecere_gcc_struct __anon2;
803 } ecere_gcc_struct __anon1;
804 struct Specifier * extStorage;
805 struct Symbol * symbol;
811 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
813 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
815 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
819 struct Initializer * prev;
820 struct Initializer * next;
825 struct Expression * exp;
826 struct __ecereNameSpace__ecere__sys__OldList * list;
827 } ecere_gcc_struct __anon1;
828 unsigned int isConstant;
829 struct Identifier * id;
832 struct FunctionDefinition;
834 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
836 struct FunctionDefinition
838 struct FunctionDefinition * prev;
839 struct FunctionDefinition * next;
841 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
842 struct Declarator * declarator;
843 struct __ecereNameSpace__ecere__sys__OldList * declarations;
844 struct Statement * body;
845 struct __ecereNameSpace__ecere__com__Class * _class;
846 struct __ecereNameSpace__ecere__sys__OldList attached;
849 struct Symbol * propSet;
851 unsigned int propertyNoThis;
854 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
856 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
862 struct TypeName * prev;
863 struct TypeName * next;
865 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
866 struct Declarator * declarator;
868 struct Expression * bitCount;
871 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
873 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
875 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
879 struct Expression * prev;
880 struct Expression * next;
888 struct Identifier * identifier;
889 } ecere_gcc_struct __anon1;
890 struct Statement * compound;
891 struct Instantiation * instance;
895 unsigned int intlString;
896 unsigned int wideString;
897 } ecere_gcc_struct __anon2;
898 struct __ecereNameSpace__ecere__sys__OldList * list;
901 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
902 struct Declarator * decl;
903 } ecere_gcc_struct _classExp;
906 struct Identifier * id;
907 } ecere_gcc_struct classData;
910 struct Expression * exp;
911 struct __ecereNameSpace__ecere__sys__OldList * arguments;
912 struct Location argLoc;
913 } ecere_gcc_struct call;
916 struct Expression * exp;
917 struct __ecereNameSpace__ecere__sys__OldList * index;
918 } ecere_gcc_struct index;
921 struct Expression * exp;
922 struct Identifier * member;
924 unsigned int thisPtr;
925 } ecere_gcc_struct member;
929 struct Expression * exp1;
930 struct Expression * exp2;
931 } ecere_gcc_struct op;
932 struct TypeName * typeName;
933 struct Specifier * _class;
936 struct TypeName * typeName;
937 struct Expression * exp;
938 } ecere_gcc_struct cast;
941 struct Expression * cond;
942 struct __ecereNameSpace__ecere__sys__OldList * exp;
943 struct Expression * elseExp;
944 } ecere_gcc_struct cond;
947 struct TypeName * typeName;
948 struct Expression * size;
949 } ecere_gcc_struct _new;
952 struct TypeName * typeName;
953 struct Expression * size;
954 struct Expression * exp;
955 } ecere_gcc_struct _renew;
959 struct Identifier * id;
960 } ecere_gcc_struct db;
963 struct Expression * ds;
964 struct Expression * name;
965 } ecere_gcc_struct dbopen;
968 struct TypeName * typeName;
969 struct Initializer * initializer;
970 } ecere_gcc_struct initializer;
973 struct Expression * exp;
974 struct TypeName * typeName;
975 } ecere_gcc_struct vaArg;
976 } ecere_gcc_struct __anon1;
977 unsigned int debugValue;
978 struct __ecereNameSpace__ecere__com__DataValue val;
980 unsigned int hasAddress;
981 struct Type * expType;
982 struct Type * destType;
985 unsigned int byReference;
986 unsigned int isConstant;
987 unsigned int addedThis;
988 unsigned int needCast;
989 unsigned int thisPtr;
990 unsigned int opDestType;
991 unsigned int needTemplateCast;
998 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
999 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1000 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1001 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1002 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1003 unsigned int (* Neg)(struct Expression *, struct Operand *);
1004 unsigned int (* Inc)(struct Expression *, struct Operand *);
1005 unsigned int (* Dec)(struct Expression *, struct Operand *);
1006 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1007 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1008 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1009 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1010 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1011 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1012 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1013 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1014 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
1015 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
1016 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
1017 unsigned int (* BitNot)(struct Expression *, struct Operand *);
1018 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1019 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1020 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1021 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1022 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1023 unsigned int (* Not)(struct Expression *, struct Operand *);
1024 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
1025 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
1026 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
1027 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
1028 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
1029 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
1030 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1031 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1032 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1039 unsigned int ptrSize;
1052 } ecere_gcc_struct __anon1;
1056 extern struct Operand GetOperand(struct Expression * exp);
1058 struct __ecereNameSpace__ecere__sys__BinaryTree;
1060 struct __ecereNameSpace__ecere__sys__BinaryTree
1062 struct __ecereNameSpace__ecere__sys__BTNode * root;
1064 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
1065 void (* FreeKey)(void * key);
1068 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1070 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1072 struct TemplateParameter;
1076 struct Specifier * prev;
1077 struct Specifier * next;
1078 struct Location loc;
1085 struct ExtDecl * extDecl;
1087 struct Symbol * symbol;
1088 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
1089 struct Specifier * nsSpec;
1090 } ecere_gcc_struct __anon1;
1093 struct Identifier * id;
1094 struct __ecereNameSpace__ecere__sys__OldList * list;
1095 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
1096 struct __ecereNameSpace__ecere__sys__OldList * definitions;
1097 unsigned int addNameSpace;
1098 struct Context * ctx;
1099 struct ExtDecl * extDeclStruct;
1100 } ecere_gcc_struct __anon2;
1101 struct Expression * expression;
1102 struct Specifier * _class;
1103 struct TemplateParameter * templateParameter;
1104 } ecere_gcc_struct __anon1;
1114 struct Symbol * _class;
1117 struct __ecereNameSpace__ecere__sys__OldList members;
1119 } ecere_gcc_struct __anon1;
1122 struct Type * returnType;
1123 struct __ecereNameSpace__ecere__sys__OldList params;
1124 struct Symbol * thisClass;
1125 unsigned int staticMethod;
1126 struct TemplateParameter * thisClassTemplate;
1127 } ecere_gcc_struct __anon2;
1130 struct __ecereNameSpace__ecere__com__Method * method;
1131 struct __ecereNameSpace__ecere__com__Class * methodClass;
1132 struct __ecereNameSpace__ecere__com__Class * usedClass;
1133 } ecere_gcc_struct __anon3;
1136 struct Type * arrayType;
1138 struct Expression * arraySizeExp;
1139 unsigned int freeExp;
1140 struct Symbol * enumClass;
1141 } ecere_gcc_struct __anon4;
1143 struct TemplateParameter * templateParameter;
1144 } ecere_gcc_struct __anon1;
1149 struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
1151 int classObjectType;
1153 unsigned int offset;
1157 unsigned int isSigned : 1;
1158 unsigned int constant : 1;
1159 unsigned int truth : 1;
1160 unsigned int byReference : 1;
1161 unsigned int extraParam : 1;
1162 unsigned int directClassAccess : 1;
1163 unsigned int computing : 1;
1164 unsigned int keepCast : 1;
1165 unsigned int passAsTemplate : 1;
1166 unsigned int dllExport : 1;
1167 unsigned int attrStdcall : 1;
1168 unsigned int declaredWithStruct : 1;
1169 unsigned int typedByReference : 1;
1170 unsigned int casted : 1;
1171 unsigned int pointerAlignment : 1;
1172 unsigned int isLong : 1;
1173 unsigned int signedBeforePromotion : 1;
1176 unsigned int __ecereProp_Type_Get_isPointerTypeSize(struct Type * this);
1178 unsigned int __ecereProp_Type_Get_isPointerType(struct Type * this);
1180 struct __ecereNameSpace__ecere__com__Module;
1182 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_FindProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, struct __ecereNameSpace__ecere__com__Instance * module);
1184 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1186 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
1188 extern struct __ecereNameSpace__ecere__com__GlobalFunction * __ecereNameSpace__ecere__com__eSystem_RegisterFunction(const char * name, const char * type, void * func, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
1190 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, const char * name, const char * baseName, int size, int sizeClass, unsigned int (* Constructor)(void * ), void (* Destructor)(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess);
1192 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1194 struct __ecereNameSpace__ecere__com__DataMember;
1196 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1202 const char * dataTypeString;
1203 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1204 } ecere_gcc_struct __anon1;
1205 struct __ecereNameSpace__ecere__com__DataValue expression;
1208 const char * memberString;
1211 struct __ecereNameSpace__ecere__com__DataMember * member;
1212 struct __ecereNameSpace__ecere__com__Property * prop;
1213 struct __ecereNameSpace__ecere__com__Method * method;
1214 } ecere_gcc_struct __anon1;
1215 } ecere_gcc_struct __anon2;
1216 } ecere_gcc_struct __anon1;
1219 struct __ecereNameSpace__ecere__com__DataMember
1221 struct __ecereNameSpace__ecere__com__DataMember * prev;
1222 struct __ecereNameSpace__ecere__com__DataMember * next;
1224 unsigned int isProperty;
1227 struct __ecereNameSpace__ecere__com__Class * _class;
1228 const char * dataTypeString;
1229 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1230 struct Type * dataType;
1234 struct __ecereNameSpace__ecere__sys__OldList members;
1235 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1237 short structAlignment;
1238 short pointerAlignment;
1241 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1243 struct __ecereNameSpace__ecere__com__BitMember;
1245 struct __ecereNameSpace__ecere__com__BitMember
1247 struct __ecereNameSpace__ecere__com__BitMember * prev;
1248 struct __ecereNameSpace__ecere__com__BitMember * next;
1250 unsigned int isProperty;
1253 struct __ecereNameSpace__ecere__com__Class * _class;
1254 const char * dataTypeString;
1255 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1256 struct Type * dataType;
1263 struct __ecereNameSpace__ecere__com__ClassProperty;
1265 struct __ecereNameSpace__ecere__com__ClassProperty
1268 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1269 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1270 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1272 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1273 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1274 const char * dataTypeString;
1275 struct Type * dataType;
1276 unsigned int constant;
1279 struct ClassDefinition;
1283 struct External * prev;
1284 struct External * next;
1285 struct Location loc;
1287 struct Symbol * symbol;
1290 struct FunctionDefinition * function;
1291 struct ClassDefinition * _class;
1292 struct Declaration * declaration;
1293 char * importString;
1294 struct Identifier * id;
1295 struct DBTableDef * table;
1296 } ecere_gcc_struct __anon1;
1298 struct External * fwdDecl;
1299 struct __ecereNameSpace__ecere__com__Instance * outgoing;
1300 struct __ecereNameSpace__ecere__com__Instance * incoming;
1301 int nonBreakableIncoming;
1306 struct Context * parent;
1307 struct __ecereNameSpace__ecere__sys__BinaryTree types;
1308 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1309 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
1310 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
1313 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
1314 struct ClassDefinition * classDef;
1315 unsigned int templateTypesOnly;
1316 unsigned int hasNameSpace;
1319 struct ClassDefinition
1321 struct ClassDefinition * prev;
1322 struct ClassDefinition * next;
1323 struct Location loc;
1324 struct Specifier * _class;
1325 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
1326 struct __ecereNameSpace__ecere__sys__OldList * definitions;
1327 struct Symbol * symbol;
1328 struct Location blockStart;
1329 struct Location nameLoc;
1331 unsigned int deleteWatchable;
1334 void __ecereMethod_External_CreateUniqueEdge(struct External * this, struct External * from, unsigned int soft);
1340 struct Enumerator * prev;
1341 struct Enumerator * next;
1342 struct Location loc;
1343 struct Identifier * id;
1344 struct Expression * exp;
1347 struct TemplateArgument;
1349 struct TemplateParameter
1351 struct TemplateParameter * prev;
1352 struct TemplateParameter * next;
1353 struct Location loc;
1355 struct Identifier * identifier;
1358 struct TemplateDatatype * dataType;
1360 } ecere_gcc_struct __anon1;
1361 struct TemplateArgument * defaultArgument;
1362 const char * dataTypeString;
1363 struct Type * baseType;
1366 struct TemplateArgument
1368 struct TemplateArgument * prev;
1369 struct TemplateArgument * next;
1370 struct Location loc;
1371 struct Identifier * name;
1375 struct Expression * expression;
1376 struct Identifier * identifier;
1377 struct TemplateDatatype * templateDatatype;
1378 } ecere_gcc_struct __anon1;
1383 typedef union YYSTYPE
1388 struct Identifier * id;
1389 struct Expression * exp;
1390 struct Specifier * specifier;
1391 struct __ecereNameSpace__ecere__sys__OldList * list;
1392 struct Enumerator * enumerator;
1393 struct Declarator * declarator;
1394 struct Pointer * pointer;
1395 struct Initializer * initializer;
1396 struct InitDeclarator * initDeclarator;
1397 struct TypeName * typeName;
1398 struct Declaration * declaration;
1399 struct Statement * stmt;
1400 struct FunctionDefinition * function;
1401 struct External * external;
1402 struct Context * context;
1403 struct AsmField * asmField;
1404 struct Attrib * attrib;
1405 struct ExtDecl * extDecl;
1406 struct Attribute * attribute;
1407 struct Instantiation * instance;
1408 struct MembersInit * membersInit;
1409 struct MemberInit * memberInit;
1410 struct ClassFunction * classFunction;
1411 struct ClassDefinition * _class;
1412 struct ClassDef * classDef;
1413 struct PropertyDef * prop;
1415 struct Symbol * symbol;
1416 struct PropertyWatch * propertyWatch;
1417 struct TemplateParameter * templateParameter;
1418 struct TemplateArgument * templateArgument;
1419 struct TemplateDatatype * templateDatatype;
1420 struct DBTableEntry * dbtableEntry;
1421 struct DBIndexItem * dbindexItem;
1422 struct DBTableDef * dbtableDef;
1423 } ecere_gcc_struct YYSTYPE;
1425 extern YYSTYPE yylval;
1429 struct ClassDef * prev;
1430 struct ClassDef * next;
1431 struct Location loc;
1435 struct Declaration * decl;
1436 struct ClassFunction * function;
1437 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1438 struct PropertyDef * propertyDef;
1439 struct PropertyWatch * propertyWatch;
1441 struct Identifier * defaultProperty;
1444 struct Identifier * id;
1445 struct Initializer * initializer;
1446 } ecere_gcc_struct __anon1;
1447 } ecere_gcc_struct __anon1;
1452 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
1454 struct __ecereNameSpace__ecere__com__NameSpace;
1456 struct __ecereNameSpace__ecere__com__NameSpace
1459 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1460 struct __ecereNameSpace__ecere__com__NameSpace * left;
1461 struct __ecereNameSpace__ecere__com__NameSpace * right;
1463 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1464 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1465 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1466 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1467 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1470 struct __ecereNameSpace__ecere__com__Class
1472 struct __ecereNameSpace__ecere__com__Class * prev;
1473 struct __ecereNameSpace__ecere__com__Class * next;
1479 unsigned int (* Constructor)(void * );
1480 void (* Destructor)(void * );
1483 struct __ecereNameSpace__ecere__com__Class * base;
1484 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
1485 struct __ecereNameSpace__ecere__sys__BinaryTree members;
1486 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
1487 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
1488 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
1489 struct __ecereNameSpace__ecere__sys__OldList derivatives;
1493 struct __ecereNameSpace__ecere__com__Instance * module;
1494 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1495 const char * dataTypeString;
1496 struct Type * dataType;
1498 int defaultAlignment;
1499 void (* Initialize)();
1501 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1502 const char * designerClass;
1503 unsigned int noExpansion;
1504 const char * defaultProperty;
1505 unsigned int comRedefinition;
1508 unsigned int internalDecl;
1510 unsigned int computeSize;
1511 short structAlignment;
1512 short pointerAlignment;
1513 int destructionWatchOffset;
1515 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1516 int inheritanceAccess;
1517 const char * fullName;
1519 struct __ecereNameSpace__ecere__sys__OldList conversions;
1520 struct __ecereNameSpace__ecere__sys__OldList templateParams;
1521 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
1522 struct __ecereNameSpace__ecere__com__Class * templateClass;
1523 struct __ecereNameSpace__ecere__sys__OldList templatized;
1525 unsigned int isInstanceClass;
1526 unsigned int byValueSystemClass;
1529 struct __ecereNameSpace__ecere__com__Application
1532 const char * * argv;
1534 unsigned int isGUIApp;
1535 struct __ecereNameSpace__ecere__sys__OldList allModules;
1536 char * parsedCommand;
1537 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1540 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1543 GetNameSpaceString(ns->parent, string);
1546 strcat(string, ns->name);
1547 strcat(string, "::");
1551 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue;
1553 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1555 struct Type * type = (((void *)0));
1556 struct Symbol * symbol;
1557 struct External * external = (((void *)0));
1559 if(defs && func->declarator)
1561 struct FunctionDefinition * function = (((void *)0));
1562 struct Symbol * propSymbol;
1566 if(!func->specifiers)
1567 func->specifiers = MkList();
1570 struct Specifier * s;
1572 for(s = (*func->specifiers).first; s; s = s->next)
1573 if(s->type == 0 && s->__anon1.specifier == STATIC)
1576 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1579 propSymbol = func->declarator->symbol;
1580 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1581 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1582 func->declarator->symbol = (((void *)0));
1583 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1584 func->declarator->symbol = (((void *)0));
1585 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1586 func->declarator->symbol = (((void *)0));
1588 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0);
1589 function->propSet = func->propSet;
1590 function->type = func->type;
1592 func->type->refCount++;
1593 ProcessFunctionBody(function, func->body);
1594 external = MkExternalFunction(function);
1595 external->symbol = func->declarator->symbol;
1596 external->__anon1.function->_class = func->_class;
1598 symbol = func->declarator->symbol;
1599 if(!func->dontMangle)
1601 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1603 func->declarator->symbol->__anon2.__anon3.methodExternal = external;
1604 if(method && method->symbol)
1605 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external;
1606 if(method && method->type == 1)
1608 struct Type * methodDataType;
1610 ProcessMethodType(method);
1611 methodDataType = method->dataType;
1612 type = symbol->type;
1613 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate)
1615 if(method->dataType->__anon1.__anon2.thisClassTemplate)
1617 if(owningClass->templateArgs)
1619 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate);
1621 type->byReference = method->dataType->byReference;
1622 methodDataType = ProcessTypeString(method->dataTypeString, 0);
1623 type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = arg ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0));
1626 else if(method->dataType->__anon1.__anon2.staticMethod)
1627 type->__anon1.__anon2.staticMethod = 1;
1628 else if(method->dataType->__anon1.__anon2.thisClass)
1630 type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass;
1631 type->byReference = method->dataType->byReference;
1635 if(!owningClass->symbol)
1636 owningClass->symbol = FindClass(owningClass->fullName);
1637 type->__anon1.__anon2.thisClass = owningClass->symbol;
1638 type->extraParam = 1;
1642 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 1, 1, 1, 0, 1))
1644 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name);
1648 struct Type * typeParam;
1649 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1651 if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first)
1653 struct TypeName * param = (*funcDecl->__anon1.function.parameters).first;
1655 for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next)
1657 if(typeParam->classObjectType)
1659 param->classObjectType = typeParam->classObjectType;
1660 if(param->declarator && param->declarator->symbol)
1661 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1663 param = param ? param->next : (((void *)0));
1667 if(methodDataType != method->dataType)
1668 FreeType(methodDataType);
1672 type = symbol->type;
1673 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass)
1675 if(owningClass && !owningClass->symbol)
1676 owningClass->symbol = FindClass(owningClass->fullName);
1677 type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1683 if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass)
1685 if(!owningClass->symbol)
1686 owningClass->symbol = FindClass(owningClass->fullName);
1687 symbol->type->__anon1.__anon2.thisClass = owningClass->symbol;
1689 if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion)
1691 if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1)
1693 if(owningClass->type != 1)
1694 symbol->type->__anon1.__anon2.thisClass = (((void *)0));
1697 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1699 propSymbol->__anon2.__anon2.externalGet = external;
1701 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1703 propSymbol->__anon2.__anon2.externalSet = external;
1705 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1707 propSymbol->__anon2.__anon2.externalIsSet = external;
1717 func->declarator = (((void *)0));
1718 func->specifiers = (((void *)0));
1719 func->body = (((void *)0));
1720 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1724 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1726 if(method && method->symbol)
1727 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0));
1728 if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external)
1729 func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0));
1730 func->declarator = (((void *)0));
1731 func->specifiers = (((void *)0));
1732 FreeExternal(external);
1737 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1738 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1739 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1740 external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator);
1741 external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, (void *)(CopySpecifier));
1742 external->__anon1.function->body = (((void *)0));
1748 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, const char * className, struct Statement * statement)
1750 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1751 struct __ecereNameSpace__ecere__com__DataMember * member;
1752 struct __ecereNameSpace__ecere__com__Property * prop;
1753 struct Expression * exp;
1754 struct Statement * stmt;
1755 char dataMemberSize[16];
1756 unsigned int lastOffset = 0;
1758 unsigned int privateMembers = 0;
1760 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1763 for(prop = regClass->conversions.first; prop; prop = prop->next)
1765 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1768 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1769 ListAdd(args, MkExpConstant("0"));
1771 char * string = QMkString(prop->dataTypeString);
1773 ListAdd(args, MkExpString(string));
1774 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1778 strcpy(name, "__ecereProp_");
1779 FullClassNameCat(name, regClass->fullName, 0);
1780 strcat(name, "_Set_");
1781 FullClassNameCat(name, prop->name, 1);
1782 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1785 ListAdd(args, MkExpConstant("0"));
1788 strcpy(name, "__ecereProp_");
1789 FullClassNameCat(name, regClass->fullName, 0);
1790 strcat(name, "_Get_");
1791 FullClassNameCat(name, prop->name, 1);
1792 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1795 ListAdd(args, MkExpConstant("0"));
1796 switch(prop->memberAccess)
1799 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1802 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1806 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1809 strcpy(name, "__ecereProp_");
1810 FullClassNameCat(name, regClass->fullName, 0);
1812 FullClassNameCat(name, prop->name, 1);
1813 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1814 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1817 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1819 if(member->isProperty)
1821 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1823 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1824 char name[1024], nameM[1024];
1825 char * string = QMkString(prop->name);
1827 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1828 ListAdd(args, MkExpString(string));
1829 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1831 char * string = QMkString(prop->dataTypeString);
1833 ListAdd(args, MkExpString(string));
1834 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1838 strcpy(name, "__ecereProp_");
1839 FullClassNameCat(name, regClass->fullName, 0);
1840 strcat(name, "_Set_");
1841 FullClassNameCat(name, prop->name, 1);
1842 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1845 ListAdd(args, MkExpConstant("0"));
1848 strcpy(name, "__ecereProp_");
1849 FullClassNameCat(name, regClass->fullName, 0);
1850 strcat(name, "_Get_");
1851 FullClassNameCat(name, prop->name, 1);
1852 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1855 ListAdd(args, MkExpConstant("0"));
1856 switch(prop->memberAccess)
1859 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1862 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1866 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1869 strcpy(name, "__ecereProp_");
1870 FullClassNameCat(name, regClass->fullName, 0);
1872 FullClassNameCat(name, prop->name, 1);
1873 strcpy(nameM, "__ecerePropM_");
1874 FullClassNameCat(nameM, regClass->fullName, 0);
1876 FullClassNameCat(nameM, prop->name, 1);
1877 if(prop->dataTypeString)
1879 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1883 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1885 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1890 strcpy(name, "__ecereProp_");
1891 FullClassNameCat(name, regClass->fullName, 1);
1892 strcat(name, "_IsSet_");
1893 FullClassNameCat(name, prop->name, 0);
1894 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("IsSet")), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(name))))));
1895 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1897 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1899 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1900 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1902 if(prop->dataTypeString)
1904 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1906 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1907 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1908 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1909 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1910 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1911 ListAdd(unregisterModuleBody->__anon1.compound.statements, stmt);
1915 else if(member->type == 0 && !isMember && regClass->type == 2)
1917 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1918 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1920 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1922 char * string = QMkString(bitMember->name);
1924 ListAdd(args, MkExpString(string));
1925 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1928 char * string = QMkString(bitMember->dataTypeString);
1930 ListAdd(args, MkExpString(string));
1931 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1936 sprintf(string, "%d", bitMember->size);
1937 ListAdd(args, (exp = MkExpConstant(string)));
1942 sprintf(string, "%d", bitMember->pos);
1943 ListAdd(args, (exp = MkExpConstant(string)));
1945 switch(member->memberAccess)
1948 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1951 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1955 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1958 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1959 ListAdd(statement->__anon1.compound.statements, stmt);
1961 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1963 struct __ecereNameSpace__ecere__sys__OldList * args;
1967 unsigned int offset = member->offset - lastOffset;
1970 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1974 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1975 ListAdd(args, MkExpString(string));
1980 sprintf(string, "\"byte[%d]\"", offset);
1981 ListAdd(args, MkExpString(string));
1986 sprintf(string, "%d", offset);
1987 ListAdd(args, (exp = MkExpConstant(string)));
1989 ListAdd(args, (exp = MkExpConstant("1")));
1990 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1991 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
1992 ListAdd(statement->__anon1.compound.statements, stmt);
1995 if(member->type == 0)
1997 if(!member->dataType)
1998 member->dataType = ProcessTypeString(member->dataTypeString, 0);
1999 ComputeTypeSize(member->dataType);
2001 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2003 char * string = QMkString(member->name);
2005 ListAdd(args, MkExpString(string));
2006 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2009 char * string = QMkString(member->dataTypeString);
2011 ListAdd(args, MkExpString(string));
2012 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2015 if(__ecereProp_Type_Get_isPointerTypeSize(member->dataType))
2017 ListAdd(args, (exp = MkExpTypeSize(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))))));
2018 ListAdd(args, (exp = MkExpConstant("0xF000F000")));
2024 if(member->dataType->kind == 8 && member->dataType->__anon1._class && member->dataType->__anon1._class->__anon1.registered && member->dataType->__anon1._class->__anon1.registered->offset == 0 && (member->dataType->__anon1._class->__anon1.registered->type == 1 || member->dataType->__anon1._class->__anon1.registered->type == 5 || member->dataType->__anon1._class->__anon1.registered->type == 0))
2027 DeclareStruct(registerModuleExternal, member->dataType->__anon1._class->string, 0, 1);
2028 FullClassNameCat(string, member->dataType->__anon1._class->string, 0);
2029 exp = MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(string), (((void *)0)))), (((void *)0))));
2033 sprintf(string, "%d", member->dataType->size);
2034 exp = MkExpConstant(string);
2037 if(member->dataType->pointerAlignment)
2038 exp = MkExpConstant("0xF000F000");
2041 sprintf(string, "%d", member->dataType->alignment);
2042 exp = MkExpConstant(string);
2047 switch(member->memberAccess)
2050 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2053 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2057 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2060 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
2061 ListAdd(statement->__anon1.compound.statements, stmt);
2062 lastOffset = member->offset + member->dataType->size;
2066 static int memberCount = 0;
2067 struct Context * context;
2068 struct Statement * compound;
2069 char memberName[256];
2071 sprintf(memberName, "dataMember%d", memberCount);
2073 curContext = statement->__anon1.compound.context;
2074 context = PushContext();
2075 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
2076 switch(member->memberAccess)
2079 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2082 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2086 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2089 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
2090 compound->__anon1.compound.context = context;
2092 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2093 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
2094 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 1, memberName, compound);
2096 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
2098 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
2099 ListAdd(compound->__anon1.compound.statements, stmt);
2100 PopContext(context);
2101 ListAdd(statement->__anon1.compound.statements, compound);
2103 lastOffset = member->offset + member->memberOffset;
2111 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
2113 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
2115 if(prop->isProperty && prop->isWatchable)
2117 struct __ecereNameSpace__ecere__sys__OldList * args;
2118 char name[1024], nameM[1024];
2120 strcpy(name, "__ecereProp_");
2121 FullClassNameCat(name, regClass->fullName, 1);
2123 FullClassNameCat(name, prop->name, 0);
2124 strcpy(nameM, "__ecerePropM_");
2125 FullClassNameCat(nameM, regClass->fullName, 1);
2127 FullClassNameCat(nameM, prop->name, 0);
2128 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
2129 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
2130 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2133 for(classProperty = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->classProperties); classProperty; classProperty = (struct __ecereNameSpace__ecere__com__ClassProperty *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)classProperty)))
2135 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2137 char * string = QMkString(classProperty->name);
2139 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2140 ListAdd(args, MkExpString(string));
2141 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2143 char * string = QMkString(classProperty->dataTypeString);
2145 ListAdd(args, MkExpString(string));
2146 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2148 if(classProperty->Set)
2150 strcpy(name, "__ecereClassProp_");
2151 FullClassNameCat(name, regClass->fullName, 1);
2152 strcat(name, "_Set_");
2153 strcat(name, classProperty->name);
2154 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2157 ListAdd(args, MkExpConstant("0"));
2158 if(classProperty->Get)
2160 strcpy(name, "__ecereClassProp_");
2161 FullClassNameCat(name, regClass->fullName, 1);
2162 strcat(name, "_Get_");
2163 strcat(name, classProperty->name);
2164 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2167 ListAdd(args, MkExpConstant("0"));
2168 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
2169 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2174 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
2176 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
2178 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
2180 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
2182 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2184 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2186 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2188 struct __ecereNameSpace__ecere__com__Module
2190 struct __ecereNameSpace__ecere__com__Instance * application;
2191 struct __ecereNameSpace__ecere__sys__OldList classes;
2192 struct __ecereNameSpace__ecere__sys__OldList defines;
2193 struct __ecereNameSpace__ecere__sys__OldList functions;
2194 struct __ecereNameSpace__ecere__sys__OldList modules;
2195 struct __ecereNameSpace__ecere__com__Instance * prev;
2196 struct __ecereNameSpace__ecere__com__Instance * next;
2202 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2203 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2206 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2208 __attribute__((unused)) struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2211 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2215 void CreateRegisterModuleBody()
2217 if(!registerModuleBody && inCompiler)
2219 char registerName[1024], moduleName[274];
2220 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2221 struct Declarator * declarator;
2222 struct TypeName * moduleParam;
2224 registerModuleBody = MkCompoundStmt(MkList(), MkList());
2225 registerModuleBody->__anon1.compound.context = __extension__ ({
2226 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2228 __ecereInstance1->parent = globalContext, __ecereInstance1;
2230 ListAdd(registerModuleBody->__anon1.compound.declarations, MkDeclaration((specifiers = MkListOne(MkSpecifierName("ecere::com::Class"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
2231 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specifiers), MkSpecifierExtended(MkExtDeclAttrib(MkAttrib(ATTRIB, MkListOne(MkAttribute(__ecereNameSpace__ecere__sys__CopyString("unused"), (((void *)0))))))));
2232 specifiers = MkList();
2233 ListAdd(specifiers, MkSpecifier(VOID));
2234 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2235 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2236 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2237 FixModuleName(moduleName);
2238 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
2239 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2241 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2243 ProcessFunctionBody(function, registerModuleBody);
2244 function->declMode = 0;
2247 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
2248 DeclareStruct(registerModuleExternal, "ecere::com::Instance", 0, 1);
2249 DeclareStruct(registerModuleExternal, "ecere::com::Module", 0, 1);
2252 if(!unregisterModuleBody && inCompiler)
2254 char registerName[1024], moduleName[274];
2255 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2256 struct Declarator * declarator;
2257 struct TypeName * moduleParam;
2259 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
2260 unregisterModuleBody->__anon1.compound.context = __extension__ ({
2261 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2263 __ecereInstance1->parent = globalContext, __ecereInstance1;
2265 specifiers = MkList();
2266 ListAdd(specifiers, MkSpecifier(VOID));
2267 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2268 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2269 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2270 FixModuleName(moduleName);
2271 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
2272 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2274 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2276 ProcessFunctionBody(function, unregisterModuleBody);
2277 function->declMode = 0;
2280 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
2281 DeclareStruct(unregisterModuleExternal, "ecere::com::Instance", 0, 1);
2282 DeclareStruct(unregisterModuleExternal, "ecere::com::Module", 0, 1);
2287 void __ecereCreateModuleInstances_pass1()
2289 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
2290 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
2293 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2298 static void ProcessClass(int classType, struct __ecereNameSpace__ecere__sys__OldList * definitions, struct Symbol * symbol, struct __ecereNameSpace__ecere__sys__OldList * baseSpecs, struct __ecereNameSpace__ecere__sys__OldList * enumValues, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * external, int declMode)
2300 struct ClassDef * def;
2301 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->__anon1.registered;
2305 classType = regClass->type;
2306 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2308 struct Enumerator * e;
2310 for(e = enumValues->first; e; e = e->next)
2314 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 4, destType->refCount = 1, destType);
2316 e->exp->destType = destType;
2318 ProcessExpressionType(e->exp);
2320 if(!e->exp->expType)
2323 destType->__anon1._class = symbol;
2324 ProcessExpressionType(e->exp);
2326 if(e->exp->type == 0 && e->exp->expType && e->exp->__anon1.__anon1.identifier && e->exp->__anon1.__anon1.identifier->string && e->exp->expType->kind == 15)
2328 struct __ecereNameSpace__ecere__sys__NamedLink64 * l;
2329 char * string = e->exp->__anon1.__anon1.identifier->string;
2331 for(l = e->exp->expType->__anon1.__anon1.members.first; l; l = l->next)
2333 if(!strcmp(l->name, string))
2337 FreeExpContents(e->exp);
2339 e->exp->__anon1.__anon1.constant = PrintInt64(l->data);
2340 FreeType(e->exp->expType);
2341 e->exp->expType = ProcessTypeString("int64", 0);
2348 ComputeExpression(e->exp);
2349 if(e->exp->isConstant && e->exp->type == 2)
2351 struct Operand op = GetOperand(e->exp);
2357 value = op.type->isSigned ? (long long)op.__anon1.c : (long long)op.__anon1.uc;
2360 value = op.type->isSigned ? (long long)op.__anon1.s : (long long)op.__anon1.us;
2363 value = op.type->isSigned ? op.__anon1.i64 : (long long)op.__anon1.ui64;
2367 value = op.type->isSigned ? (long long)op.__anon1.i : (int)op.__anon1.ui;
2369 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2372 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2375 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2378 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2379 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2381 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2383 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2385 if(c && c->type == 4)
2387 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2389 data->largest = baseData->largest;
2394 if(definitions != (((void *)0)))
2398 for(def = definitions->first; def; def = def->next)
2400 if(def->type == 4 && def->__anon1.propertyWatch)
2402 struct PropertyWatch * propWatch = def->__anon1.propertyWatch;
2403 struct ClassFunction * func;
2404 char watcherName[1024];
2405 struct Identifier * propID;
2406 struct Statement * stmt = MkExpressionStmt(MkList());
2407 struct Declarator * decl;
2408 struct __ecereNameSpace__ecere__sys__OldList * specs;
2410 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2411 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2413 strcat(watcherName, "_");
2414 strcat(watcherName, propID->string);
2416 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2418 ListAdd(specs, MkSpecifier(STATIC));
2419 ListAdd(specs, MkSpecifier(VOID));
2420 func = MkClassFunction(specs, (((void *)0)), decl, (((void *)0)));
2421 ProcessClassFunctionBody(func, propWatch->compound);
2422 decl->symbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2423 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2424 func->dontMangle = 1;
2425 propWatch->compound = (((void *)0));
2426 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2427 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2429 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2433 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2435 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2437 char * s = QMkString(propID->string);
2439 ListAdd(args, MkExpString(s));
2440 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2442 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2443 ListAdd(stmt->__anon1.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2446 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2448 FreePropertyWatch(def->__anon1.propertyWatch);
2449 def->__anon1.propertyWatch = (struct PropertyWatch *)stmt;
2453 for(def = definitions->first; def; def = def->next)
2457 ProcessClassFunction(regClass, def->__anon1.function, defs, external->prev, declMode == 3);
2461 if(inCompiler && symbol->mustRegister && regClass)
2463 struct Statement * stmt;
2464 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2465 struct __ecereNameSpace__ecere__com__Method * method;
2466 struct Expression * exp;
2467 const char * registerFunction = (((void *)0));
2468 int inheritanceAccess = 1;
2470 CreateRegisterModuleBody();
2471 curExternal = registerModuleExternal;
2472 switch(regClass->type)
2475 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2478 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2481 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2484 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2487 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2490 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2494 char nameSpace[1024] = "";
2495 char className[1024] = "";
2498 GetNameSpaceString(regClass->nameSpace, nameSpace);
2501 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2502 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2503 strcat(className, "}");
2505 strcat(className, nameSpace);
2506 strcat(className, regClass->name);
2507 string = QMkString(className);
2508 ListAdd(args, MkExpString(string));
2509 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2511 if(baseSpecs != (((void *)0)))
2513 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2515 if(baseType->kind != 9 && baseType->kind != 10)
2517 char baseName[1024] = "";
2520 if(baseType->kind == 8 && baseType->__anon1._class && baseType->__anon1._class->isStatic)
2522 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2523 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2524 strcat(baseName, "}");
2525 strcat(baseName, baseType->__anon1._class->string);
2528 PrintType(baseType, baseName, 0, 1);
2529 string = QMkString(baseName);
2530 ListAdd(args, MkExpString(string));
2531 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2534 ListAdd(args, MkExpConstant("0"));
2536 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->__anon1.specifier == PRIVATE)
2537 inheritanceAccess = 2;
2540 ListAdd(args, MkExpConstant("0"));
2541 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2543 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2546 struct __ecereNameSpace__ecere__com__Class * base;
2548 for(base = regClass->base; base && base->type != 1000; base = base->next)
2550 for(member = base->membersAndProperties.first; member; member = member->next)
2551 if(!member->isProperty)
2557 if(regClass->type == 1 && symbol->declaredStruct && member)
2559 char baseStructName[1024];
2561 baseStructName[0] = 0;
2562 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2563 ListAdd(args, MkExpOp(MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))), '-', MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(baseStructName), (((void *)0)))), (((void *)0))))));
2566 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2570 ListAdd(args, MkExpConstant("0"));
2573 char classDataStructName[1024];
2575 strcpy(classDataStructName, "__ecereClassData_");
2576 FullClassNameCat(classDataStructName, symbol->string, 0);
2577 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2579 if(regClass->type == 0 || regClass->type == 5)
2581 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0")));
2582 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0")));
2586 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2587 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2589 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2593 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2596 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2600 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2603 switch(inheritanceAccess)
2606 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2610 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2613 registerFunction = "eSystem_RegisterClass";
2614 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2615 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2616 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application"))), AND_OP, MkExpIdentifier(MkIdentifier("class")))), MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(symbol->className)), '=', MkExpIdentifier(MkIdentifier("class"))))), (((void *)0)));
2617 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2618 if(external && external->type == 2 && external->__anon1._class->deleteWatchable)
2620 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2621 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2622 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2626 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2629 for(c = 0; c < base->vTblSize; c++)
2631 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2633 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->__anon2.__anon3.methodExternal)
2635 struct External * external = method->__anon2.__anon3.methodExternal;
2636 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2637 struct Identifier * id = external->__anon1.function ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2640 struct External * e = method->__anon2.__anon3.methodExternal ? method->__anon2.__anon3.methodExternal : method->__anon2.__anon3.methodCodeExternal;
2642 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, e, e->type == 0);
2644 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2646 char * string = QMkString(method->__anon1.method->name);
2648 ListAdd(args, MkExpString(string));
2649 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2651 ListAdd(args, MkExpConstant("0"));
2652 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2653 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2654 exp->expType = __extension__ ({
2655 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2657 __ecereInstance1->refCount = 1, __ecereInstance1;
2659 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2660 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2667 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2669 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
2671 if(method->type == 1 && method->_class == regClass && method->vid == c)
2674 struct Expression * exp;
2675 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2676 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2677 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2679 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2681 char * string = QMkString(method->name);
2683 ListAdd(args, MkExpString(string));
2684 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2687 char * string = QMkString(method->dataTypeString);
2689 ListAdd(args, MkExpString(string));
2690 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2692 if(id && external->__anon1.function->body)
2694 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2695 exp->expType = __extension__ ({
2696 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2698 __ecereInstance1->refCount = 1, __ecereInstance1;
2703 ListAdd(args, (exp = MkExpConstant("0")));
2705 switch(method->memberAccess)
2708 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2711 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2715 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2718 strcpy(name, "__ecereVMethodID_");
2719 FullClassNameCat(name, method->_class->fullName, 0);
2721 strcat(name, method->name);
2722 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2723 stmt = MkExpressionStmt(MkListOne(exp));
2725 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2726 DeclareMethod(curExternal, method, name);
2727 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2732 for(method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(®Class->methods); method; method = (struct __ecereNameSpace__ecere__com__Method *)__ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(((struct __ecereNameSpace__ecere__sys__BTNode *)method)))
2734 if(method->type == 1 && method->_class == regClass)
2736 else if(method->memberAccess == 1 || !method->dataTypeString)
2738 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2739 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2740 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2742 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2744 char * string = QMkString(method->name);
2746 ListAdd(args, MkExpString(string));
2747 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2750 char * string = QMkString(method->dataTypeString);
2752 ListAdd(args, MkExpString(string));
2753 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2755 if(id && external->__anon1.function->body)
2757 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2758 exp->expType = __extension__ ({
2759 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2761 __ecereInstance1->refCount = 1, __ecereInstance1;
2766 ListAdd(args, (exp = MkExpConstant("0")));
2768 switch(method->memberAccess)
2771 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2774 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2778 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2781 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2782 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2784 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2787 RegisterMembersAndProperties(regClass, 0, "class", registerModuleBody);
2790 struct __ecereNameSpace__ecere__sys__NamedLink64 * value;
2791 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2792 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2794 for(value = e->values.first; value; value = value->next)
2796 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2798 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2800 char * string = QMkString(value->name);
2802 ListAdd(args, MkExpString(string));
2803 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2808 if(!strcmp(regClass->dataTypeString, "uint64"))
2809 temp = PrintUInt64(value->data);
2811 temp = PrintInt64(value->data);
2812 ListAdd(args, MkExpConstant(temp));
2813 (__ecereNameSpace__ecere__com__eSystem_Delete(temp), temp = 0);
2815 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2816 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2819 if(symbol->templateParams)
2821 struct TemplateParameter * param;
2823 for(param = (*symbol->templateParams).first; param; param = param->next)
2825 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2827 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2829 char * string = QMkString(param->identifier->string);
2831 ListAdd(args, MkExpString(string));
2832 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2834 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2840 char * typeString = param->__anon1.dataType ? StringFromSpecDecl(param->__anon1.dataType->specifiers, param->__anon1.dataType->decl) : (((void *)0));
2841 char * string = QMkString(typeString);
2843 ListAdd(args, MkExpString(string));
2844 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2845 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2850 char memberTypeString[132] = "TemplateMemberType::";
2851 unsigned int needClass = 1;
2853 ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, (void *)¶m->__anon1.memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass);
2854 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2858 if(param->defaultArgument)
2860 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2866 char * typeString = param->defaultArgument->__anon1.templateDatatype ? StringFromSpecDecl(param->defaultArgument->__anon1.templateDatatype->specifiers, param->defaultArgument->__anon1.templateDatatype->decl) : (((void *)0));
2867 char * string = QMkString(typeString);
2869 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2870 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2871 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2876 char memberString[1024];
2879 memberString[0] = '\0';
2880 if(param->defaultArgument->__anon1.identifier->_class)
2882 if(param->defaultArgument->__anon1.identifier->_class->type == 8)
2883 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.templateParameter->identifier->string);
2884 else if(param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name)
2885 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name);
2888 strcat(memberString, "::");
2889 strcat(memberString, param->defaultArgument->__anon1.identifier->string);
2890 string = QMkString(memberString);
2891 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2892 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2907 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2909 char * string = (((void *)0));
2911 op = GetOperand(param->defaultArgument->__anon1.expression);
2912 ui64String = PrintUInt64(op.__anon1.ui64);
2913 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2914 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2915 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2916 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2917 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2921 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2924 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2925 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2926 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2928 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2929 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2931 if(definitions != (((void *)0)))
2933 for(def = definitions->first; def; def = def->next)
2935 if(def->type == 4 && def->__anon1.propertyWatch)
2937 ListAdd(registerModuleBody->__anon1.compound.statements, (struct Statement *)def->__anon1.propertyWatch);
2938 def->__anon1.propertyWatch = (((void *)0));
2940 else if(def->type == 5)
2943 char * s = QMkString(def->__anon1.designer);
2945 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(s)))), (((void *)0)));
2946 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2948 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2950 else if(def->type == 6)
2952 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2953 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2955 else if(def->type == 7)
2957 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2958 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2960 regClass->fixed = 1;
2962 else if(def->type == 8)
2964 char * s = QMkString(def->__anon1.defaultProperty->string);
2966 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(s)))), (((void *)0)));
2967 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2968 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2970 else if(def->type == 11)
2972 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2973 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2975 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2976 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(uintptr_t)(__extension__ ({
2977 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2979 ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->__anon1.__anon1.id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->__anon1.__anon1.initializer->__anon1.exp, __ecereInstance1;
2981 def->__anon1.__anon1.id = (((void *)0));
2982 def->__anon1.__anon1.initializer->__anon1.exp = (((void *)0));
2990 void ProcessClassDefinitions()
2992 struct External * external, * next;
2994 CreateRegisterModuleBody();
2997 for(external = (*ast).first; external; external = next)
2999 next = external->next;
3000 curExternal = external;
3001 if(external->type == 2)
3003 struct ClassDefinition * _class = external->__anon1._class;
3005 if(_class->definitions)
3007 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
3011 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3012 FreeExternal(external);
3015 else if(external->type == 0)
3017 unsigned int setStaticMethod = 0;
3019 if(external->symbol && !external->symbol->type->__anon1.__anon2.thisClass && !external->symbol->type->__anon1.__anon2.staticMethod)
3021 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3022 setStaticMethod = 1;
3026 struct FunctionDefinition * function = external->__anon1.function;
3027 struct Statement * stmt;
3028 struct __ecereNameSpace__ecere__sys__OldList * args;
3030 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
3032 ListAdd(registerModuleBody->__anon1.compound.statements, function->body);
3033 function->body->__anon1.compound.context->parent = registerModuleBody->__anon1.compound.context;
3034 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3035 function->body = (((void *)0));
3036 FreeExternal(external);
3039 if(function->declMode != 2 && function->declMode != 1)
3042 CreateRegisterModuleBody();
3044 char * string = QMkString(function->declarator->symbol->string);
3046 ListAdd(args, MkExpString(string));
3047 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3051 char type[1024] = "";
3054 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 0;
3055 PrintType(function->declarator->symbol->type, type, 1, 1);
3057 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 1;
3058 string = QMkString(type);
3059 ListAdd(args, MkExpString(string));
3060 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3063 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
3065 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3066 switch(function->declMode)
3069 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3072 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3076 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3079 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
3080 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3083 else if(external->type == 1)
3085 struct Declaration * declaration = external->__anon1.declaration;
3087 if(external->symbol)
3089 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->__anon1.__anon2.thisClass)
3090 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3092 if(external->symbol && declaration && declaration->type == 1)
3094 if(declaration->__anon1.__anon1.specifiers)
3096 struct Specifier * specifier;
3097 unsigned int removeExternal = 0;
3099 for(specifier = (*declaration->__anon1.__anon1.specifiers).first; specifier; specifier = specifier->next)
3101 if((specifier->type == 2 || specifier->type == 3 || specifier->type == 4) && specifier->__anon1.__anon2.id && specifier->__anon1.__anon2.id->string && (declaration->declMode || specifier->__anon1.__anon2.baseSpecs || (specifier->type == 2 && specifier->__anon1.__anon2.definitions)))
3103 struct Symbol * symbol = FindClass(specifier->__anon1.__anon2.id->string);
3109 if(specifier->type == 2)
3114 symbol->ctx = specifier->__anon1.__anon2.ctx;
3115 specifier->__anon1.__anon2.ctx = (((void *)0));
3116 ProcessClass(classType, specifier->__anon1.__anon2.definitions, symbol, specifier->__anon1.__anon2.baseSpecs, specifier->__anon1.__anon2.list, ast, external, declaration->declMode);
3120 if(inCompiler && removeExternal)
3122 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3123 FreeExternal(external);
3127 else if(declaration && declaration->type == 3)
3129 if(inCompiler && declaration->declMode != 3)
3131 struct Statement * stmt;
3132 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3134 CreateRegisterModuleBody();
3136 char * string = QMkString(declaration->__anon1.__anon2.id->string);
3138 ListAdd(args, MkExpString(string));
3139 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3143 char type[1024] = "";
3145 PrintExpression(declaration->__anon1.__anon2.exp, type);
3146 string = QMkString(type);
3147 ListAdd(args, MkExpString(string));
3148 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3150 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3151 switch(declaration->declMode)
3154 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3157 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3161 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3164 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3165 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3171 struct __ecereNameSpace__ecere__com__Iterator v =
3173 (classPropValues), 0
3176 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3178 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3179 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3180 struct Statement * compoundStmt;
3182 struct Expression * e;
3185 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3187 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3189 yylloc = __extension__ ({
3190 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3192 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3194 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3195 s = QMkString(__extension__ ({
3196 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3198 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3199 })->regClass->name);
3200 ListAdd(findClassArgs, MkExpString(s));
3201 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3202 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3203 s = QMkString(__extension__ ({
3204 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3206 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3208 ListAdd(args, MkExpString(s));
3209 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3210 e = __extension__ ({
3211 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3213 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3215 ProcessExpressionType(e);
3216 if(__ecereProp_Type_Get_isPointerType(e->expType))
3217 e = MkExpCast(MkTypeName(MkListOne(MkSpecifierName("intptr")), (((void *)0))), e);
3218 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), e));
3219 compoundStmt = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("ecere::com::Class")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("_class")), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eSystem_FindClass")), findClassArgs)))))), MkListOne(MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("ecere::com::eClass_SetProperty")), args)))));
3220 compoundStmt->__anon1.compound.context = __extension__ ({
3221 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3223 __ecereInstance1->parent = registerModuleBody->__anon1.compound.context, __ecereInstance1;
3225 ListAdd(registerModuleBody->__anon1.compound.statements, compoundStmt);
3228 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3229 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3231 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3232 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues);
3236 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3238 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
3240 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3241 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3242 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3243 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3244 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassFunction", "External ProcessClassFunction(ecere::com::Class owningClass, ClassFunction func, ecere::sys::OldList defs, External after, bool makeStatic)", ProcessClassFunction, module, 2);
3245 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3246 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, const char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3247 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3248 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, (void *)0, (void *)__ecereDestructor_ClassPropertyValue, module, 2, 1);
3249 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)
3250 __ecereClass_ClassPropertyValue = class;
3251 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);