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, INT128 = 294, LONG = 295, SIGNED = 296, UNSIGNED = 297, FLOAT = 298, DOUBLE = 299, CONST = 300, VOLATILE = 301, VOID = 302, VALIST = 303, STRUCT = 304, UNION = 305, ENUM = 306, ELLIPSIS = 307, CASE = 308, DEFAULT = 309, IF = 310, SWITCH = 311, WHILE = 312, DO = 313, FOR = 314, GOTO = 315, CONTINUE = 316, BREAK = 317, RETURN = 318, IFX = 319, ELSE = 320, CLASS = 321, THISCLASS = 322, CLASS_NAME = 323, PROPERTY = 324, SETPROP = 325, GETPROP = 326, NEWOP = 327, RENEW = 328, DELETE = 329, EXT_DECL = 330, EXT_STORAGE = 331, IMPORT = 332, DEFINE = 333, VIRTUAL = 334, ATTRIB = 335, PUBLIC = 336, PRIVATE = 337, TYPED_OBJECT = 338, ANY_OBJECT = 339, _INCREF = 340, EXTENSION = 341, ASM = 342, TYPEOF = 343, WATCH = 344, STOPWATCHING = 345, FIREWATCHERS = 346, WATCHABLE = 347, CLASS_DESIGNER = 348, CLASS_NO_EXPANSION = 349, CLASS_FIXED = 350, ISPROPSET = 351, CLASS_DEFAULT_PROPERTY = 352, PROPERTY_CATEGORY = 353, CLASS_DATA = 354, CLASS_PROPERTY = 355, SUBCLASS = 356, NAMESPACE = 357, NEW0OP = 358, RENEW0 = 359, VAARG = 360, DBTABLE = 361, DBFIELD = 362, DBINDEX = 363, DATABASE_OPEN = 364, ALIGNOF = 365, ATTRIB_DEP = 366, __ATTRIB = 367, BOOL = 368, _BOOL = 369, _COMPLEX = 370, _IMAGINARY = 371, RESTRICT = 372, THREAD = 373, WIDE_STRING_LITERAL = 374, BUILTIN_OFFSETOF = 375
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 unsigned int staticClass;
631 struct Identifier * id;
632 struct Expression * exp;
635 extern void FreeIdentifier(struct Identifier * id);
637 struct __ecereNameSpace__ecere__sys__NamedLink64;
639 struct __ecereNameSpace__ecere__sys__NamedLink64
641 struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
642 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
647 struct __ecereNameSpace__ecere__sys__OldLink;
649 struct __ecereNameSpace__ecere__sys__OldLink
651 struct __ecereNameSpace__ecere__sys__OldLink * prev;
652 struct __ecereNameSpace__ecere__sys__OldLink * next;
656 struct ClassFunction;
660 struct ClassFunction * prev;
661 struct ClassFunction * next;
663 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
664 struct Declarator * declarator;
665 struct __ecereNameSpace__ecere__sys__OldList * declarations;
666 struct Statement * body;
667 struct __ecereNameSpace__ecere__com__Class * _class;
668 struct __ecereNameSpace__ecere__sys__OldList attached;
671 struct Symbol * propSet;
672 unsigned int isVirtual;
673 unsigned int isConstructor;
674 unsigned int isDestructor;
675 unsigned int dontMangle;
680 extern struct ClassFunction * MkClassFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Specifier * _class, struct Declarator * decl, struct __ecereNameSpace__ecere__sys__OldList * declList);
682 extern void ProcessClassFunctionBody(struct ClassFunction * func, struct Statement * body);
684 struct PropertyWatch;
688 struct PropertyWatch * prev;
689 struct PropertyWatch * next;
691 struct Statement * compound;
692 struct __ecereNameSpace__ecere__sys__OldList * properties;
693 unsigned int deleteWatch;
696 extern void FreePropertyWatch(struct PropertyWatch * watcher);
702 struct Statement * prev;
703 struct Statement * next;
708 struct __ecereNameSpace__ecere__sys__OldList * expressions;
711 struct Identifier * id;
712 struct Statement * stmt;
713 } ecere_gcc_struct labeled;
716 struct Expression * exp;
717 struct Statement * stmt;
718 } ecere_gcc_struct caseStmt;
721 struct __ecereNameSpace__ecere__sys__OldList * declarations;
722 struct __ecereNameSpace__ecere__sys__OldList * statements;
723 struct Context * context;
724 unsigned int isSwitch;
725 } ecere_gcc_struct compound;
728 struct __ecereNameSpace__ecere__sys__OldList * exp;
729 struct Statement * stmt;
730 struct Statement * elseStmt;
731 } ecere_gcc_struct ifStmt;
734 struct __ecereNameSpace__ecere__sys__OldList * exp;
735 struct Statement * stmt;
736 } ecere_gcc_struct switchStmt;
739 struct __ecereNameSpace__ecere__sys__OldList * exp;
740 struct Statement * stmt;
741 } ecere_gcc_struct whileStmt;
744 struct __ecereNameSpace__ecere__sys__OldList * exp;
745 struct Statement * stmt;
746 } ecere_gcc_struct doWhile;
749 struct Statement * init;
750 struct Statement * check;
751 struct __ecereNameSpace__ecere__sys__OldList * increment;
752 struct Statement * stmt;
753 } ecere_gcc_struct forStmt;
756 struct Identifier * id;
757 } ecere_gcc_struct gotoStmt;
760 struct Specifier * spec;
762 struct __ecereNameSpace__ecere__sys__OldList * inputFields;
763 struct __ecereNameSpace__ecere__sys__OldList * outputFields;
764 struct __ecereNameSpace__ecere__sys__OldList * clobberedFields;
765 } ecere_gcc_struct asmStmt;
768 struct Expression * watcher;
769 struct Expression * object;
770 struct __ecereNameSpace__ecere__sys__OldList * watches;
771 } ecere_gcc_struct _watch;
774 struct Identifier * id;
775 struct __ecereNameSpace__ecere__sys__OldList * exp;
776 struct __ecereNameSpace__ecere__sys__OldList * filter;
777 struct Statement * stmt;
778 } ecere_gcc_struct forEachStmt;
779 struct Declaration * decl;
780 } ecere_gcc_struct __anon1;
783 extern struct Declaration * MkDeclaration(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct __ecereNameSpace__ecere__sys__OldList * initDeclarators);
787 struct Declaration * prev;
788 struct Declaration * next;
795 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
796 struct __ecereNameSpace__ecere__sys__OldList * declarators;
797 } ecere_gcc_struct __anon1;
798 struct Instantiation * inst;
801 struct Identifier * id;
802 struct Expression * exp;
803 } ecere_gcc_struct __anon2;
804 } ecere_gcc_struct __anon1;
805 struct Specifier * extStorage;
806 struct Symbol * symbol;
812 extern struct InitDeclarator * MkInitDeclarator(struct Declarator * declarator, struct Initializer * initializer);
814 extern struct Initializer * MkInitializerAssignment(struct Expression * exp);
816 extern struct MemberInit * MkMemberInit(struct __ecereNameSpace__ecere__sys__OldList * ids, struct Initializer * initializer);
820 struct Initializer * prev;
821 struct Initializer * next;
826 struct Expression * exp;
827 struct __ecereNameSpace__ecere__sys__OldList * list;
828 } ecere_gcc_struct __anon1;
829 unsigned int isConstant;
830 struct Identifier * id;
833 struct FunctionDefinition;
835 extern struct FunctionDefinition * _MkFunction(struct __ecereNameSpace__ecere__sys__OldList * specifiers, struct Declarator * declarator, struct __ecereNameSpace__ecere__sys__OldList * declarationList, unsigned int errorOnOmit);
837 struct FunctionDefinition
839 struct FunctionDefinition * prev;
840 struct FunctionDefinition * next;
842 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
843 struct Declarator * declarator;
844 struct __ecereNameSpace__ecere__sys__OldList * declarations;
845 struct Statement * body;
846 struct __ecereNameSpace__ecere__com__Class * _class;
847 struct __ecereNameSpace__ecere__sys__OldList attached;
850 struct Symbol * propSet;
852 unsigned int propertyNoThis;
855 extern void ProcessFunctionBody(struct FunctionDefinition * func, struct Statement * body);
857 extern struct External * MkExternalFunction(struct FunctionDefinition * function);
863 struct TypeName * prev;
864 struct TypeName * next;
866 struct __ecereNameSpace__ecere__sys__OldList * qualifiers;
867 struct Declarator * declarator;
869 struct Expression * bitCount;
872 extern struct TypeName * MkTypeName(struct __ecereNameSpace__ecere__sys__OldList * qualifiers, struct Declarator * declarator);
874 extern struct Expression * MkExpCast(struct TypeName * typeName, struct Expression * expression);
876 extern struct Expression * MkExpTypeSize(struct TypeName * typeName);
880 struct Expression * prev;
881 struct Expression * next;
889 struct Identifier * identifier;
890 } ecere_gcc_struct __anon1;
891 struct Statement * compound;
892 struct Instantiation * instance;
896 unsigned int intlString;
897 unsigned int wideString;
898 } ecere_gcc_struct __anon2;
899 struct __ecereNameSpace__ecere__sys__OldList * list;
902 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
903 struct Declarator * decl;
904 } ecere_gcc_struct _classExp;
907 struct Identifier * id;
908 } ecere_gcc_struct classData;
911 struct Expression * exp;
912 struct __ecereNameSpace__ecere__sys__OldList * arguments;
913 struct Location argLoc;
914 } ecere_gcc_struct call;
917 struct Expression * exp;
918 struct __ecereNameSpace__ecere__sys__OldList * index;
919 } ecere_gcc_struct index;
922 struct Expression * exp;
923 struct Identifier * member;
925 unsigned int thisPtr;
926 } ecere_gcc_struct member;
930 struct Expression * exp1;
931 struct Expression * exp2;
932 } ecere_gcc_struct op;
933 struct TypeName * typeName;
934 struct Specifier * _class;
937 struct TypeName * typeName;
938 struct Expression * exp;
939 } ecere_gcc_struct cast;
942 struct Expression * cond;
943 struct __ecereNameSpace__ecere__sys__OldList * exp;
944 struct Expression * elseExp;
945 } ecere_gcc_struct cond;
948 struct TypeName * typeName;
949 struct Expression * size;
950 } ecere_gcc_struct _new;
953 struct TypeName * typeName;
954 struct Expression * size;
955 struct Expression * exp;
956 } ecere_gcc_struct _renew;
960 struct Identifier * id;
961 } ecere_gcc_struct db;
964 struct Expression * ds;
965 struct Expression * name;
966 } ecere_gcc_struct dbopen;
969 struct TypeName * typeName;
970 struct Initializer * initializer;
971 } ecere_gcc_struct initializer;
974 struct Expression * exp;
975 struct TypeName * typeName;
976 } ecere_gcc_struct vaArg;
979 struct TypeName * typeName;
980 struct Identifier * id;
981 } ecere_gcc_struct offset;
982 } ecere_gcc_struct __anon1;
983 unsigned int debugValue;
984 struct __ecereNameSpace__ecere__com__DataValue val;
986 unsigned int hasAddress;
987 struct Type * expType;
988 struct Type * destType;
991 unsigned int byReference;
992 unsigned int isConstant;
993 unsigned int addedThis;
994 unsigned int needCast;
995 unsigned int thisPtr;
996 unsigned int opDestType;
997 unsigned int usedInComparison;
998 unsigned int ambiguousUnits;
999 unsigned int parentOpDestType;
1000 unsigned int needTemplateCast;
1007 unsigned int (* Add)(struct Expression *, struct Operand *, struct Operand *);
1008 unsigned int (* Sub)(struct Expression *, struct Operand *, struct Operand *);
1009 unsigned int (* Mul)(struct Expression *, struct Operand *, struct Operand *);
1010 unsigned int (* Div)(struct Expression *, struct Operand *, struct Operand *);
1011 unsigned int (* Mod)(struct Expression *, struct Operand *, struct Operand *);
1012 unsigned int (* Neg)(struct Expression *, struct Operand *);
1013 unsigned int (* Inc)(struct Expression *, struct Operand *);
1014 unsigned int (* Dec)(struct Expression *, struct Operand *);
1015 unsigned int (* Asign)(struct Expression *, struct Operand *, struct Operand *);
1016 unsigned int (* AddAsign)(struct Expression *, struct Operand *, struct Operand *);
1017 unsigned int (* SubAsign)(struct Expression *, struct Operand *, struct Operand *);
1018 unsigned int (* MulAsign)(struct Expression *, struct Operand *, struct Operand *);
1019 unsigned int (* DivAsign)(struct Expression *, struct Operand *, struct Operand *);
1020 unsigned int (* ModAsign)(struct Expression *, struct Operand *, struct Operand *);
1021 unsigned int (* BitAnd)(struct Expression *, struct Operand *, struct Operand *);
1022 unsigned int (* BitOr)(struct Expression *, struct Operand *, struct Operand *);
1023 unsigned int (* BitXor)(struct Expression *, struct Operand *, struct Operand *);
1024 unsigned int (* LShift)(struct Expression *, struct Operand *, struct Operand *);
1025 unsigned int (* RShift)(struct Expression *, struct Operand *, struct Operand *);
1026 unsigned int (* BitNot)(struct Expression *, struct Operand *);
1027 unsigned int (* AndAsign)(struct Expression *, struct Operand *, struct Operand *);
1028 unsigned int (* OrAsign)(struct Expression *, struct Operand *, struct Operand *);
1029 unsigned int (* XorAsign)(struct Expression *, struct Operand *, struct Operand *);
1030 unsigned int (* LShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1031 unsigned int (* RShiftAsign)(struct Expression *, struct Operand *, struct Operand *);
1032 unsigned int (* Not)(struct Expression *, struct Operand *);
1033 unsigned int (* Equ)(struct Expression *, struct Operand *, struct Operand *);
1034 unsigned int (* Nqu)(struct Expression *, struct Operand *, struct Operand *);
1035 unsigned int (* And)(struct Expression *, struct Operand *, struct Operand *);
1036 unsigned int (* Or)(struct Expression *, struct Operand *, struct Operand *);
1037 unsigned int (* Grt)(struct Expression *, struct Operand *, struct Operand *);
1038 unsigned int (* Sma)(struct Expression *, struct Operand *, struct Operand *);
1039 unsigned int (* GrtEqu)(struct Expression *, struct Operand *, struct Operand *);
1040 unsigned int (* SmaEqu)(struct Expression *, struct Operand *, struct Operand *);
1041 unsigned int (* Cond)(struct Expression *, struct Operand *, struct Operand *, struct Operand *);
1048 unsigned int ptrSize;
1061 } ecere_gcc_struct __anon1;
1065 extern struct Operand GetOperand(struct Expression * exp);
1067 struct __ecereNameSpace__ecere__sys__BinaryTree;
1069 struct __ecereNameSpace__ecere__sys__BinaryTree
1071 struct __ecereNameSpace__ecere__sys__BTNode * root;
1073 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
1074 void (* FreeKey)(void * key);
1077 void __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(struct __ecereNameSpace__ecere__sys__BinaryTree * this, struct __ecereNameSpace__ecere__sys__BTNode * node);
1079 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
1081 struct TemplateParameter;
1085 struct Specifier * prev;
1086 struct Specifier * next;
1087 struct Location loc;
1094 struct ExtDecl * extDecl;
1096 struct Symbol * symbol;
1097 struct __ecereNameSpace__ecere__sys__OldList * templateArgs;
1098 struct Specifier * nsSpec;
1099 } ecere_gcc_struct __anon1;
1102 struct Identifier * id;
1103 struct __ecereNameSpace__ecere__sys__OldList * list;
1104 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
1105 struct __ecereNameSpace__ecere__sys__OldList * definitions;
1106 unsigned int addNameSpace;
1107 struct Context * ctx;
1108 struct ExtDecl * extDeclStruct;
1109 } ecere_gcc_struct __anon2;
1110 struct Expression * expression;
1111 struct Specifier * _class;
1112 struct TemplateParameter * templateParameter;
1113 } ecere_gcc_struct __anon1;
1123 struct Symbol * _class;
1126 struct __ecereNameSpace__ecere__sys__OldList members;
1128 } ecere_gcc_struct __anon1;
1131 struct Type * returnType;
1132 struct __ecereNameSpace__ecere__sys__OldList params;
1133 struct Symbol * thisClass;
1134 unsigned int staticMethod;
1135 struct TemplateParameter * thisClassTemplate;
1136 } ecere_gcc_struct __anon2;
1139 struct __ecereNameSpace__ecere__com__Method * method;
1140 struct __ecereNameSpace__ecere__com__Class * methodClass;
1141 struct __ecereNameSpace__ecere__com__Class * usedClass;
1142 } ecere_gcc_struct __anon3;
1145 struct Type * arrayType;
1147 struct Expression * arraySizeExp;
1148 unsigned int freeExp;
1149 struct Symbol * enumClass;
1150 } ecere_gcc_struct __anon4;
1152 struct TemplateParameter * templateParameter;
1153 } ecere_gcc_struct __anon1;
1158 struct __ecereNameSpace__ecere__com__Class * thisClassFrom;
1160 int classObjectType;
1162 unsigned int offset;
1166 unsigned int isSigned : 1;
1167 unsigned int constant : 1;
1168 unsigned int truth : 1;
1169 unsigned int byReference : 1;
1170 unsigned int extraParam : 1;
1171 unsigned int directClassAccess : 1;
1172 unsigned int computing : 1;
1173 unsigned int keepCast : 1;
1174 unsigned int passAsTemplate : 1;
1175 unsigned int dllExport : 1;
1176 unsigned int attrStdcall : 1;
1177 unsigned int declaredWithStruct : 1;
1178 unsigned int typedByReference : 1;
1179 unsigned int casted : 1;
1180 unsigned int pointerAlignment : 1;
1181 unsigned int isLong : 1;
1182 unsigned int signedBeforePromotion : 1;
1183 unsigned int isVector : 1;
1186 unsigned int __ecereProp_Type_Get_isPointerTypeSize(struct Type * this);
1188 unsigned int __ecereProp_Type_Get_isPointerType(struct Type * this);
1190 struct __ecereNameSpace__ecere__com__Module;
1192 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);
1194 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1196 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
1198 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);
1200 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);
1202 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1204 struct __ecereNameSpace__ecere__com__DataMember;
1206 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1212 const char * dataTypeString;
1213 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1214 } ecere_gcc_struct __anon1;
1215 struct __ecereNameSpace__ecere__com__DataValue expression;
1218 const char * memberString;
1221 struct __ecereNameSpace__ecere__com__DataMember * member;
1222 struct __ecereNameSpace__ecere__com__Property * prop;
1223 struct __ecereNameSpace__ecere__com__Method * method;
1224 } ecere_gcc_struct __anon1;
1225 } ecere_gcc_struct __anon2;
1226 } ecere_gcc_struct __anon1;
1229 struct __ecereNameSpace__ecere__com__DataMember
1231 struct __ecereNameSpace__ecere__com__DataMember * prev;
1232 struct __ecereNameSpace__ecere__com__DataMember * next;
1234 unsigned int isProperty;
1237 struct __ecereNameSpace__ecere__com__Class * _class;
1238 const char * dataTypeString;
1239 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1240 struct Type * dataType;
1244 struct __ecereNameSpace__ecere__sys__OldList members;
1245 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1247 short structAlignment;
1248 short pointerAlignment;
1251 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1253 struct __ecereNameSpace__ecere__com__BitMember;
1255 struct __ecereNameSpace__ecere__com__BitMember
1257 struct __ecereNameSpace__ecere__com__BitMember * prev;
1258 struct __ecereNameSpace__ecere__com__BitMember * next;
1260 unsigned int isProperty;
1263 struct __ecereNameSpace__ecere__com__Class * _class;
1264 const char * dataTypeString;
1265 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1266 struct Type * dataType;
1273 struct __ecereNameSpace__ecere__com__ClassProperty;
1275 struct __ecereNameSpace__ecere__com__ClassProperty
1278 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1279 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1280 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1282 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1283 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1284 const char * dataTypeString;
1285 struct Type * dataType;
1286 unsigned int constant;
1289 struct ClassDefinition;
1293 struct External * prev;
1294 struct External * next;
1295 struct Location loc;
1297 struct Symbol * symbol;
1300 struct FunctionDefinition * function;
1301 struct ClassDefinition * _class;
1302 struct Declaration * declaration;
1303 char * importString;
1304 struct Identifier * id;
1305 struct DBTableDef * table;
1306 } ecere_gcc_struct __anon1;
1308 struct External * fwdDecl;
1309 struct __ecereNameSpace__ecere__com__Instance * outgoing;
1310 struct __ecereNameSpace__ecere__com__Instance * incoming;
1311 int nonBreakableIncoming;
1316 struct Context * parent;
1317 struct __ecereNameSpace__ecere__sys__BinaryTree types;
1318 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1319 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
1320 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
1323 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
1324 struct ClassDefinition * classDef;
1325 unsigned int templateTypesOnly;
1326 unsigned int hasNameSpace;
1329 struct ClassDefinition
1331 struct ClassDefinition * prev;
1332 struct ClassDefinition * next;
1333 struct Location loc;
1334 struct Specifier * _class;
1335 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
1336 struct __ecereNameSpace__ecere__sys__OldList * definitions;
1337 struct Symbol * symbol;
1338 struct Location blockStart;
1339 struct Location nameLoc;
1341 unsigned int deleteWatchable;
1344 void __ecereMethod_External_CreateUniqueEdge(struct External * this, struct External * from, unsigned int soft);
1350 struct Enumerator * prev;
1351 struct Enumerator * next;
1352 struct Location loc;
1353 struct Identifier * id;
1354 struct Expression * exp;
1357 struct TemplateArgument;
1359 struct TemplateParameter
1361 struct TemplateParameter * prev;
1362 struct TemplateParameter * next;
1363 struct Location loc;
1365 struct Identifier * identifier;
1368 struct TemplateDatatype * dataType;
1370 } ecere_gcc_struct __anon1;
1371 struct TemplateArgument * defaultArgument;
1372 const char * dataTypeString;
1373 struct Type * baseType;
1376 struct TemplateArgument
1378 struct TemplateArgument * prev;
1379 struct TemplateArgument * next;
1380 struct Location loc;
1381 struct Identifier * name;
1385 struct Expression * expression;
1386 struct Identifier * identifier;
1387 struct TemplateDatatype * templateDatatype;
1388 } ecere_gcc_struct __anon1;
1393 typedef union YYSTYPE
1398 struct Identifier * id;
1399 struct Expression * exp;
1400 struct Specifier * specifier;
1401 struct __ecereNameSpace__ecere__sys__OldList * list;
1402 struct Enumerator * enumerator;
1403 struct Declarator * declarator;
1404 struct Pointer * pointer;
1405 struct Initializer * initializer;
1406 struct InitDeclarator * initDeclarator;
1407 struct TypeName * typeName;
1408 struct Declaration * declaration;
1409 struct Statement * stmt;
1410 struct FunctionDefinition * function;
1411 struct External * external;
1412 struct Context * context;
1413 struct AsmField * asmField;
1414 struct Attrib * attrib;
1415 struct ExtDecl * extDecl;
1416 struct Attribute * attribute;
1417 struct Instantiation * instance;
1418 struct MembersInit * membersInit;
1419 struct MemberInit * memberInit;
1420 struct ClassFunction * classFunction;
1421 struct ClassDefinition * _class;
1422 struct ClassDef * classDef;
1423 struct PropertyDef * prop;
1425 struct Symbol * symbol;
1426 struct PropertyWatch * propertyWatch;
1427 struct TemplateParameter * templateParameter;
1428 struct TemplateArgument * templateArgument;
1429 struct TemplateDatatype * templateDatatype;
1430 struct DBTableEntry * dbtableEntry;
1431 struct DBIndexItem * dbindexItem;
1432 struct DBTableDef * dbtableDef;
1433 } ecere_gcc_struct YYSTYPE;
1435 extern YYSTYPE yylval;
1439 struct ClassDef * prev;
1440 struct ClassDef * next;
1441 struct Location loc;
1445 struct Declaration * decl;
1446 struct ClassFunction * function;
1447 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1448 struct PropertyDef * propertyDef;
1449 struct PropertyWatch * propertyWatch;
1451 struct Identifier * defaultProperty;
1454 struct Identifier * id;
1455 struct Initializer * initializer;
1456 } ecere_gcc_struct __anon1;
1457 } ecere_gcc_struct __anon1;
1462 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
1464 struct __ecereNameSpace__ecere__com__NameSpace;
1466 struct __ecereNameSpace__ecere__com__NameSpace
1469 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1470 struct __ecereNameSpace__ecere__com__NameSpace * left;
1471 struct __ecereNameSpace__ecere__com__NameSpace * right;
1473 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1474 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1475 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1476 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1477 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1480 struct __ecereNameSpace__ecere__com__Class
1482 struct __ecereNameSpace__ecere__com__Class * prev;
1483 struct __ecereNameSpace__ecere__com__Class * next;
1489 unsigned int (* Constructor)(void * );
1490 void (* Destructor)(void * );
1493 struct __ecereNameSpace__ecere__com__Class * base;
1494 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
1495 struct __ecereNameSpace__ecere__sys__BinaryTree members;
1496 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
1497 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
1498 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
1499 struct __ecereNameSpace__ecere__sys__OldList derivatives;
1503 struct __ecereNameSpace__ecere__com__Instance * module;
1504 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1505 const char * dataTypeString;
1506 struct Type * dataType;
1508 int defaultAlignment;
1509 void (* Initialize)();
1511 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1512 const char * designerClass;
1513 unsigned int noExpansion;
1514 const char * defaultProperty;
1515 unsigned int comRedefinition;
1518 unsigned int internalDecl;
1520 unsigned int computeSize;
1521 short structAlignment;
1522 short pointerAlignment;
1523 int destructionWatchOffset;
1525 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1526 int inheritanceAccess;
1527 const char * fullName;
1529 struct __ecereNameSpace__ecere__sys__OldList conversions;
1530 struct __ecereNameSpace__ecere__sys__OldList templateParams;
1531 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
1532 struct __ecereNameSpace__ecere__com__Class * templateClass;
1533 struct __ecereNameSpace__ecere__sys__OldList templatized;
1535 unsigned int isInstanceClass;
1536 unsigned int byValueSystemClass;
1539 struct __ecereNameSpace__ecere__com__Application
1542 const char * * argv;
1544 unsigned int isGUIApp;
1545 struct __ecereNameSpace__ecere__sys__OldList allModules;
1546 char * parsedCommand;
1547 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1550 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1553 GetNameSpaceString(ns->parent, string);
1556 strcat(string, ns->name);
1557 strcat(string, "::");
1561 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue;
1563 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1565 struct Type * type = (((void *)0));
1566 struct Symbol * symbol;
1567 struct External * external = (((void *)0));
1569 if(defs && func->declarator)
1571 struct FunctionDefinition * function = (((void *)0));
1572 struct Symbol * propSymbol;
1576 if(!func->specifiers)
1577 func->specifiers = MkList();
1580 struct Specifier * s;
1582 for(s = (*func->specifiers).first; s; s = s->next)
1583 if(s->type == 0 && s->__anon1.specifier == STATIC)
1586 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1589 propSymbol = func->declarator->symbol;
1590 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1591 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1592 func->declarator->symbol = (((void *)0));
1593 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1594 func->declarator->symbol = (((void *)0));
1595 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1596 func->declarator->symbol = (((void *)0));
1598 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0);
1599 function->propSet = func->propSet;
1600 function->type = func->type;
1602 func->type->refCount++;
1603 ProcessFunctionBody(function, func->body);
1604 external = MkExternalFunction(function);
1605 external->symbol = func->declarator->symbol;
1606 external->__anon1.function->_class = func->_class;
1608 symbol = func->declarator->symbol;
1609 if(!func->dontMangle)
1611 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1613 func->declarator->symbol->__anon2.__anon3.methodExternal = external;
1614 if(method && method->symbol)
1615 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external;
1616 if(method && method->type == 1)
1618 struct Type * methodDataType;
1620 ProcessMethodType(method);
1621 methodDataType = method->dataType;
1622 type = symbol->type;
1623 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate)
1625 if(method->dataType->__anon1.__anon2.thisClassTemplate)
1627 if(owningClass->templateArgs)
1629 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate);
1631 type->byReference = method->dataType->byReference;
1632 methodDataType = ProcessTypeString(method->dataTypeString, 0);
1633 type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = arg ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0));
1636 else if(method->dataType->__anon1.__anon2.staticMethod)
1637 type->__anon1.__anon2.staticMethod = 1;
1638 else if(method->dataType->__anon1.__anon2.thisClass)
1640 type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass;
1641 type->byReference = method->dataType->byReference;
1645 if(!owningClass->symbol)
1646 owningClass->symbol = FindClass(owningClass->fullName);
1647 type->__anon1.__anon2.thisClass = owningClass->symbol;
1648 type->extraParam = 1;
1652 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 1, 1, 1, 0, 1))
1654 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name);
1658 struct Type * typeParam;
1659 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1661 if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first)
1663 struct TypeName * param = (*funcDecl->__anon1.function.parameters).first;
1665 for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next)
1667 if(typeParam->classObjectType)
1669 param->classObjectType = typeParam->classObjectType;
1670 if(param->declarator && param->declarator->symbol)
1671 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1673 param = param ? param->next : (((void *)0));
1677 if(methodDataType != method->dataType)
1678 FreeType(methodDataType);
1682 type = symbol->type;
1683 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass)
1685 if(owningClass && !owningClass->symbol)
1686 owningClass->symbol = FindClass(owningClass->fullName);
1687 type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1693 if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass)
1695 if(!owningClass->symbol)
1696 owningClass->symbol = FindClass(owningClass->fullName);
1697 symbol->type->__anon1.__anon2.thisClass = owningClass->symbol;
1699 if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion)
1701 if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1)
1703 if(owningClass->type != 1)
1704 symbol->type->__anon1.__anon2.thisClass = (((void *)0));
1707 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1709 propSymbol->__anon2.__anon2.externalGet = external;
1711 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1713 propSymbol->__anon2.__anon2.externalSet = external;
1715 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1717 propSymbol->__anon2.__anon2.externalIsSet = external;
1727 func->declarator = (((void *)0));
1728 func->specifiers = (((void *)0));
1729 func->body = (((void *)0));
1730 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1734 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1736 if(method && method->symbol)
1737 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0));
1738 if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external)
1739 func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0));
1740 func->declarator = (((void *)0));
1741 func->specifiers = (((void *)0));
1742 FreeExternal(external);
1747 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1748 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1749 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1750 external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator);
1751 external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, (void *)(CopySpecifier));
1752 external->__anon1.function->body = (((void *)0));
1758 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, const char * className, struct Statement * statement)
1760 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1761 struct __ecereNameSpace__ecere__com__DataMember * member;
1762 struct __ecereNameSpace__ecere__com__Property * prop;
1763 struct Expression * exp;
1764 struct Statement * stmt;
1765 char dataMemberSize[16];
1766 unsigned int lastOffset = 0;
1768 unsigned int privateMembers = 0;
1770 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1773 for(prop = regClass->conversions.first; prop; prop = prop->next)
1775 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1778 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1779 ListAdd(args, MkExpConstant("0"));
1781 char * string = QMkString(prop->dataTypeString);
1783 ListAdd(args, MkExpString(string));
1784 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1788 strcpy(name, "__ecereProp_");
1789 FullClassNameCat(name, regClass->fullName, 0);
1790 strcat(name, "_Set_");
1791 FullClassNameCat(name, prop->name, 1);
1792 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1795 ListAdd(args, MkExpConstant("0"));
1798 strcpy(name, "__ecereProp_");
1799 FullClassNameCat(name, regClass->fullName, 0);
1800 strcat(name, "_Get_");
1801 FullClassNameCat(name, prop->name, 1);
1802 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1805 ListAdd(args, MkExpConstant("0"));
1806 switch(prop->memberAccess)
1809 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1812 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1816 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1819 strcpy(name, "__ecereProp_");
1820 FullClassNameCat(name, regClass->fullName, 0);
1822 FullClassNameCat(name, prop->name, 1);
1823 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1824 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1827 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1829 if(member->isProperty)
1831 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1833 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1834 char name[1024], nameM[1024];
1835 char * string = QMkString(prop->name);
1837 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1838 ListAdd(args, MkExpString(string));
1839 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1841 char * string = QMkString(prop->dataTypeString);
1843 ListAdd(args, MkExpString(string));
1844 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1848 strcpy(name, "__ecereProp_");
1849 FullClassNameCat(name, regClass->fullName, 0);
1850 strcat(name, "_Set_");
1851 FullClassNameCat(name, prop->name, 1);
1852 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1855 ListAdd(args, MkExpConstant("0"));
1858 strcpy(name, "__ecereProp_");
1859 FullClassNameCat(name, regClass->fullName, 0);
1860 strcat(name, "_Get_");
1861 FullClassNameCat(name, prop->name, 1);
1862 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1865 ListAdd(args, MkExpConstant("0"));
1866 switch(prop->memberAccess)
1869 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1872 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1876 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1879 strcpy(name, "__ecereProp_");
1880 FullClassNameCat(name, regClass->fullName, 0);
1882 FullClassNameCat(name, prop->name, 1);
1883 strcpy(nameM, "__ecerePropM_");
1884 FullClassNameCat(nameM, regClass->fullName, 0);
1886 FullClassNameCat(nameM, prop->name, 1);
1887 if(prop->dataTypeString)
1889 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1893 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1895 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1900 strcpy(name, "__ecereProp_");
1901 FullClassNameCat(name, regClass->fullName, 1);
1902 strcat(name, "_IsSet_");
1903 FullClassNameCat(name, prop->name, 0);
1904 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))))));
1905 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1907 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1909 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1910 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1912 if(prop->dataTypeString)
1914 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1916 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1917 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1918 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1919 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1920 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1921 ListAdd(unregisterModuleBody->__anon1.compound.statements, stmt);
1925 else if(member->type == 0 && !isMember && regClass->type == 2)
1927 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1928 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1930 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1932 char * string = QMkString(bitMember->name);
1934 ListAdd(args, MkExpString(string));
1935 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1938 char * string = QMkString(bitMember->dataTypeString);
1940 ListAdd(args, MkExpString(string));
1941 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1946 sprintf(string, "%d", bitMember->size);
1947 ListAdd(args, (exp = MkExpConstant(string)));
1952 sprintf(string, "%d", bitMember->pos);
1953 ListAdd(args, (exp = MkExpConstant(string)));
1955 switch(member->memberAccess)
1958 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1961 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1965 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1968 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1969 ListAdd(statement->__anon1.compound.statements, stmt);
1971 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1973 struct __ecereNameSpace__ecere__sys__OldList * args;
1977 unsigned int offset = member->offset - lastOffset;
1980 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1984 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1985 ListAdd(args, MkExpString(string));
1990 sprintf(string, "\"byte[%d]\"", offset);
1991 ListAdd(args, MkExpString(string));
1996 sprintf(string, "%d", offset);
1997 ListAdd(args, (exp = MkExpConstant(string)));
1999 ListAdd(args, (exp = MkExpConstant("1")));
2000 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2001 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
2002 ListAdd(statement->__anon1.compound.statements, stmt);
2005 if(member->type == 0)
2007 if(!member->dataType)
2008 member->dataType = ProcessTypeString(member->dataTypeString, 0);
2009 ComputeTypeSize(member->dataType);
2011 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2013 char * string = QMkString(member->name);
2015 ListAdd(args, MkExpString(string));
2016 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2019 char * string = QMkString(member->dataTypeString);
2021 ListAdd(args, MkExpString(string));
2022 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2025 if(__ecereProp_Type_Get_isPointerTypeSize(member->dataType))
2027 ListAdd(args, (exp = MkExpTypeSize(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))))));
2028 ListAdd(args, (exp = MkExpConstant("0xF000F000")));
2034 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))
2037 DeclareStruct(registerModuleExternal, member->dataType->__anon1._class->string, 0, 1);
2038 FullClassNameCat(string, member->dataType->__anon1._class->string, 0);
2039 exp = MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(string), (((void *)0)))), (((void *)0))));
2043 sprintf(string, "%d", member->dataType->size);
2044 exp = MkExpConstant(string);
2047 if(member->dataType->pointerAlignment)
2048 exp = MkExpConstant("0xF000F000");
2051 sprintf(string, "%d", member->dataType->alignment);
2052 exp = MkExpConstant(string);
2057 switch(member->memberAccess)
2060 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2063 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2067 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2070 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
2071 ListAdd(statement->__anon1.compound.statements, stmt);
2072 lastOffset = member->offset + member->dataType->size;
2076 static int memberCount = 0;
2077 struct Context * context;
2078 struct Statement * compound;
2079 char memberName[256];
2081 sprintf(memberName, "dataMember%d", memberCount);
2083 curContext = statement->__anon1.compound.context;
2084 context = PushContext();
2085 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
2086 switch(member->memberAccess)
2089 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2092 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2096 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2099 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
2100 compound->__anon1.compound.context = context;
2102 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2103 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
2104 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 1, memberName, compound);
2106 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
2108 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
2109 ListAdd(compound->__anon1.compound.statements, stmt);
2110 PopContext(context);
2111 ListAdd(statement->__anon1.compound.statements, compound);
2113 lastOffset = member->offset + member->memberOffset;
2121 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
2123 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
2125 if(prop->isProperty && prop->isWatchable)
2127 struct __ecereNameSpace__ecere__sys__OldList * args;
2128 char name[1024], nameM[1024];
2130 strcpy(name, "__ecereProp_");
2131 FullClassNameCat(name, regClass->fullName, 1);
2133 FullClassNameCat(name, prop->name, 0);
2134 strcpy(nameM, "__ecerePropM_");
2135 FullClassNameCat(nameM, regClass->fullName, 1);
2137 FullClassNameCat(nameM, prop->name, 0);
2138 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
2139 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
2140 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2143 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)))
2145 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2147 char * string = QMkString(classProperty->name);
2149 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2150 ListAdd(args, MkExpString(string));
2151 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2153 char * string = QMkString(classProperty->dataTypeString);
2155 ListAdd(args, MkExpString(string));
2156 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2158 if(classProperty->Set)
2160 strcpy(name, "__ecereClassProp_");
2161 FullClassNameCat(name, regClass->fullName, 1);
2162 strcat(name, "_Set_");
2163 strcat(name, classProperty->name);
2164 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2167 ListAdd(args, MkExpConstant("0"));
2168 if(classProperty->Get)
2170 strcpy(name, "__ecereClassProp_");
2171 FullClassNameCat(name, regClass->fullName, 1);
2172 strcat(name, "_Get_");
2173 strcat(name, classProperty->name);
2174 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2177 ListAdd(args, MkExpConstant("0"));
2178 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
2179 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2184 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
2186 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
2188 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
2190 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
2192 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2194 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2196 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2198 struct __ecereNameSpace__ecere__com__Module
2200 struct __ecereNameSpace__ecere__com__Instance * application;
2201 struct __ecereNameSpace__ecere__sys__OldList classes;
2202 struct __ecereNameSpace__ecere__sys__OldList defines;
2203 struct __ecereNameSpace__ecere__sys__OldList functions;
2204 struct __ecereNameSpace__ecere__sys__OldList modules;
2205 struct __ecereNameSpace__ecere__com__Instance * prev;
2206 struct __ecereNameSpace__ecere__com__Instance * next;
2212 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2213 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2216 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2218 __attribute__((unused)) struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2221 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2225 void CreateRegisterModuleBody()
2227 if(!registerModuleBody && inCompiler)
2229 char registerName[1024], moduleName[274];
2230 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2231 struct Declarator * declarator;
2232 struct TypeName * moduleParam;
2234 registerModuleBody = MkCompoundStmt(MkList(), MkList());
2235 registerModuleBody->__anon1.compound.context = __extension__ ({
2236 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2238 __ecereInstance1->parent = globalContext, __ecereInstance1;
2240 ListAdd(registerModuleBody->__anon1.compound.declarations, MkDeclaration((specifiers = MkListOne(MkSpecifierName("ecere::com::Class"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
2241 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specifiers), MkSpecifierExtended(MkExtDeclAttrib(MkAttrib(ATTRIB, MkListOne(MkAttribute(__ecereNameSpace__ecere__sys__CopyString("unused"), (((void *)0))))))));
2242 specifiers = MkList();
2243 ListAdd(specifiers, MkSpecifier(VOID));
2244 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2245 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2246 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2247 FixModuleName(moduleName);
2248 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
2249 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2251 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2253 ProcessFunctionBody(function, registerModuleBody);
2254 function->declMode = 0;
2257 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
2258 DeclareStruct(registerModuleExternal, "ecere::com::Instance", 0, 1);
2259 DeclareStruct(registerModuleExternal, "ecere::com::Module", 0, 1);
2262 if(!unregisterModuleBody && inCompiler)
2264 char registerName[1024], moduleName[274];
2265 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2266 struct Declarator * declarator;
2267 struct TypeName * moduleParam;
2269 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
2270 unregisterModuleBody->__anon1.compound.context = __extension__ ({
2271 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2273 __ecereInstance1->parent = globalContext, __ecereInstance1;
2275 specifiers = MkList();
2276 ListAdd(specifiers, MkSpecifier(VOID));
2277 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2278 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2279 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2280 FixModuleName(moduleName);
2281 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
2282 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2284 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2286 ProcessFunctionBody(function, unregisterModuleBody);
2287 function->declMode = 0;
2290 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
2291 DeclareStruct(unregisterModuleExternal, "ecere::com::Instance", 0, 1);
2292 DeclareStruct(unregisterModuleExternal, "ecere::com::Module", 0, 1);
2297 void __ecereCreateModuleInstances_pass1()
2299 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
2300 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
2303 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2308 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)
2310 struct ClassDef * def;
2311 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->__anon1.registered;
2315 classType = regClass->type;
2316 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2318 struct Enumerator * e;
2320 for(e = enumValues->first; e; e = e->next)
2324 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 4, destType->refCount = 1, destType);
2326 e->exp->destType = destType;
2328 ProcessExpressionType(e->exp);
2330 if(!e->exp->expType)
2333 destType->__anon1._class = symbol;
2334 ProcessExpressionType(e->exp);
2336 if(e->exp->type == 0 && e->exp->expType && e->exp->__anon1.__anon1.identifier && e->exp->__anon1.__anon1.identifier->string && e->exp->expType->kind == 15)
2338 struct __ecereNameSpace__ecere__sys__NamedLink64 * l;
2339 char * string = e->exp->__anon1.__anon1.identifier->string;
2341 for(l = e->exp->expType->__anon1.__anon1.members.first; l; l = l->next)
2343 if(!strcmp(l->name, string))
2347 FreeExpContents(e->exp);
2349 e->exp->__anon1.__anon1.constant = PrintInt64(l->data);
2350 FreeType(e->exp->expType);
2351 e->exp->expType = ProcessTypeString("int64", 0);
2358 ComputeExpression(e->exp);
2359 if(e->exp->isConstant && e->exp->type == 2)
2361 struct Operand op = GetOperand(e->exp);
2367 value = op.type->isSigned ? (long long)op.__anon1.c : (long long)op.__anon1.uc;
2370 value = op.type->isSigned ? (long long)op.__anon1.s : (long long)op.__anon1.us;
2373 value = op.type->isSigned ? op.__anon1.i64 : (long long)op.__anon1.ui64;
2377 value = op.type->isSigned ? (long long)op.__anon1.i : (int)op.__anon1.ui;
2379 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2382 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2385 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2388 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2389 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2391 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2393 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2395 if(c && c->type == 4)
2397 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2399 data->largest = baseData->largest;
2404 if(definitions != (((void *)0)))
2408 for(def = definitions->first; def; def = def->next)
2410 if(def->type == 4 && def->__anon1.propertyWatch)
2412 struct PropertyWatch * propWatch = def->__anon1.propertyWatch;
2413 struct ClassFunction * func;
2414 char watcherName[1024];
2415 struct Identifier * propID;
2416 struct Statement * stmt = MkExpressionStmt(MkList());
2417 struct Declarator * decl;
2418 struct __ecereNameSpace__ecere__sys__OldList * specs;
2420 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2421 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2423 strcat(watcherName, "_");
2424 strcat(watcherName, propID->string);
2426 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2428 ListAdd(specs, MkSpecifier(STATIC));
2429 ListAdd(specs, MkSpecifier(VOID));
2430 func = MkClassFunction(specs, (((void *)0)), decl, (((void *)0)));
2431 ProcessClassFunctionBody(func, propWatch->compound);
2432 decl->symbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2433 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2434 func->dontMangle = 1;
2435 propWatch->compound = (((void *)0));
2436 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2437 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2439 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2443 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2445 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2447 char * s = QMkString(propID->string);
2449 ListAdd(args, MkExpString(s));
2450 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2452 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2453 ListAdd(stmt->__anon1.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2456 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2458 FreePropertyWatch(def->__anon1.propertyWatch);
2459 def->__anon1.propertyWatch = (struct PropertyWatch *)stmt;
2463 for(def = definitions->first; def; def = def->next)
2467 ProcessClassFunction(regClass, def->__anon1.function, defs, external->prev, declMode == 3);
2471 if(inCompiler && symbol->mustRegister && regClass)
2473 struct Statement * stmt;
2474 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2475 struct __ecereNameSpace__ecere__com__Method * method;
2476 struct Expression * exp;
2477 const char * registerFunction = (((void *)0));
2478 int inheritanceAccess = 1;
2480 CreateRegisterModuleBody();
2481 curExternal = registerModuleExternal;
2482 switch(regClass->type)
2485 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2488 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2491 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2494 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2497 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2500 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2504 char nameSpace[1024] = "";
2505 char className[1024] = "";
2508 GetNameSpaceString(regClass->nameSpace, nameSpace);
2511 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2512 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2513 strcat(className, "}");
2515 strcat(className, nameSpace);
2516 strcat(className, regClass->name);
2517 string = QMkString(className);
2518 ListAdd(args, MkExpString(string));
2519 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2521 if(baseSpecs != (((void *)0)))
2523 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2525 if(baseType->kind != 9 && baseType->kind != 10)
2527 char baseName[1024] = "";
2530 if(baseType->kind == 8 && baseType->__anon1._class && baseType->__anon1._class->isStatic)
2532 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2533 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2534 strcat(baseName, "}");
2535 strcat(baseName, baseType->__anon1._class->string);
2538 PrintType(baseType, baseName, 0, 1);
2539 string = QMkString(baseName);
2540 ListAdd(args, MkExpString(string));
2541 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2544 ListAdd(args, MkExpConstant("0"));
2546 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->__anon1.specifier == PRIVATE)
2547 inheritanceAccess = 2;
2550 ListAdd(args, MkExpConstant("0"));
2551 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2553 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2556 struct __ecereNameSpace__ecere__com__Class * base;
2558 for(base = regClass->base; base && base->type != 1000; base = base->next)
2560 for(member = base->membersAndProperties.first; member; member = member->next)
2561 if(!member->isProperty)
2567 if(regClass->type == 1 && symbol->declaredStruct && member)
2569 char baseStructName[1024];
2571 baseStructName[0] = 0;
2572 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2573 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))))));
2576 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2580 ListAdd(args, MkExpConstant("0"));
2583 char classDataStructName[1024];
2585 strcpy(classDataStructName, "__ecereClassData_");
2586 FullClassNameCat(classDataStructName, symbol->string, 0);
2587 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2589 if(regClass->type == 0 || regClass->type == 5)
2591 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0")));
2592 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0")));
2596 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2597 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2599 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2603 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2606 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2610 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2613 switch(inheritanceAccess)
2616 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2620 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2623 registerFunction = "eSystem_RegisterClass";
2624 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2625 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2626 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)));
2627 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2628 if(external && external->type == 2 && external->__anon1._class->deleteWatchable)
2630 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2631 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2632 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2636 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2639 for(c = 0; c < base->vTblSize; c++)
2641 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2643 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->__anon2.__anon3.methodExternal)
2645 struct External * external = method->__anon2.__anon3.methodExternal;
2646 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2647 struct Identifier * id = external->__anon1.function ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2650 struct External * e = method->__anon2.__anon3.methodExternal ? method->__anon2.__anon3.methodExternal : method->__anon2.__anon3.methodCodeExternal;
2652 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, e, e->type == 0);
2654 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2656 char * string = QMkString(method->__anon1.method->name);
2658 ListAdd(args, MkExpString(string));
2659 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2661 ListAdd(args, MkExpConstant("0"));
2662 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2663 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2664 exp->expType = __extension__ ({
2665 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2667 __ecereInstance1->refCount = 1, __ecereInstance1;
2669 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2670 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2677 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2679 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)))
2681 if(method->type == 1 && method->_class == regClass && method->vid == c)
2684 struct Expression * exp;
2685 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2686 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2687 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2689 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2691 char * string = QMkString(method->name);
2693 ListAdd(args, MkExpString(string));
2694 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2697 char * string = QMkString(method->dataTypeString);
2699 ListAdd(args, MkExpString(string));
2700 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2702 if(id && external->__anon1.function->body)
2704 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2705 exp->expType = __extension__ ({
2706 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2708 __ecereInstance1->refCount = 1, __ecereInstance1;
2713 ListAdd(args, (exp = MkExpConstant("0")));
2715 switch(method->memberAccess)
2718 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2721 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2725 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2728 strcpy(name, "__ecereVMethodID_");
2729 FullClassNameCat(name, method->_class->fullName, 0);
2731 strcat(name, method->name);
2732 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2733 stmt = MkExpressionStmt(MkListOne(exp));
2735 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2736 DeclareMethod(curExternal, method, name);
2737 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2742 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)))
2744 if(method->type == 1 && method->_class == regClass)
2746 else if(method->memberAccess == 1 || !method->dataTypeString)
2748 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2749 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2750 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2752 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2754 char * string = QMkString(method->name);
2756 ListAdd(args, MkExpString(string));
2757 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2760 char * string = QMkString(method->dataTypeString);
2762 ListAdd(args, MkExpString(string));
2763 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2765 if(id && external->__anon1.function->body)
2767 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2768 exp->expType = __extension__ ({
2769 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2771 __ecereInstance1->refCount = 1, __ecereInstance1;
2776 ListAdd(args, (exp = MkExpConstant("0")));
2778 switch(method->memberAccess)
2781 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2784 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2788 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2791 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2792 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2794 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2797 RegisterMembersAndProperties(regClass, 0, "class", registerModuleBody);
2800 struct __ecereNameSpace__ecere__sys__NamedLink64 * value;
2801 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2802 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2804 for(value = e->values.first; value; value = value->next)
2806 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2808 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2810 char * string = QMkString(value->name);
2812 ListAdd(args, MkExpString(string));
2813 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2818 if(regClass->dataTypeString && !strcmp(regClass->dataTypeString, "uint64"))
2819 temp = PrintUInt64(value->data);
2821 temp = PrintInt64(value->data);
2822 ListAdd(args, MkExpConstant(temp));
2823 (__ecereNameSpace__ecere__com__eSystem_Delete(temp), temp = 0);
2825 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2826 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2829 if(symbol->templateParams)
2831 struct TemplateParameter * param;
2833 for(param = (*symbol->templateParams).first; param; param = param->next)
2835 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2837 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2839 char * string = QMkString(param->identifier->string);
2841 ListAdd(args, MkExpString(string));
2842 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2844 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2850 char * typeString = param->__anon1.dataType ? StringFromSpecDecl(param->__anon1.dataType->specifiers, param->__anon1.dataType->decl) : (((void *)0));
2851 char * string = QMkString(typeString);
2853 ListAdd(args, MkExpString(string));
2854 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2855 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2860 char memberTypeString[132] = "TemplateMemberType::";
2861 unsigned int needClass = 1;
2864 const char * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char * tempString, void * fieldData, unsigned int * needClass);
2866 __internal_VirtualMethod = ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString]);
2867 __internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, (void *)¶m->__anon1.memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass) : (const char * )1;
2869 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2873 if(param->defaultArgument)
2875 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2881 char * typeString = param->defaultArgument->__anon1.templateDatatype ? StringFromSpecDecl(param->defaultArgument->__anon1.templateDatatype->specifiers, param->defaultArgument->__anon1.templateDatatype->decl) : (((void *)0));
2882 char * string = QMkString(typeString);
2884 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2885 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2886 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2891 char memberString[1024];
2894 memberString[0] = '\0';
2895 if(param->defaultArgument->__anon1.identifier->_class)
2897 if(param->defaultArgument->__anon1.identifier->_class->type == 8)
2898 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.templateParameter->identifier->string);
2899 else if(param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name)
2900 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name);
2903 strcat(memberString, "::");
2904 strcat(memberString, param->defaultArgument->__anon1.identifier->string);
2905 string = QMkString(memberString);
2906 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2907 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2919 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
2922 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2924 char * string = (((void *)0));
2926 op = GetOperand(param->defaultArgument->__anon1.expression);
2927 ui64String = PrintUInt64(op.__anon1.ui64);
2928 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2929 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2930 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2931 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2932 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2936 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2939 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2940 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2941 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2943 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2944 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2946 if(definitions != (((void *)0)))
2948 for(def = definitions->first; def; def = def->next)
2950 if(def->type == 4 && def->__anon1.propertyWatch)
2952 ListAdd(registerModuleBody->__anon1.compound.statements, (struct Statement *)def->__anon1.propertyWatch);
2953 def->__anon1.propertyWatch = (((void *)0));
2955 else if(def->type == 5)
2958 char * s = QMkString(def->__anon1.designer);
2960 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(s)))), (((void *)0)));
2961 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2963 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2965 else if(def->type == 6)
2967 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2968 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2970 else if(def->type == 7)
2972 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2973 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2975 regClass->fixed = 1;
2977 else if(def->type == 8)
2979 char * s = QMkString(def->__anon1.defaultProperty->string);
2981 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(s)))), (((void *)0)));
2982 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2983 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2985 else if(def->type == 11)
2988 struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value);
2990 __internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2991 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2993 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2994 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add]);
2995 __internal_VirtualMethod ? __internal_VirtualMethod(classPropValues, (uint64)(uintptr_t)(__extension__ ({
2996 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2998 ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->regClass = regClass, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->staticClass = (declMode == 3), ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->id = def->__anon1.__anon1.id, ((struct ClassPropertyValue *)(((char *)__ecereInstance1 + __ecereClass_ClassPropertyValue->offset)))->exp = def->__anon1.__anon1.initializer->__anon1.exp, __ecereInstance1;
2999 }))) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1;
3001 def->__anon1.__anon1.id = (((void *)0));
3002 def->__anon1.__anon1.initializer->__anon1.exp = (((void *)0));
3010 void ProcessClassDefinitions()
3012 struct External * external, * next;
3014 CreateRegisterModuleBody();
3017 for(external = (*ast).first; external; external = next)
3019 next = external->next;
3020 curExternal = external;
3021 if(external->type == 2)
3023 struct ClassDefinition * _class = external->__anon1._class;
3025 if(_class->definitions)
3027 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
3031 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3032 FreeExternal(external);
3035 else if(external->type == 0)
3037 unsigned int setStaticMethod = 0;
3039 if(external->symbol && !external->symbol->type->__anon1.__anon2.thisClass && !external->symbol->type->__anon1.__anon2.staticMethod)
3041 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3042 setStaticMethod = 1;
3046 struct FunctionDefinition * function = external->__anon1.function;
3047 struct Statement * stmt;
3048 struct __ecereNameSpace__ecere__sys__OldList * args;
3050 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
3052 ListAdd(registerModuleBody->__anon1.compound.statements, function->body);
3053 function->body->__anon1.compound.context->parent = registerModuleBody->__anon1.compound.context;
3054 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3055 function->body = (((void *)0));
3056 FreeExternal(external);
3059 if(function->declMode != 2 && function->declMode != 1)
3062 CreateRegisterModuleBody();
3064 char * string = QMkString(function->declarator->symbol->string);
3066 ListAdd(args, MkExpString(string));
3067 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3071 char type[1024] = "";
3074 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 0;
3075 PrintType(function->declarator->symbol->type, type, 1, 1);
3077 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 1;
3078 string = QMkString(type);
3079 ListAdd(args, MkExpString(string));
3080 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3083 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
3085 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3086 switch(function->declMode)
3089 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3092 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3096 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3099 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
3100 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3103 else if(external->type == 1)
3105 struct Declaration * declaration = external->__anon1.declaration;
3107 if(external->symbol)
3109 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->__anon1.__anon2.thisClass)
3110 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3112 if(external->symbol && declaration && declaration->type == 1)
3114 if(declaration->__anon1.__anon1.specifiers)
3116 struct Specifier * specifier;
3117 unsigned int removeExternal = 0;
3119 for(specifier = (*declaration->__anon1.__anon1.specifiers).first; specifier; specifier = specifier->next)
3121 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)))
3123 struct Symbol * symbol = FindClass(specifier->__anon1.__anon2.id->string);
3129 if(specifier->type == 2)
3134 symbol->ctx = specifier->__anon1.__anon2.ctx;
3135 specifier->__anon1.__anon2.ctx = (((void *)0));
3136 ProcessClass(classType, specifier->__anon1.__anon2.definitions, symbol, specifier->__anon1.__anon2.baseSpecs, specifier->__anon1.__anon2.list, ast, external, declaration->declMode);
3140 if(inCompiler && removeExternal)
3142 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3143 FreeExternal(external);
3147 else if(declaration && declaration->type == 3)
3149 if(inCompiler && declaration->declMode != 3)
3151 struct Statement * stmt;
3152 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3154 CreateRegisterModuleBody();
3156 char * string = QMkString(declaration->__anon1.__anon2.id->string);
3158 ListAdd(args, MkExpString(string));
3159 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3163 char type[1024] = "";
3165 PrintExpression(declaration->__anon1.__anon2.exp, type);
3166 string = QMkString(type);
3167 ListAdd(args, MkExpString(string));
3168 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3170 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3171 switch(declaration->declMode)
3174 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3177 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3181 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3184 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3185 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3191 struct __ecereNameSpace__ecere__com__Iterator v =
3193 (classPropValues), 0
3196 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3198 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3199 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3200 struct Statement * compoundStmt;
3202 struct Expression * e;
3205 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3207 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3209 yylloc = __extension__ ({
3210 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3212 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3214 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3216 char nameSpace[1024] = "";
3217 char className[1024] = "";
3218 struct __ecereNameSpace__ecere__com__Class * regClass = __extension__ ({
3219 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3221 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3224 GetNameSpaceString(regClass->nameSpace, nameSpace);
3226 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3228 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3231 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
3232 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
3233 strcat(className, "}");
3235 strcat(className, nameSpace);
3236 strcat(className, regClass->name);
3237 s = QMkString(className);
3239 ListAdd(findClassArgs, MkExpString(s));
3240 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3241 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3242 s = QMkString(__extension__ ({
3243 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3245 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3247 ListAdd(args, MkExpString(s));
3248 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3249 e = __extension__ ({
3250 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3252 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3254 ProcessExpressionType(e);
3255 if(__ecereProp_Type_Get_isPointerType(e->expType))
3256 e = MkExpCast(MkTypeName(MkListOne(MkSpecifierName("intptr")), (((void *)0))), e);
3257 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), e));
3258 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)))));
3259 compoundStmt->__anon1.compound.context = __extension__ ({
3260 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3262 __ecereInstance1->parent = registerModuleBody->__anon1.compound.context, __ecereInstance1;
3264 ListAdd(registerModuleBody->__anon1.compound.statements, compoundStmt);
3268 void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *);
3270 __internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3271 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3273 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3274 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free]);
3275 __internal_VirtualMethod ? __internal_VirtualMethod(classPropValues) : (void)1;
3280 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3282 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
3284 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3285 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3286 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3287 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3288 __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);
3289 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3290 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, const char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3291 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3292 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, (void *)0, (void *)__ecereDestructor_ClassPropertyValue, module, 2, 1);
3293 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)
3294 __ecereClass_ClassPropertyValue = class;
3295 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);