1 /* Code generated from eC source file: pass1.ec */
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
7 #define __runtimePlatform 2
10 typedef long long int64;
11 typedef unsigned long long uint64;
15 #elif defined(__TINYC__)
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
27 typedef long long int64;
28 typedef unsigned long long uint64;
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
34 #define __ENDIAN_PAD(x) (8 - (x))
36 #define __ENDIAN_PAD(x) 0
39 # if defined(__GNUC__) || defined(__TINYC__)
40 # define ecere_stdcall __attribute__((__stdcall__))
41 # define ecere_gcc_struct __attribute__((gcc_struct))
43 # define ecere_stdcall __stdcall
44 # define ecere_gcc_struct
47 # define ecere_stdcall
48 # define ecere_gcc_struct
51 #include <sys/types.h>
54 IDENTIFIER = 258, CONSTANT = 259, STRING_LITERAL = 260, SIZEOF = 261, PTR_OP = 262, INC_OP = 263, DEC_OP = 264, LEFT_OP = 265, RIGHT_OP = 266, LE_OP = 267, GE_OP = 268, EQ_OP = 269, NE_OP = 270, AND_OP = 271, OR_OP = 272, MUL_ASSIGN = 273, DIV_ASSIGN = 274, MOD_ASSIGN = 275, ADD_ASSIGN = 276, SUB_ASSIGN = 277, LEFT_ASSIGN = 278, RIGHT_ASSIGN = 279, AND_ASSIGN = 280, XOR_ASSIGN = 281, OR_ASSIGN = 282, TYPE_NAME = 283, TYPEDEF = 284, EXTERN = 285, STATIC = 286, AUTO = 287, REGISTER = 288, CHAR = 289, SHORT = 290, INT = 291, UINT = 292, INT64 = 293, LONG = 294, SIGNED = 295, UNSIGNED = 296, FLOAT = 297, DOUBLE = 298, CONST = 299, VOLATILE = 300, VOID = 301, VALIST = 302, STRUCT = 303, UNION = 304, ENUM = 305, ELLIPSIS = 306, CASE = 307, DEFAULT = 308, IF = 309, SWITCH = 310, WHILE = 311, DO = 312, FOR = 313, GOTO = 314, CONTINUE = 315, BREAK = 316, RETURN = 317, IFX = 318, ELSE = 319, CLASS = 320, THISCLASS = 321, CLASS_NAME = 322, PROPERTY = 323, SETPROP = 324, GETPROP = 325, NEWOP = 326, RENEW = 327, DELETE = 328, EXT_DECL = 329, EXT_STORAGE = 330, IMPORT = 331, DEFINE = 332, VIRTUAL = 333, ATTRIB = 334, PUBLIC = 335, PRIVATE = 336, TYPED_OBJECT = 337, ANY_OBJECT = 338, _INCREF = 339, EXTENSION = 340, ASM = 341, TYPEOF = 342, WATCH = 343, STOPWATCHING = 344, FIREWATCHERS = 345, WATCHABLE = 346, CLASS_DESIGNER = 347, CLASS_NO_EXPANSION = 348, CLASS_FIXED = 349, ISPROPSET = 350, CLASS_DEFAULT_PROPERTY = 351, PROPERTY_CATEGORY = 352, CLASS_DATA = 353, CLASS_PROPERTY = 354, SUBCLASS = 355, NAMESPACE = 356, NEW0OP = 357, RENEW0 = 358, VAARG = 359, DBTABLE = 360, DBFIELD = 361, DBINDEX = 362, DATABASE_OPEN = 363, ALIGNOF = 364, ATTRIB_DEP = 365, __ATTRIB = 366, BOOL = 367, _BOOL = 368, _COMPLEX = 369, _IMAGINARY = 370, RESTRICT = 371, THREAD = 372, WIDE_STRING_LITERAL = 373, BUILTIN_OFFSETOF = 374
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;
1185 unsigned int __ecereProp_Type_Get_isPointerTypeSize(struct Type * this);
1187 unsigned int __ecereProp_Type_Get_isPointerType(struct Type * this);
1189 struct __ecereNameSpace__ecere__com__Module;
1191 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);
1193 extern struct __ecereNameSpace__ecere__com__Instance * privateModule;
1195 extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_FindClass(struct __ecereNameSpace__ecere__com__Instance * module, const char * name);
1197 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);
1199 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);
1201 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1203 struct __ecereNameSpace__ecere__com__DataMember;
1205 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1211 const char * dataTypeString;
1212 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1213 } ecere_gcc_struct __anon1;
1214 struct __ecereNameSpace__ecere__com__DataValue expression;
1217 const char * memberString;
1220 struct __ecereNameSpace__ecere__com__DataMember * member;
1221 struct __ecereNameSpace__ecere__com__Property * prop;
1222 struct __ecereNameSpace__ecere__com__Method * method;
1223 } ecere_gcc_struct __anon1;
1224 } ecere_gcc_struct __anon2;
1225 } ecere_gcc_struct __anon1;
1228 struct __ecereNameSpace__ecere__com__DataMember
1230 struct __ecereNameSpace__ecere__com__DataMember * prev;
1231 struct __ecereNameSpace__ecere__com__DataMember * next;
1233 unsigned int isProperty;
1236 struct __ecereNameSpace__ecere__com__Class * _class;
1237 const char * dataTypeString;
1238 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1239 struct Type * dataType;
1243 struct __ecereNameSpace__ecere__sys__OldList members;
1244 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1246 short structAlignment;
1247 short pointerAlignment;
1250 extern struct __ecereNameSpace__ecere__com__ClassTemplateArgument * FindTemplateArg(struct __ecereNameSpace__ecere__com__Class * _class, struct TemplateParameter * param);
1252 struct __ecereNameSpace__ecere__com__BitMember;
1254 struct __ecereNameSpace__ecere__com__BitMember
1256 struct __ecereNameSpace__ecere__com__BitMember * prev;
1257 struct __ecereNameSpace__ecere__com__BitMember * next;
1259 unsigned int isProperty;
1262 struct __ecereNameSpace__ecere__com__Class * _class;
1263 const char * dataTypeString;
1264 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1265 struct Type * dataType;
1272 struct __ecereNameSpace__ecere__com__ClassProperty;
1274 struct __ecereNameSpace__ecere__com__ClassProperty
1277 struct __ecereNameSpace__ecere__com__ClassProperty * parent;
1278 struct __ecereNameSpace__ecere__com__ClassProperty * left;
1279 struct __ecereNameSpace__ecere__com__ClassProperty * right;
1281 void (* Set)(struct __ecereNameSpace__ecere__com__Class *, long long);
1282 long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
1283 const char * dataTypeString;
1284 struct Type * dataType;
1285 unsigned int constant;
1288 struct ClassDefinition;
1292 struct External * prev;
1293 struct External * next;
1294 struct Location loc;
1296 struct Symbol * symbol;
1299 struct FunctionDefinition * function;
1300 struct ClassDefinition * _class;
1301 struct Declaration * declaration;
1302 char * importString;
1303 struct Identifier * id;
1304 struct DBTableDef * table;
1305 } ecere_gcc_struct __anon1;
1307 struct External * fwdDecl;
1308 struct __ecereNameSpace__ecere__com__Instance * outgoing;
1309 struct __ecereNameSpace__ecere__com__Instance * incoming;
1310 int nonBreakableIncoming;
1315 struct Context * parent;
1316 struct __ecereNameSpace__ecere__sys__BinaryTree types;
1317 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1318 struct __ecereNameSpace__ecere__sys__BinaryTree symbols;
1319 struct __ecereNameSpace__ecere__sys__BinaryTree structSymbols;
1322 struct __ecereNameSpace__ecere__sys__BinaryTree templateTypes;
1323 struct ClassDefinition * classDef;
1324 unsigned int templateTypesOnly;
1325 unsigned int hasNameSpace;
1328 struct ClassDefinition
1330 struct ClassDefinition * prev;
1331 struct ClassDefinition * next;
1332 struct Location loc;
1333 struct Specifier * _class;
1334 struct __ecereNameSpace__ecere__sys__OldList * baseSpecs;
1335 struct __ecereNameSpace__ecere__sys__OldList * definitions;
1336 struct Symbol * symbol;
1337 struct Location blockStart;
1338 struct Location nameLoc;
1340 unsigned int deleteWatchable;
1343 void __ecereMethod_External_CreateUniqueEdge(struct External * this, struct External * from, unsigned int soft);
1349 struct Enumerator * prev;
1350 struct Enumerator * next;
1351 struct Location loc;
1352 struct Identifier * id;
1353 struct Expression * exp;
1356 struct TemplateArgument;
1358 struct TemplateParameter
1360 struct TemplateParameter * prev;
1361 struct TemplateParameter * next;
1362 struct Location loc;
1364 struct Identifier * identifier;
1367 struct TemplateDatatype * dataType;
1369 } ecere_gcc_struct __anon1;
1370 struct TemplateArgument * defaultArgument;
1371 const char * dataTypeString;
1372 struct Type * baseType;
1375 struct TemplateArgument
1377 struct TemplateArgument * prev;
1378 struct TemplateArgument * next;
1379 struct Location loc;
1380 struct Identifier * name;
1384 struct Expression * expression;
1385 struct Identifier * identifier;
1386 struct TemplateDatatype * templateDatatype;
1387 } ecere_gcc_struct __anon1;
1392 typedef union YYSTYPE
1397 struct Identifier * id;
1398 struct Expression * exp;
1399 struct Specifier * specifier;
1400 struct __ecereNameSpace__ecere__sys__OldList * list;
1401 struct Enumerator * enumerator;
1402 struct Declarator * declarator;
1403 struct Pointer * pointer;
1404 struct Initializer * initializer;
1405 struct InitDeclarator * initDeclarator;
1406 struct TypeName * typeName;
1407 struct Declaration * declaration;
1408 struct Statement * stmt;
1409 struct FunctionDefinition * function;
1410 struct External * external;
1411 struct Context * context;
1412 struct AsmField * asmField;
1413 struct Attrib * attrib;
1414 struct ExtDecl * extDecl;
1415 struct Attribute * attribute;
1416 struct Instantiation * instance;
1417 struct MembersInit * membersInit;
1418 struct MemberInit * memberInit;
1419 struct ClassFunction * classFunction;
1420 struct ClassDefinition * _class;
1421 struct ClassDef * classDef;
1422 struct PropertyDef * prop;
1424 struct Symbol * symbol;
1425 struct PropertyWatch * propertyWatch;
1426 struct TemplateParameter * templateParameter;
1427 struct TemplateArgument * templateArgument;
1428 struct TemplateDatatype * templateDatatype;
1429 struct DBTableEntry * dbtableEntry;
1430 struct DBIndexItem * dbindexItem;
1431 struct DBTableDef * dbtableDef;
1432 } ecere_gcc_struct YYSTYPE;
1434 extern YYSTYPE yylval;
1438 struct ClassDef * prev;
1439 struct ClassDef * next;
1440 struct Location loc;
1444 struct Declaration * decl;
1445 struct ClassFunction * function;
1446 struct __ecereNameSpace__ecere__sys__OldList * defProperties;
1447 struct PropertyDef * propertyDef;
1448 struct PropertyWatch * propertyWatch;
1450 struct Identifier * defaultProperty;
1453 struct Identifier * id;
1454 struct Initializer * initializer;
1455 } ecere_gcc_struct __anon1;
1456 } ecere_gcc_struct __anon1;
1461 extern struct ClassDef * MkClassDefFunction(struct ClassFunction * function);
1463 struct __ecereNameSpace__ecere__com__NameSpace;
1465 struct __ecereNameSpace__ecere__com__NameSpace
1468 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1469 struct __ecereNameSpace__ecere__com__NameSpace * left;
1470 struct __ecereNameSpace__ecere__com__NameSpace * right;
1472 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1473 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1474 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1475 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1476 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1479 struct __ecereNameSpace__ecere__com__Class
1481 struct __ecereNameSpace__ecere__com__Class * prev;
1482 struct __ecereNameSpace__ecere__com__Class * next;
1488 unsigned int (* Constructor)(void * );
1489 void (* Destructor)(void * );
1492 struct __ecereNameSpace__ecere__com__Class * base;
1493 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
1494 struct __ecereNameSpace__ecere__sys__BinaryTree members;
1495 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
1496 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
1497 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
1498 struct __ecereNameSpace__ecere__sys__OldList derivatives;
1502 struct __ecereNameSpace__ecere__com__Instance * module;
1503 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1504 const char * dataTypeString;
1505 struct Type * dataType;
1507 int defaultAlignment;
1508 void (* Initialize)();
1510 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1511 const char * designerClass;
1512 unsigned int noExpansion;
1513 const char * defaultProperty;
1514 unsigned int comRedefinition;
1517 unsigned int internalDecl;
1519 unsigned int computeSize;
1520 short structAlignment;
1521 short pointerAlignment;
1522 int destructionWatchOffset;
1524 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1525 int inheritanceAccess;
1526 const char * fullName;
1528 struct __ecereNameSpace__ecere__sys__OldList conversions;
1529 struct __ecereNameSpace__ecere__sys__OldList templateParams;
1530 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
1531 struct __ecereNameSpace__ecere__com__Class * templateClass;
1532 struct __ecereNameSpace__ecere__sys__OldList templatized;
1534 unsigned int isInstanceClass;
1535 unsigned int byValueSystemClass;
1538 struct __ecereNameSpace__ecere__com__Application
1541 const char * * argv;
1543 unsigned int isGUIApp;
1544 struct __ecereNameSpace__ecere__sys__OldList allModules;
1545 char * parsedCommand;
1546 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1549 void GetNameSpaceString(struct __ecereNameSpace__ecere__com__NameSpace * ns, char * string)
1552 GetNameSpaceString(ns->parent, string);
1555 strcat(string, ns->name);
1556 strcat(string, "::");
1560 static struct __ecereNameSpace__ecere__com__Class * __ecereClass_ClassPropertyValue;
1562 struct External * ProcessClassFunction(struct __ecereNameSpace__ecere__com__Class * owningClass, struct ClassFunction * func, struct __ecereNameSpace__ecere__sys__OldList * defs, struct External * after, unsigned int makeStatic)
1564 struct Type * type = (((void *)0));
1565 struct Symbol * symbol;
1566 struct External * external = (((void *)0));
1568 if(defs && func->declarator)
1570 struct FunctionDefinition * function = (((void *)0));
1571 struct Symbol * propSymbol;
1575 if(!func->specifiers)
1576 func->specifiers = MkList();
1579 struct Specifier * s;
1581 for(s = (*func->specifiers).first; s; s = s->next)
1582 if(s->type == 0 && s->__anon1.specifier == STATIC)
1585 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert((&*func->specifiers), (((void *)0)), MkSpecifier(STATIC));
1588 propSymbol = func->declarator->symbol;
1589 ReplaceThisClassSpecifiers(func->specifiers, owningClass);
1590 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1591 func->declarator->symbol = (((void *)0));
1592 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1593 func->declarator->symbol = (((void *)0));
1594 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1595 func->declarator->symbol = (((void *)0));
1597 function = _MkFunction(func->specifiers, func->declarator, (((void *)0)), 0);
1598 function->propSet = func->propSet;
1599 function->type = func->type;
1601 func->type->refCount++;
1602 ProcessFunctionBody(function, func->body);
1603 external = MkExternalFunction(function);
1604 external->symbol = func->declarator->symbol;
1605 external->__anon1.function->_class = func->_class;
1607 symbol = func->declarator->symbol;
1608 if(!func->dontMangle)
1610 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1612 func->declarator->symbol->__anon2.__anon3.methodExternal = external;
1613 if(method && method->symbol)
1614 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = external;
1615 if(method && method->type == 1)
1617 struct Type * methodDataType;
1619 ProcessMethodType(method);
1620 methodDataType = method->dataType;
1621 type = symbol->type;
1622 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass && !type->__anon1.__anon2.thisClassTemplate)
1624 if(method->dataType->__anon1.__anon2.thisClassTemplate)
1626 if(owningClass->templateArgs)
1628 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * arg = FindTemplateArg(owningClass, method->dataType->__anon1.__anon2.thisClassTemplate);
1630 type->byReference = method->dataType->byReference;
1631 methodDataType = ProcessTypeString(method->dataTypeString, 0);
1632 type->__anon1.__anon2.thisClass = methodDataType->__anon1.__anon2.thisClass = arg ? FindClass((*arg).__anon1.__anon1.dataTypeString) : (((void *)0));
1635 else if(method->dataType->__anon1.__anon2.staticMethod)
1636 type->__anon1.__anon2.staticMethod = 1;
1637 else if(method->dataType->__anon1.__anon2.thisClass)
1639 type->__anon1.__anon2.thisClass = method->dataType->__anon1.__anon2.thisClass;
1640 type->byReference = method->dataType->byReference;
1644 if(!owningClass->symbol)
1645 owningClass->symbol = FindClass(owningClass->fullName);
1646 type->__anon1.__anon2.thisClass = owningClass->symbol;
1647 type->extraParam = 1;
1651 if(!MatchTypes(type, methodDataType, (((void *)0)), owningClass, method->_class, 1, 1, 1, 0, 1))
1653 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Incompatible virtual function %s\n", (((void *)0))), method->name);
1657 struct Type * typeParam;
1658 struct Declarator * funcDecl = GetFuncDecl(func->declarator);
1660 if(funcDecl->__anon1.function.parameters && (*funcDecl->__anon1.function.parameters).first)
1662 struct TypeName * param = (*funcDecl->__anon1.function.parameters).first;
1664 for(typeParam = methodDataType->__anon1.__anon2.params.first; typeParam && param; typeParam = typeParam->next)
1666 if(typeParam->classObjectType)
1668 param->classObjectType = typeParam->classObjectType;
1669 if(param->declarator && param->declarator->symbol)
1670 param->declarator->symbol->type->classObjectType = typeParam->classObjectType;
1672 param = param ? param->next : (((void *)0));
1676 if(methodDataType != method->dataType)
1677 FreeType(methodDataType);
1681 type = symbol->type;
1682 if(!type->__anon1.__anon2.staticMethod && !type->__anon1.__anon2.thisClass)
1684 if(owningClass && !owningClass->symbol)
1685 owningClass->symbol = FindClass(owningClass->fullName);
1686 type->__anon1.__anon2.thisClass = owningClass ? FindClass(owningClass->fullName) : (((void *)0));
1692 if(symbol->type && !symbol->type->__anon1.__anon2.staticMethod && !symbol->type->__anon1.__anon2.thisClass)
1694 if(!owningClass->symbol)
1695 owningClass->symbol = FindClass(owningClass->fullName);
1696 symbol->type->__anon1.__anon2.thisClass = owningClass->symbol;
1698 if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func && propSymbol->__anon1._property && propSymbol->__anon1._property->conversion)
1700 if(symbol->type->__anon1.__anon2.thisClass && symbol->type->classObjectType != 1)
1702 if(owningClass->type != 1)
1703 symbol->type->__anon1.__anon2.thisClass = (((void *)0));
1706 if(propSymbol->__anon2.__anon2.externalGet == (struct External *)func)
1708 propSymbol->__anon2.__anon2.externalGet = external;
1710 else if(propSymbol->__anon2.__anon2.externalSet == (struct External *)func)
1712 propSymbol->__anon2.__anon2.externalSet = external;
1714 else if(propSymbol->__anon2.__anon2.externalIsSet == (struct External *)func)
1716 propSymbol->__anon2.__anon2.externalIsSet = external;
1726 func->declarator = (((void *)0));
1727 func->specifiers = (((void *)0));
1728 func->body = (((void *)0));
1729 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1733 struct __ecereNameSpace__ecere__com__Method * method = func->declarator->symbol->__anon1.method;
1735 if(method && method->symbol)
1736 ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal = (((void *)0));
1737 if(func->declarator->symbol && func->declarator->symbol->__anon2.__anon3.methodExternal == external)
1738 func->declarator->symbol->__anon2.__anon3.methodExternal = (((void *)0));
1739 func->declarator = (((void *)0));
1740 func->specifiers = (((void *)0));
1741 FreeExternal(external);
1746 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Remove(&globalContext->symbols, (struct __ecereNameSpace__ecere__sys__BTNode *)symbol);
1747 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), symbol);
1748 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(defs, after, external);
1749 external->__anon1.function->declarator = CopyDeclarator(external->__anon1.function->declarator);
1750 external->__anon1.function->specifiers = CopyList(external->__anon1.function->specifiers, (void *)(CopySpecifier));
1751 external->__anon1.function->body = (((void *)0));
1757 void RegisterMembersAndProperties(struct __ecereNameSpace__ecere__com__Class * regClass, unsigned int isMember, const char * className, struct Statement * statement)
1759 struct __ecereNameSpace__ecere__com__DataMember * dataMember = isMember ? (struct __ecereNameSpace__ecere__com__DataMember *)regClass : (((void *)0));
1760 struct __ecereNameSpace__ecere__com__DataMember * member;
1761 struct __ecereNameSpace__ecere__com__Property * prop;
1762 struct Expression * exp;
1763 struct Statement * stmt;
1764 char dataMemberSize[16];
1765 unsigned int lastOffset = 0;
1767 unsigned int privateMembers = 0;
1769 sprintf(dataMemberSize, "%d", (int)sizeof(struct __ecereNameSpace__ecere__com__DataMember *));
1772 for(prop = regClass->conversions.first; prop; prop = prop->next)
1774 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1777 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1778 ListAdd(args, MkExpConstant("0"));
1780 char * string = QMkString(prop->dataTypeString);
1782 ListAdd(args, MkExpString(string));
1783 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1787 strcpy(name, "__ecereProp_");
1788 FullClassNameCat(name, regClass->fullName, 0);
1789 strcat(name, "_Set_");
1790 FullClassNameCat(name, prop->name, 1);
1791 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1794 ListAdd(args, MkExpConstant("0"));
1797 strcpy(name, "__ecereProp_");
1798 FullClassNameCat(name, regClass->fullName, 0);
1799 strcat(name, "_Get_");
1800 FullClassNameCat(name, prop->name, 1);
1801 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1804 ListAdd(args, MkExpConstant("0"));
1805 switch(prop->memberAccess)
1808 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1811 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1815 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1818 strcpy(name, "__ecereProp_");
1819 FullClassNameCat(name, regClass->fullName, 0);
1821 FullClassNameCat(name, prop->name, 1);
1822 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1823 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1826 for(member = isMember ? dataMember->members.first : regClass->membersAndProperties.first; member; member = member->next)
1828 if(member->isProperty)
1830 prop = (struct __ecereNameSpace__ecere__com__Property *)member;
1832 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1833 char name[1024], nameM[1024];
1834 char * string = QMkString(prop->name);
1836 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1837 ListAdd(args, MkExpString(string));
1838 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1840 char * string = QMkString(prop->dataTypeString);
1842 ListAdd(args, MkExpString(string));
1843 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1847 strcpy(name, "__ecereProp_");
1848 FullClassNameCat(name, regClass->fullName, 0);
1849 strcat(name, "_Set_");
1850 FullClassNameCat(name, prop->name, 1);
1851 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1854 ListAdd(args, MkExpConstant("0"));
1857 strcpy(name, "__ecereProp_");
1858 FullClassNameCat(name, regClass->fullName, 0);
1859 strcat(name, "_Get_");
1860 FullClassNameCat(name, prop->name, 1);
1861 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
1864 ListAdd(args, MkExpConstant("0"));
1865 switch(prop->memberAccess)
1868 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1871 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1875 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1878 strcpy(name, "__ecereProp_");
1879 FullClassNameCat(name, regClass->fullName, 0);
1881 FullClassNameCat(name, prop->name, 1);
1882 strcpy(nameM, "__ecerePropM_");
1883 FullClassNameCat(nameM, regClass->fullName, 0);
1885 FullClassNameCat(nameM, prop->name, 1);
1886 if(prop->dataTypeString)
1888 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args))));
1892 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddProperty")), args)));
1894 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1899 strcpy(name, "__ecereProp_");
1900 FullClassNameCat(name, regClass->fullName, 1);
1901 strcat(name, "_IsSet_");
1902 FullClassNameCat(name, prop->name, 0);
1903 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))))));
1904 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1906 if(prop->symbol && ((struct Symbol *)prop->symbol)->propCategory)
1908 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier(nameM)), MkIdentifier("category")), '=', CopyExpression(((struct Symbol *)prop->symbol)->propCategory))));
1909 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1911 if(prop->dataTypeString)
1913 struct __ecereNameSpace__ecere__sys__OldList * list = MkList();
1915 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(name)), '=', MkExpIdentifier(MkIdentifier(nameM))));
1916 ListAdd(list, MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0"))));
1917 stmt = MkIfStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("module")), MkIdentifier("application")), EQ_OP, MkExpMember(MkExpIdentifier(MkIdentifier("__thisModule")), MkIdentifier("application")))), MkExpressionStmt(list), (((void *)0)));
1918 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
1919 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier(nameM)), '=', MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")))));
1920 ListAdd(unregisterModuleBody->__anon1.compound.statements, stmt);
1924 else if(member->type == 0 && !isMember && regClass->type == 2)
1926 struct __ecereNameSpace__ecere__com__BitMember * bitMember = (struct __ecereNameSpace__ecere__com__BitMember *)member;
1927 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
1929 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1931 char * string = QMkString(bitMember->name);
1933 ListAdd(args, MkExpString(string));
1934 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1937 char * string = QMkString(bitMember->dataTypeString);
1939 ListAdd(args, MkExpString(string));
1940 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
1945 sprintf(string, "%d", bitMember->size);
1946 ListAdd(args, (exp = MkExpConstant(string)));
1951 sprintf(string, "%d", bitMember->pos);
1952 ListAdd(args, (exp = MkExpConstant(string)));
1954 switch(member->memberAccess)
1957 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
1960 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
1964 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
1967 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddBitMember")), args)));
1968 ListAdd(statement->__anon1.compound.statements, stmt);
1970 else if(member->memberAccess == 1 || (member->type == 0 && !member->dataTypeString))
1972 struct __ecereNameSpace__ecere__sys__OldList * args;
1976 unsigned int offset = member->offset - lastOffset;
1979 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
1983 sprintf(string, "\"__ecerePrivateData%d\"", privateID++);
1984 ListAdd(args, MkExpString(string));
1989 sprintf(string, "\"byte[%d]\"", offset);
1990 ListAdd(args, MkExpString(string));
1995 sprintf(string, "%d", offset);
1996 ListAdd(args, (exp = MkExpConstant(string)));
1998 ListAdd(args, (exp = MkExpConstant("1")));
1999 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2000 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
2001 ListAdd(statement->__anon1.compound.statements, stmt);
2004 if(member->type == 0)
2006 if(!member->dataType)
2007 member->dataType = ProcessTypeString(member->dataTypeString, 0);
2008 ComputeTypeSize(member->dataType);
2010 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2012 char * string = QMkString(member->name);
2014 ListAdd(args, MkExpString(string));
2015 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2018 char * string = QMkString(member->dataTypeString);
2020 ListAdd(args, MkExpString(string));
2021 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2024 if(__ecereProp_Type_Get_isPointerTypeSize(member->dataType))
2026 ListAdd(args, (exp = MkExpTypeSize(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))))));
2027 ListAdd(args, (exp = MkExpConstant("0xF000F000")));
2033 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))
2036 DeclareStruct(registerModuleExternal, member->dataType->__anon1._class->string, 0, 1);
2037 FullClassNameCat(string, member->dataType->__anon1._class->string, 0);
2038 exp = MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(string), (((void *)0)))), (((void *)0))));
2042 sprintf(string, "%d", member->dataType->size);
2043 exp = MkExpConstant(string);
2046 if(member->dataType->pointerAlignment)
2047 exp = MkExpConstant("0xF000F000");
2050 sprintf(string, "%d", member->dataType->alignment);
2051 exp = MkExpConstant(string);
2056 switch(member->memberAccess)
2059 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2062 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2066 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2069 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier(isMember ? "eMember_AddDataMember" : "eClass_AddDataMember")), args)));
2070 ListAdd(statement->__anon1.compound.statements, stmt);
2071 lastOffset = member->offset + member->dataType->size;
2075 static int memberCount = 0;
2076 struct Context * context;
2077 struct Statement * compound;
2078 char memberName[256];
2080 sprintf(memberName, "dataMember%d", memberCount);
2082 curContext = statement->__anon1.compound.context;
2083 context = PushContext();
2084 args = MkListOne(MkExpIdentifier(MkIdentifier((member->type == 1) ? "unionMember" : "structMember")));
2085 switch(member->memberAccess)
2088 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2091 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2095 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2098 compound = MkCompoundStmt(MkListOne(MkDeclaration(MkListOne(MkSpecifierName("DataMember")), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier(memberName)), MkInitializerAssignment(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_New")), args)))))), MkList());
2099 compound->__anon1.compound.context = context;
2101 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2102 ListAdd(args, MkExpIdentifier(MkIdentifier(memberName)));
2103 RegisterMembersAndProperties((struct __ecereNameSpace__ecere__com__Class *)member, 1, memberName, compound);
2105 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eMember_AddMember")), args)));
2107 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMember")), args)));
2108 ListAdd(compound->__anon1.compound.statements, stmt);
2109 PopContext(context);
2110 ListAdd(statement->__anon1.compound.statements, compound);
2112 lastOffset = member->offset + member->memberOffset;
2120 struct __ecereNameSpace__ecere__com__ClassProperty * classProperty;
2122 for(prop = regClass->membersAndProperties.first; prop; prop = prop->next)
2124 if(prop->isProperty && prop->isWatchable)
2126 struct __ecereNameSpace__ecere__sys__OldList * args;
2127 char name[1024], nameM[1024];
2129 strcpy(name, "__ecereProp_");
2130 FullClassNameCat(name, regClass->fullName, 1);
2132 FullClassNameCat(name, prop->name, 0);
2133 strcpy(nameM, "__ecerePropM_");
2134 FullClassNameCat(nameM, regClass->fullName, 1);
2136 FullClassNameCat(nameM, prop->name, 0);
2137 args = MkListOne(MkExpCondition(MkExpIdentifier(MkIdentifier(nameM)), MkListOne(MkExpIdentifier(MkIdentifier(nameM))), MkExpIdentifier(MkIdentifier(name))));
2138 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_Watchable")), args)));
2139 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2142 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)))
2144 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2146 char * string = QMkString(classProperty->name);
2148 ListAdd(args, MkExpIdentifier(MkIdentifier(className)));
2149 ListAdd(args, MkExpString(string));
2150 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2152 char * string = QMkString(classProperty->dataTypeString);
2154 ListAdd(args, MkExpString(string));
2155 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2157 if(classProperty->Set)
2159 strcpy(name, "__ecereClassProp_");
2160 FullClassNameCat(name, regClass->fullName, 1);
2161 strcat(name, "_Set_");
2162 strcat(name, classProperty->name);
2163 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2166 ListAdd(args, MkExpConstant("0"));
2167 if(classProperty->Get)
2169 strcpy(name, "__ecereClassProp_");
2170 FullClassNameCat(name, regClass->fullName, 1);
2171 strcat(name, "_Get_");
2172 strcat(name, classProperty->name);
2173 ListAdd(args, MkExpIdentifier(MkIdentifier(name)));
2176 ListAdd(args, MkExpConstant("0"));
2177 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddClassProperty")), args)));
2178 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2183 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Context;
2185 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Type;
2187 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_Symbol;
2189 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_;
2191 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__TemplateMemberType;
2193 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__List;
2195 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
2197 struct __ecereNameSpace__ecere__com__Module
2199 struct __ecereNameSpace__ecere__com__Instance * application;
2200 struct __ecereNameSpace__ecere__sys__OldList classes;
2201 struct __ecereNameSpace__ecere__sys__OldList defines;
2202 struct __ecereNameSpace__ecere__sys__OldList functions;
2203 struct __ecereNameSpace__ecere__sys__OldList modules;
2204 struct __ecereNameSpace__ecere__com__Instance * prev;
2205 struct __ecereNameSpace__ecere__com__Instance * next;
2211 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
2212 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
2215 void __ecereDestructor_ClassPropertyValue(struct __ecereNameSpace__ecere__com__Instance * this)
2217 __attribute__((unused)) struct ClassPropertyValue * __ecerePointer_ClassPropertyValue = (struct ClassPropertyValue *)(this ? (((char *)this) + __ecereClass_ClassPropertyValue->offset) : 0);
2220 FreeIdentifier(__ecerePointer_ClassPropertyValue->id);
2224 void CreateRegisterModuleBody()
2226 if(!registerModuleBody && inCompiler)
2228 char registerName[1024], moduleName[274];
2229 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2230 struct Declarator * declarator;
2231 struct TypeName * moduleParam;
2233 registerModuleBody = MkCompoundStmt(MkList(), MkList());
2234 registerModuleBody->__anon1.compound.context = __extension__ ({
2235 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2237 __ecereInstance1->parent = globalContext, __ecereInstance1;
2239 ListAdd(registerModuleBody->__anon1.compound.declarations, MkDeclaration((specifiers = MkListOne(MkSpecifierName("ecere::com::Class"))), MkListOne(MkInitDeclarator(MkDeclaratorIdentifier(MkIdentifier("class")), (((void *)0))))));
2240 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*specifiers), MkSpecifierExtended(MkExtDeclAttrib(MkAttrib(ATTRIB, MkListOne(MkAttribute(__ecereNameSpace__ecere__sys__CopyString("unused"), (((void *)0))))))));
2241 specifiers = MkList();
2242 ListAdd(specifiers, MkSpecifier(VOID));
2243 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2244 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2245 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2246 FixModuleName(moduleName);
2247 sprintf(registerName, "__ecereRegisterModule_%s", moduleName);
2248 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2250 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2252 ProcessFunctionBody(function, registerModuleBody);
2253 function->declMode = 0;
2256 ListAdd(ast, (registerModuleExternal = MkExternalFunction(function)));
2257 DeclareStruct(registerModuleExternal, "ecere::com::Instance", 0, 1);
2258 DeclareStruct(registerModuleExternal, "ecere::com::Module", 0, 1);
2261 if(!unregisterModuleBody && inCompiler)
2263 char registerName[1024], moduleName[274];
2264 struct __ecereNameSpace__ecere__sys__OldList * specifiers;
2265 struct Declarator * declarator;
2266 struct TypeName * moduleParam;
2268 unregisterModuleBody = MkCompoundStmt(MkList(), MkList());
2269 unregisterModuleBody->__anon1.compound.context = __extension__ ({
2270 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
2272 __ecereInstance1->parent = globalContext, __ecereInstance1;
2274 specifiers = MkList();
2275 ListAdd(specifiers, MkSpecifier(VOID));
2276 moduleParam = MkTypeName(MkListOne(MkSpecifierName("Module")), MkDeclaratorIdentifier(MkIdentifier("module")));
2277 __ecereNameSpace__ecere__sys__GetLastDirectory(outputFile, moduleName);
2278 __ecereNameSpace__ecere__sys__StripExtension(moduleName);
2279 FixModuleName(moduleName);
2280 sprintf(registerName, "__ecereUnregisterModule_%s", moduleName);
2281 declarator = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(registerName)), MkListOne(moduleParam));
2283 struct FunctionDefinition * function = _MkFunction(specifiers, declarator, (((void *)0)), 0);
2285 ProcessFunctionBody(function, unregisterModuleBody);
2286 function->declMode = 0;
2289 ListAdd(ast, (unregisterModuleExternal = MkExternalFunction(function)));
2290 DeclareStruct(unregisterModuleExternal, "ecere::com::Instance", 0, 1);
2291 DeclareStruct(unregisterModuleExternal, "ecere::com::Module", 0, 1);
2296 void __ecereCreateModuleInstances_pass1()
2298 classPropValues = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__com__List_TPL_ClassPropertyValue_);
2299 __ecereNameSpace__ecere__com__eInstance_IncRef(classPropValues);
2302 void __ecereUnregisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
2307 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)
2309 struct ClassDef * def;
2310 struct __ecereNameSpace__ecere__com__Class * regClass = symbol->__anon1.registered;
2314 classType = regClass->type;
2315 if(classType == 4 && enumValues && (inCompiler || !buildingECERECOMModule))
2317 struct Enumerator * e;
2319 for(e = enumValues->first; e; e = e->next)
2323 struct Type * destType = (destType = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type), destType->kind = 4, destType->refCount = 1, destType);
2325 e->exp->destType = destType;
2327 ProcessExpressionType(e->exp);
2329 if(!e->exp->expType)
2332 destType->__anon1._class = symbol;
2333 ProcessExpressionType(e->exp);
2335 if(e->exp->type == 0 && e->exp->expType && e->exp->__anon1.__anon1.identifier && e->exp->__anon1.__anon1.identifier->string && e->exp->expType->kind == 15)
2337 struct __ecereNameSpace__ecere__sys__NamedLink64 * l;
2338 char * string = e->exp->__anon1.__anon1.identifier->string;
2340 for(l = e->exp->expType->__anon1.__anon1.members.first; l; l = l->next)
2342 if(!strcmp(l->name, string))
2346 FreeExpContents(e->exp);
2348 e->exp->__anon1.__anon1.constant = PrintInt64(l->data);
2349 FreeType(e->exp->expType);
2350 e->exp->expType = ProcessTypeString("int64", 0);
2357 ComputeExpression(e->exp);
2358 if(e->exp->isConstant && e->exp->type == 2)
2360 struct Operand op = GetOperand(e->exp);
2366 value = op.type->isSigned ? (long long)op.__anon1.c : (long long)op.__anon1.uc;
2369 value = op.type->isSigned ? (long long)op.__anon1.s : (long long)op.__anon1.us;
2372 value = op.type->isSigned ? op.__anon1.i64 : (long long)op.__anon1.ui64;
2376 value = op.type->isSigned ? (long long)op.__anon1.i : (int)op.__anon1.ui;
2378 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(regClass, e->id->string, value);
2381 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2384 __ecereNameSpace__ecere__com__eEnum_AddValue(regClass, e->id->string);
2387 struct __ecereNameSpace__ecere__com__EnumClassData * baseData = regClass->data;
2388 struct __ecereNameSpace__ecere__sys__OldLink * deriv;
2390 for(deriv = regClass->derivatives.first; deriv; deriv = deriv->next)
2392 struct __ecereNameSpace__ecere__com__Class * c = deriv->data;
2394 if(c && c->type == 4)
2396 struct __ecereNameSpace__ecere__com__EnumClassData * data = c->data;
2398 data->largest = baseData->largest;
2403 if(definitions != (((void *)0)))
2407 for(def = definitions->first; def; def = def->next)
2409 if(def->type == 4 && def->__anon1.propertyWatch)
2411 struct PropertyWatch * propWatch = def->__anon1.propertyWatch;
2412 struct ClassFunction * func;
2413 char watcherName[1024];
2414 struct Identifier * propID;
2415 struct Statement * stmt = MkExpressionStmt(MkList());
2416 struct Declarator * decl;
2417 struct __ecereNameSpace__ecere__sys__OldList * specs;
2419 sprintf(watcherName, "__ecerePropertySelfWatcher_%d", propWatcherID++);
2420 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2422 strcat(watcherName, "_");
2423 strcat(watcherName, propID->string);
2425 decl = MkDeclaratorFunction(MkDeclaratorIdentifier(MkIdentifier(watcherName)), MkListOne(MkTypeName(MkListOne(MkSpecifier(VOID)), (((void *)0)))));
2427 ListAdd(specs, MkSpecifier(STATIC));
2428 ListAdd(specs, MkSpecifier(VOID));
2429 func = MkClassFunction(specs, (((void *)0)), decl, (((void *)0)));
2430 ProcessClassFunctionBody(func, propWatch->compound);
2431 decl->symbol = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Symbol);
2432 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*excludedSymbols), decl->symbol);
2433 func->dontMangle = 1;
2434 propWatch->compound = (((void *)0));
2435 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Insert(definitions, (((void *)0)), MkClassDefFunction(func));
2436 for(propID = (*propWatch->properties).first; propID; propID = propID->next)
2438 struct __ecereNameSpace__ecere__com__Property * prop = __ecereNameSpace__ecere__com__eClass_FindProperty(regClass, propID->string, privateModule);
2442 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2444 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2446 char * s = QMkString(propID->string);
2448 ListAdd(args, MkExpString(s));
2449 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2451 ListAdd(args, MkExpIdentifier(MkIdentifier(watcherName)));
2452 ListAdd(stmt->__anon1.expressions, MkExpCall(MkExpIdentifier(MkIdentifier("eProperty_SelfWatch")), args));
2455 Compiler_Error(__ecereNameSpace__ecere__GetTranslatedString("ec", "Property %s not found in class %s\n", (((void *)0))), propID->string, regClass->fullName);
2457 FreePropertyWatch(def->__anon1.propertyWatch);
2458 def->__anon1.propertyWatch = (struct PropertyWatch *)stmt;
2462 for(def = definitions->first; def; def = def->next)
2466 ProcessClassFunction(regClass, def->__anon1.function, defs, external->prev, declMode == 3);
2470 if(inCompiler && symbol->mustRegister && regClass)
2472 struct Statement * stmt;
2473 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2474 struct __ecereNameSpace__ecere__com__Method * method;
2475 struct Expression * exp;
2476 const char * registerFunction = (((void *)0));
2477 int inheritanceAccess = 1;
2479 CreateRegisterModuleBody();
2480 curExternal = registerModuleExternal;
2481 switch(regClass->type)
2484 ListAdd(args, MkExpIdentifier(MkIdentifier("structClass")));
2487 ListAdd(args, MkExpIdentifier(MkIdentifier("bitClass")));
2490 ListAdd(args, MkExpIdentifier(MkIdentifier("enumClass")));
2493 ListAdd(args, MkExpIdentifier(MkIdentifier("noHeadClass")));
2496 ListAdd(args, MkExpIdentifier(MkIdentifier("unitClass")));
2499 ListAdd(args, MkExpIdentifier(MkIdentifier("normalClass")));
2503 char nameSpace[1024] = "";
2504 char className[1024] = "";
2507 GetNameSpaceString(regClass->nameSpace, nameSpace);
2510 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
2511 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
2512 strcat(className, "}");
2514 strcat(className, nameSpace);
2515 strcat(className, regClass->name);
2516 string = QMkString(className);
2517 ListAdd(args, MkExpString(string));
2518 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2520 if(baseSpecs != (((void *)0)))
2522 struct Type * baseType = ProcessType(baseSpecs, (((void *)0)));
2524 if(baseType->kind != 9 && baseType->kind != 10)
2526 char baseName[1024] = "";
2529 if(baseType->kind == 8 && baseType->__anon1._class && baseType->__anon1._class->isStatic)
2531 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, baseName);
2532 __ecereNameSpace__ecere__sys__ChangeCh(baseName, '.', '_');
2533 strcat(baseName, "}");
2534 strcat(baseName, baseType->__anon1._class->string);
2537 PrintType(baseType, baseName, 0, 1);
2538 string = QMkString(baseName);
2539 ListAdd(args, MkExpString(string));
2540 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2543 ListAdd(args, MkExpConstant("0"));
2545 if(((struct Specifier *)baseSpecs->first)->type == 0 && ((struct Specifier *)baseSpecs->first)->__anon1.specifier == PRIVATE)
2546 inheritanceAccess = 2;
2549 ListAdd(args, MkExpConstant("0"));
2550 if(regClass->type == 1 || regClass->type == 0 || regClass->type == 5)
2552 struct __ecereNameSpace__ecere__com__DataMember * member = (((void *)0));
2555 struct __ecereNameSpace__ecere__com__Class * base;
2557 for(base = regClass->base; base && base->type != 1000; base = base->next)
2559 for(member = base->membersAndProperties.first; member; member = member->next)
2560 if(!member->isProperty)
2566 if(regClass->type == 1 && symbol->declaredStruct && member)
2568 char baseStructName[1024];
2570 baseStructName[0] = 0;
2571 strcpy(baseStructName, (regClass->base->templateClass ? regClass->base->templateClass : regClass->base)->fullName);
2572 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))))));
2575 ListAdd(args, symbol->declaredStruct ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(symbol->structName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2579 ListAdd(args, MkExpConstant("0"));
2582 char classDataStructName[1024];
2584 strcpy(classDataStructName, "__ecereClassData_");
2585 FullClassNameCat(classDataStructName, symbol->string, 0);
2586 ListAdd(args, symbol->classData ? MkExpTypeSize(MkTypeName(MkListOne(MkStructOrUnion(3, MkIdentifier(classDataStructName), (((void *)0)))), (((void *)0)))) : MkExpConstant("0"));
2588 if(regClass->type == 0 || regClass->type == 5)
2590 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needConstructor ? MkExpIdentifier(MkIdentifier(symbol->constructorName)) : MkExpConstant("0")));
2591 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), symbol->needDestructor ? MkExpIdentifier(MkIdentifier(symbol->destructorName)) : MkExpConstant("0")));
2595 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2596 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpConstant("0")));
2598 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
2602 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2605 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2609 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
2612 switch(inheritanceAccess)
2615 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2619 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2622 registerFunction = "eSystem_RegisterClass";
2623 stmt = MkExpressionStmt(MkListOne(MkExpOp(MkExpIdentifier(MkIdentifier("class")), '=', MkExpCall((exp = MkExpIdentifier(MkIdentifier(registerFunction))), args))));
2624 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2625 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)));
2626 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2627 if(external && external->type == 2 && external->__anon1._class->deleteWatchable)
2629 args = MkListOne(MkExpIdentifier(MkIdentifier("class")));
2630 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DestructionWatchable")), args)));
2631 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2635 struct __ecereNameSpace__ecere__com__Class * base = regClass->base;
2638 for(c = 0; c < base->vTblSize; c++)
2640 struct Symbol * method = (struct Symbol *)regClass->_vTbl[c];
2642 if((void *)method != DummyMethod && base->_vTbl[c] != (void *)method && method->__anon2.__anon3.methodExternal)
2644 struct External * external = method->__anon2.__anon3.methodExternal;
2645 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2646 struct Identifier * id = external->__anon1.function ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2649 struct External * e = method->__anon2.__anon3.methodExternal ? method->__anon2.__anon3.methodExternal : method->__anon2.__anon3.methodCodeExternal;
2651 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, e, e->type == 0);
2653 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2655 char * string = QMkString(method->__anon1.method->name);
2657 ListAdd(args, MkExpString(string));
2658 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2660 ListAdd(args, MkExpConstant("0"));
2661 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2662 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2663 exp->expType = __extension__ ({
2664 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2666 __ecereInstance1->refCount = 1, __ecereInstance1;
2668 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2669 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2676 for(c = regClass->base ? regClass->base->vTblSize : 0; c < regClass->vTblSize; c++)
2678 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)))
2680 if(method->type == 1 && method->_class == regClass && method->vid == c)
2683 struct Expression * exp;
2684 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2685 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2686 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2688 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2690 char * string = QMkString(method->name);
2692 ListAdd(args, MkExpString(string));
2693 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2696 char * string = QMkString(method->dataTypeString);
2698 ListAdd(args, MkExpString(string));
2699 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2701 if(id && external->__anon1.function->body)
2703 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2704 exp->expType = __extension__ ({
2705 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2707 __ecereInstance1->refCount = 1, __ecereInstance1;
2712 ListAdd(args, (exp = MkExpConstant("0")));
2714 switch(method->memberAccess)
2717 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2720 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2724 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2727 strcpy(name, "__ecereVMethodID_");
2728 FullClassNameCat(name, method->_class->fullName, 0);
2730 strcat(name, method->name);
2731 exp = MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddVirtualMethod")), args);
2732 stmt = MkExpressionStmt(MkListOne(exp));
2734 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2735 DeclareMethod(curExternal, method, name);
2736 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2741 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)))
2743 if(method->type == 1 && method->_class == regClass)
2745 else if(method->memberAccess == 1 || !method->dataTypeString)
2747 struct External * external = method->symbol ? ((struct Symbol *)method->symbol)->__anon2.__anon3.methodCodeExternal : (((void *)0));
2748 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2749 struct Identifier * id = (external && external->__anon1.function) ? GetDeclId(external->__anon1.function->declarator) : (((void *)0));
2751 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2753 char * string = QMkString(method->name);
2755 ListAdd(args, MkExpString(string));
2756 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2759 char * string = QMkString(method->dataTypeString);
2761 ListAdd(args, MkExpString(string));
2762 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2764 if(id && external->__anon1.function->body)
2766 ListAdd(args, (exp = MkExpIdentifier(MkIdentifier(id->string))));
2767 exp->expType = __extension__ ({
2768 struct Type * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Type);
2770 __ecereInstance1->refCount = 1, __ecereInstance1;
2775 ListAdd(args, (exp = MkExpConstant("0")));
2777 switch(method->memberAccess)
2780 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
2783 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
2787 ListAdd(args, MkExpIdentifier(MkIdentifier("publicAccess")));
2790 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddMethod")), args)));
2791 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2793 __ecereMethod_External_CreateUniqueEdge(registerModuleExternal, external, external->type == 0);
2796 RegisterMembersAndProperties(regClass, 0, "class", registerModuleBody);
2799 struct __ecereNameSpace__ecere__sys__NamedLink64 * value;
2800 struct __ecereNameSpace__ecere__com__Class * enumClass = __ecereNameSpace__ecere__com__eSystem_FindClass(privateModule, "enum");
2801 struct __ecereNameSpace__ecere__com__EnumClassData * e = (regClass ? ((void *)(((char *)regClass->data) + enumClass->offsetClass)) : (((void *)0)));
2803 for(value = e->values.first; value; value = value->next)
2805 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2807 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2809 char * string = QMkString(value->name);
2811 ListAdd(args, MkExpString(string));
2812 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2817 if(!strcmp(regClass->dataTypeString, "uint64"))
2818 temp = PrintUInt64(value->data);
2820 temp = PrintInt64(value->data);
2821 ListAdd(args, MkExpConstant(temp));
2822 (__ecereNameSpace__ecere__com__eSystem_Delete(temp), temp = 0);
2824 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eEnum_AddFixedValue")), args)));
2825 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2828 if(symbol->templateParams)
2830 struct TemplateParameter * param;
2832 for(param = (*symbol->templateParams).first; param; param = param->next)
2834 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
2836 ListAdd(args, MkExpIdentifier(MkIdentifier("class")));
2838 char * string = QMkString(param->identifier->string);
2840 ListAdd(args, MkExpString(string));
2841 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2843 ListAdd(args, MkExpIdentifier(MkIdentifier((param->type == 0) ? "type" : ((param->type == 1) ? "identifier" : "expression"))));
2849 char * typeString = param->__anon1.dataType ? StringFromSpecDecl(param->__anon1.dataType->specifiers, param->__anon1.dataType->decl) : (((void *)0));
2850 char * string = QMkString(typeString);
2852 ListAdd(args, MkExpString(string));
2853 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2854 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2859 char memberTypeString[132] = "TemplateMemberType::";
2860 unsigned int needClass = 1;
2862 ((const char * (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char * tempString, void * fieldData, unsigned int * needClass))__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__TemplateMemberType, (void *)¶m->__anon1.memberType, memberTypeString + strlen(memberTypeString), (((void *)0)), &needClass);
2863 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(VOID)), MkDeclaratorPointer(MkPointer((((void *)0)), (((void *)0))), (((void *)0)))), MkExpIdentifier(MkIdentifier(memberTypeString))));
2867 if(param->defaultArgument)
2869 struct __ecereNameSpace__ecere__sys__OldList * members = MkList();
2875 char * typeString = param->defaultArgument->__anon1.templateDatatype ? StringFromSpecDecl(param->defaultArgument->__anon1.templateDatatype->specifiers, param->defaultArgument->__anon1.templateDatatype->decl) : (((void *)0));
2876 char * string = QMkString(typeString);
2878 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2879 (__ecereNameSpace__ecere__com__eSystem_Delete(typeString), typeString = 0);
2880 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2885 char memberString[1024];
2888 memberString[0] = '\0';
2889 if(param->defaultArgument->__anon1.identifier->_class)
2891 if(param->defaultArgument->__anon1.identifier->_class->type == 8)
2892 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.templateParameter->identifier->string);
2893 else if(param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name)
2894 strcpy(memberString, param->defaultArgument->__anon1.identifier->_class->__anon1.__anon1.name);
2897 strcat(memberString, "::");
2898 strcat(memberString, param->defaultArgument->__anon1.identifier->string);
2899 string = QMkString(memberString);
2900 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(MkListOne(MkIdentifier("dataTypeString")), MkInitializerAssignment(MkExpString(string))));
2901 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2913 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
2916 struct __ecereNameSpace__ecere__sys__OldList * ids = MkList();
2918 char * string = (((void *)0));
2920 op = GetOperand(param->defaultArgument->__anon1.expression);
2921 ui64String = PrintUInt64(op.__anon1.ui64);
2922 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("expression"));
2923 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*ids), MkIdentifier("ui64"));
2924 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add((&*members), MkMemberInit(ids, MkInitializerAssignment(MkExpConstant(ui64String))));
2925 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
2926 (__ecereNameSpace__ecere__com__eSystem_Delete(ui64String), ui64String = 0);
2930 ListAdd(args, MkExpInstance(MkInstantiation(MkSpecifierName("ClassTemplateArgument"), (((void *)0)), MkListOne(MkMembersInitList(members)))));
2933 ListAdd(args, MkExpIdentifier(MkIdentifier("null")));
2934 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_AddTemplateParameter")), args)));
2935 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2937 stmt = MkExpressionStmt(MkListOne(MkExpCall(MkExpIdentifier(MkIdentifier("eClass_DoneAddingTemplateParameters")), MkListOne(MkExpIdentifier(MkIdentifier("class"))))));
2938 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2940 if(definitions != (((void *)0)))
2942 for(def = definitions->first; def; def = def->next)
2944 if(def->type == 4 && def->__anon1.propertyWatch)
2946 ListAdd(registerModuleBody->__anon1.compound.statements, (struct Statement *)def->__anon1.propertyWatch);
2947 def->__anon1.propertyWatch = (((void *)0));
2949 else if(def->type == 5)
2952 char * s = QMkString(def->__anon1.designer);
2954 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("designerClass")), '=', MkExpString(s)))), (((void *)0)));
2955 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2957 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2959 else if(def->type == 6)
2961 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("noExpansion")), '=', MkExpConstant("1")))), (((void *)0)));
2962 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2964 else if(def->type == 7)
2966 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("fixed")), '=', MkExpConstant("1")))), (((void *)0)));
2967 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2969 regClass->fixed = 1;
2971 else if(def->type == 8)
2973 char * s = QMkString(def->__anon1.defaultProperty->string);
2975 stmt = MkIfStmt(MkListOne(MkExpIdentifier(MkIdentifier("class"))), MkExpressionStmt(MkListOne(MkExpOp(MkExpMember(MkExpIdentifier(MkIdentifier("class")), MkIdentifier("defaultProperty")), '=', MkExpString(s)))), (((void *)0)));
2976 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
2977 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
2979 else if(def->type == 11)
2981 ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, uint64 value))__extension__ ({
2982 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
2984 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
2985 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Add])(classPropValues, (uint64)(uintptr_t)(__extension__ ({
2986 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_ClassPropertyValue);
2988 ((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;
2990 def->__anon1.__anon1.id = (((void *)0));
2991 def->__anon1.__anon1.initializer->__anon1.exp = (((void *)0));
2999 void ProcessClassDefinitions()
3001 struct External * external, * next;
3003 CreateRegisterModuleBody();
3006 for(external = (*ast).first; external; external = next)
3008 next = external->next;
3009 curExternal = external;
3010 if(external->type == 2)
3012 struct ClassDefinition * _class = external->__anon1._class;
3014 if(_class->definitions)
3016 ProcessClass(0, _class->definitions, _class->symbol, _class->baseSpecs, (((void *)0)), ast, external, _class->declMode);
3020 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3021 FreeExternal(external);
3024 else if(external->type == 0)
3026 unsigned int setStaticMethod = 0;
3028 if(external->symbol && !external->symbol->type->__anon1.__anon2.thisClass && !external->symbol->type->__anon1.__anon2.staticMethod)
3030 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3031 setStaticMethod = 1;
3035 struct FunctionDefinition * function = external->__anon1.function;
3036 struct Statement * stmt;
3037 struct __ecereNameSpace__ecere__sys__OldList * args;
3039 if(!strcmp(function->declarator->symbol->string, "__on_register_module"))
3041 ListAdd(registerModuleBody->__anon1.compound.statements, function->body);
3042 function->body->__anon1.compound.context->parent = registerModuleBody->__anon1.compound.context;
3043 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3044 function->body = (((void *)0));
3045 FreeExternal(external);
3048 if(function->declMode != 2 && function->declMode != 1)
3051 CreateRegisterModuleBody();
3053 char * string = QMkString(function->declarator->symbol->string);
3055 ListAdd(args, MkExpString(string));
3056 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3060 char type[1024] = "";
3063 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 0;
3064 PrintType(function->declarator->symbol->type, type, 1, 1);
3066 function->declarator->symbol->type->__anon1.__anon2.staticMethod = 1;
3067 string = QMkString(type);
3068 ListAdd(args, MkExpString(string));
3069 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3072 ListAdd(args, MkExpIdentifier(MkIdentifier(function->declarator->symbol->string)));
3074 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3075 switch(function->declMode)
3078 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3081 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3085 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3088 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterFunction"))), args)));
3089 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3092 else if(external->type == 1)
3094 struct Declaration * declaration = external->__anon1.declaration;
3096 if(external->symbol)
3098 if(external->symbol->type && external->symbol->type->kind == 11 && !external->symbol->type->__anon1.__anon2.thisClass)
3099 external->symbol->type->__anon1.__anon2.staticMethod = 1;
3101 if(external->symbol && declaration && declaration->type == 1)
3103 if(declaration->__anon1.__anon1.specifiers)
3105 struct Specifier * specifier;
3106 unsigned int removeExternal = 0;
3108 for(specifier = (*declaration->__anon1.__anon1.specifiers).first; specifier; specifier = specifier->next)
3110 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)))
3112 struct Symbol * symbol = FindClass(specifier->__anon1.__anon2.id->string);
3118 if(specifier->type == 2)
3123 symbol->ctx = specifier->__anon1.__anon2.ctx;
3124 specifier->__anon1.__anon2.ctx = (((void *)0));
3125 ProcessClass(classType, specifier->__anon1.__anon2.definitions, symbol, specifier->__anon1.__anon2.baseSpecs, specifier->__anon1.__anon2.list, ast, external, declaration->declMode);
3129 if(inCompiler && removeExternal)
3131 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Remove((&*ast), external);
3132 FreeExternal(external);
3136 else if(declaration && declaration->type == 3)
3138 if(inCompiler && declaration->declMode != 3)
3140 struct Statement * stmt;
3141 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3143 CreateRegisterModuleBody();
3145 char * string = QMkString(declaration->__anon1.__anon2.id->string);
3147 ListAdd(args, MkExpString(string));
3148 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3152 char type[1024] = "";
3154 PrintExpression(declaration->__anon1.__anon2.exp, type);
3155 string = QMkString(type);
3156 ListAdd(args, MkExpString(string));
3157 (__ecereNameSpace__ecere__com__eSystem_Delete(string), string = 0);
3159 ListAdd(args, MkExpIdentifier(MkIdentifier("module")));
3160 switch(declaration->declMode)
3163 ListAdd(args, MkExpIdentifier(MkIdentifier("staticAccess")));
3166 ListAdd(args, MkExpIdentifier(MkIdentifier("privateAccess")));
3170 ListAdd(args, MkExpIdentifier(MkIdentifier(buildingECERECOMModule ? "baseSystemAccess" : "publicAccess")));
3173 stmt = MkExpressionStmt(MkListOne(MkExpCall((MkExpIdentifier(MkIdentifier("eSystem_RegisterDefine"))), args)));
3174 ListAdd(registerModuleBody->__anon1.compound.statements, stmt);
3180 struct __ecereNameSpace__ecere__com__Iterator v =
3182 (classPropValues), 0
3185 while(__ecereMethod___ecereNameSpace__ecere__com__Iterator_Next(&v))
3187 struct __ecereNameSpace__ecere__sys__OldList * findClassArgs = MkList();
3188 struct __ecereNameSpace__ecere__sys__OldList * args = MkList();
3189 struct Statement * compoundStmt;
3191 struct Expression * e;
3194 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3196 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3198 yylloc = __extension__ ({
3199 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3201 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3203 ListAdd(findClassArgs, MkExpIdentifier(MkIdentifier("module")));
3205 char nameSpace[1024] = "";
3206 char className[1024] = "";
3207 struct __ecereNameSpace__ecere__com__Class * regClass = __extension__ ({
3208 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3210 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3213 GetNameSpaceString(regClass->nameSpace, nameSpace);
3215 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3217 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3220 __ecereNameSpace__ecere__sys__GetLastDirectory(sourceFile, className);
3221 __ecereNameSpace__ecere__sys__ChangeCh(className, '.', '_');
3222 strcat(className, "}");
3224 strcat(className, nameSpace);
3225 strcat(className, regClass->name);
3226 s = QMkString(className);
3228 ListAdd(findClassArgs, MkExpString(s));
3229 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3230 ListAdd(args, MkExpIdentifier(MkIdentifier("_class")));
3231 s = QMkString(__extension__ ({
3232 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3234 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3236 ListAdd(args, MkExpString(s));
3237 (__ecereNameSpace__ecere__com__eSystem_Delete(s), s = 0);
3238 e = __extension__ ({
3239 char * __ecTemp1 = (char *)(((struct __ecereNameSpace__ecere__com__Instance *)(uintptr_t)__ecereProp___ecereNameSpace__ecere__com__Iterator_Get_data(&v)));
3241 ((struct ClassPropertyValue *)(__ecTemp1 + __ecereClass_ClassPropertyValue->offset));
3243 ProcessExpressionType(e);
3244 if(__ecereProp_Type_Get_isPointerType(e->expType))
3245 e = MkExpCast(MkTypeName(MkListOne(MkSpecifierName("intptr")), (((void *)0))), e);
3246 ListAdd(args, MkExpCast(MkTypeName(MkListOne(MkSpecifier(INT64)), (((void *)0))), e));
3247 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)))));
3248 compoundStmt->__anon1.compound.context = __extension__ ({
3249 struct Context * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass_Context);
3251 __ecereInstance1->parent = registerModuleBody->__anon1.compound.context, __ecereInstance1;
3253 ListAdd(registerModuleBody->__anon1.compound.statements, compoundStmt);
3256 ((void (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({
3257 struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = classPropValues;
3259 __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__List->_vTbl;
3260 })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Free])(classPropValues);
3264 void __ecereRegisterModule_pass1(struct __ecereNameSpace__ecere__com__Instance * module)
3266 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
3268 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereCom", "void SetBuildingEcereCom(bool b)", SetBuildingEcereCom, module, 1);
3269 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereCom", "bool GetBuildingEcereCom(void)", GetBuildingEcereCom, module, 1);
3270 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetBuildingEcereComModule", "void SetBuildingEcereComModule(bool b)", SetBuildingEcereComModule, module, 1);
3271 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetBuildingEcereComModule", "bool GetBuildingEcereComModule(void)", GetBuildingEcereComModule, module, 1);
3272 __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);
3273 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("CreateRegisterModuleBody", "void CreateRegisterModuleBody(void)", CreateRegisterModuleBody, module, 2);
3274 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("RegisterMembersAndProperties", "void RegisterMembersAndProperties(ecere::com::Class regClass, bool isMember, const char * className, Statement statement)", RegisterMembersAndProperties, module, 2);
3275 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetNameSpaceString", "void GetNameSpaceString(ecere::com::NameSpace ns, char * string)", GetNameSpaceString, module, 2);
3276 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ClassPropertyValue", 0, sizeof(struct ClassPropertyValue), 0, (void *)0, (void *)__ecereDestructor_ClassPropertyValue, module, 2, 1);
3277 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)
3278 __ecereClass_ClassPropertyValue = class;
3279 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ProcessClassDefinitions", "void ProcessClassDefinitions(void)", ProcessClassDefinitions, module, 1);