compiler/libec; ecere; ide: (Emscripten WIP) Address virtual method issues
[sdk] / compiler / bootstrap / ecere / bootstrap / instance.c
index fbf6307..da09af0 100644 (file)
@@ -9,10 +9,7 @@
 #if defined(__GNUC__)
 typedef long long int64;
 typedef unsigned long long uint64;
-#ifdef _WIN32
-#define stdcall __attribute__((__stdcall__))
-#else
-#define stdcall
+#ifndef _WIN32
 #define __declspec(x)
 #endif
 #elif defined(__TINYC__)
@@ -24,10 +21,8 @@ typedef unsigned long long uint64;
 #define strcasecmp stricmp
 #define strncasecmp strnicmp
 #define __declspec(x) __attribute__((x))
-#define stdcall __attribute__((__stdcall__))
 #else
 #define __declspec(x)
-#define stdcall
 #endif
 typedef long long int64;
 typedef unsigned long long uint64;
@@ -40,37 +35,20 @@ typedef unsigned __int64 uint64;
 #else
 #define __ENDIAN_PAD(x) 0
 #endif
-#include <stdint.h>
-#include <sys/types.h>
-
-#if /*defined(_W64) || */(defined(__WORDSIZE) && __WORDSIZE == 8) || defined(__x86_64__)
-#define _64BIT 1
+#if defined(_WIN32)
+#   if defined(__GNUC__) || defined(__TINYC__)
+#      define ecere_stdcall __attribute__((__stdcall__))
+#      define ecere_gcc_struct __attribute__((gcc_struct))
+#   else
+#      define ecere_stdcall __stdcall
+#      define ecere_gcc_struct
+#   endif
 #else
-#define _64BIT 0
+#   define ecere_stdcall
+#   define ecere_gcc_struct
 #endif
-
-#define arch_PointerSize                  sizeof(void *)
-#define structSize_Instance               (_64BIT ? 24 : 12)
-#define structSize_Module                 (_64BIT ? 560 : 300)
-#define structSize_BinaryTree             (_64BIT ? 32 : 16)
-#define structSize_OldList                (_64BIT ? 32 : 20)
-#define structSize_NamedLink64            (_64BIT ? 32 : 24)
-#define structSize_ClassTemplateArgument  (_64BIT ? 16 : 8)
-#define structSize_ClassTemplateParameter (_64BIT ? 64 : 40)
-#define structSize_OldLink                (_64BIT ? 24 : 12)
-#define structSize_BTNamedLink            (_64BIT ? 48 : 24)
-#define structSize_Application            (_64BIT ? 800 : 428)
-#define structSize_Watcher                (_64BIT ? 32 : 16)
-#define structSize_SelfWatcher            (_64BIT ? 32 : 16)
-#define structSize_GlobalFunction         (_64BIT ? 72 : 36)
-#define structSize_DefinedExpression      (_64BIT ? 40 : 20)
-#define structSize_BitMember              (_64BIT ? 96 : 64)
-#define structSize_DataMember             (_64BIT ? 160 : 96)
-#define structSize_ClassProperty          (_64BIT ? 80 : 40)
-#define structSize_Method                 (_64BIT ? 96 : 52)
-#define structSize_Property               (_64BIT ? 152 : 88)
-#define structSize_Class                  (_64BIT ? 624 : 376)
-
+#include <stdint.h>
+#include <sys/types.h>
 void exit(int status);
 
 void * calloc(size_t nmemb, size_t size);
@@ -173,8 +151,8 @@ float f;
 double d;
 long long i64;
 uint64 ui64;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
 static unsigned int __ecereNameSpace__ecere__com__TOTAL_MEM = 0;
 
@@ -238,6 +216,10 @@ return power;
 
 static unsigned int __ecereNameSpace__ecere__com__memoryInitialized = 0;
 
+void __ecereNameSpace__ecere__com__CheckConsistency()
+{
+}
+
 void __ecereNameSpace__ecere__com__CheckMemory()
 {
 }
@@ -298,21 +280,21 @@ unsigned char ch = source[c];
 unsigned int codePoint = 0;
 int numBytes = 1;
 int i;
-unsigned char mask = (unsigned char)0x7F;
+unsigned char mask = 0x7F;
 
-if(ch & (unsigned char)0x80)
+if(ch & 0x80)
 {
-if(ch & (unsigned char)0x40)
+if(ch & 0x40)
 {
 mask >>= 2;
 numBytes++;
-if(ch & (unsigned char)0x20)
+if(ch & 0x20)
 {
 numBytes++;
 mask >>= 1;
-if(ch & (unsigned char)0x10)
+if(ch & 0x10)
 {
-if(ch & (unsigned char)0x08)
+if(ch & 0x08)
 return 0;
 numBytes++;
 mask >>= 1;
@@ -326,10 +308,10 @@ for(i = 0; i < numBytes && (ch = source[c]); i++, c++)
 {
 codePoint <<= 6;
 codePoint |= ch & mask;
-mask = (unsigned char)0x3F;
+mask = 0x3F;
 if(i > 1)
 {
-if(!(ch & (unsigned char)0x80) || (ch & (unsigned char)0x40))
+if(!(ch & 0x80) || (ch & 0x40))
 return 0;
 }
 }
@@ -346,6 +328,7 @@ int __ecereNameSpace__ecere__sys__ISO8859_1toUTF8(const char * source, char * de
 {
 int c;
 int d = 0;
+unsigned char * byteDest = (unsigned char *)dest;
 
 for(c = 0; source[c]; c++)
 {
@@ -361,34 +344,34 @@ if(ch < 0x80)
 {
 if(d + 1 >= max)
 break;
-dest[d++] = (char)ch;
+byteDest[d++] = (char)ch;
 }
 else if(ch < 0x800)
 {
 if(d + 2 >= max)
 break;
-dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else if(ch < 0x10000)
 {
 if(d + 3 >= max)
 break;
-dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else
 {
 if(d + 4 >= max)
 break;
-dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 }
-dest[d] = (char)0;
+dest[d] = 0;
 return d;
 }
 
@@ -397,12 +380,13 @@ int __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(const unsigned short * sourc
 int c;
 int d = 0;
 unsigned short u16;
+unsigned char * byteDest = (unsigned char *)dest;
 
 for(c = 0; (u16 = source[c]); c++)
 {
 unsigned int ch;
 
-if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
+if(u16 < 0xD800 || u16 > 0xDBFF)
 ch = u16;
 else
 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
@@ -410,34 +394,34 @@ if(ch < 0x80)
 {
 if(d + 1 >= max)
 break;
-dest[d++] = (char)ch;
+byteDest[d++] = (char)ch;
 }
 else if(ch < 0x800)
 {
 if(d + 2 >= max)
 break;
-dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else if(ch < 0x10000)
 {
 if(d + 3 >= max)
 break;
-dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else
 {
 if(d + 4 >= max)
 break;
-dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 }
-dest[d] = (char)0;
+byteDest[d] = 0;
 return d;
 }
 
@@ -446,23 +430,23 @@ unsigned int __ecereNameSpace__ecere__sys__UTF8GetChar(const char * string, int
 unsigned int ch;
 unsigned char b = ((unsigned char *)string)[0];
 int i;
-unsigned char mask = (unsigned char)0x7F;
+unsigned char mask = 0x7F;
 int nb = b ? 1 : 0;
 
 ch = 0;
-if(b & (unsigned char)0x80)
+if(b & 0x80)
 {
-if(b & (unsigned char)0x40)
+if(b & 0x40)
 {
 mask >>= 2;
 nb++;
-if(b & (unsigned char)0x20)
+if(b & 0x20)
 {
 nb++;
 mask >>= 1;
-if(b & (unsigned char)0x10)
+if(b & 0x10)
 {
-if(b & (unsigned char)0x08)
+if(b & 0x08)
 {
 nb = 0;
 }
@@ -478,8 +462,8 @@ for(i = 0; i < nb; i++)
 {
 ch <<= 6;
 ch |= (b = ((unsigned char *)string)[i]) & mask;
-mask = (unsigned char)0x3F;
-if(i > 1 && (!(b & (unsigned char)0x80) || (b & (unsigned char)0x40)))
+mask = 0x3F;
+if(i > 1 && (!(b & 0x80) || (b & 0x40)))
 {
 nb = 0;
 ch = 0;
@@ -508,17 +492,17 @@ unsigned char ch = source[c];
 unsigned int codePoint = 0;
 int numBytes = 1;
 int i;
-unsigned char mask = (unsigned char)0x7F;
+unsigned char mask = 0x7F;
 
-if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
+if(ch & 0x80 && ch & 0x40)
 {
 mask >>= 2;
 numBytes++;
-if(ch & (unsigned char)0x20)
+if(ch & 0x20)
 {
 numBytes++;
 mask >>= 1;
-if(ch & (unsigned char)0x10)
+if(ch & 0x10)
 {
 numBytes++;
 mask >>= 1;
@@ -529,12 +513,12 @@ for(i = 0; i < numBytes; i++)
 {
 codePoint <<= 6;
 codePoint |= source[c++] & mask;
-mask = (unsigned char)0x3F;
+mask = 0x3F;
 }
 if(codePoint > 0xFFFF)
 {
 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
-unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
+unsigned short trail = (unsigned short)(0xDC00 | (codePoint & 0x3FF));
 
 if(d >= max - 1)
 break;
@@ -548,7 +532,7 @@ break;
 dest[d++] = (unsigned short)codePoint;
 }
 }
-dest[d] = (unsigned short)0;
+dest[d] = 0;
 return d;
 }
 return 0;
@@ -559,6 +543,7 @@ int __ecereNameSpace__ecere__sys__UTF32toUTF8Len(const unsigned int * source, in
 int c;
 int d = 0;
 unsigned int ch;
+unsigned char * byteDest = (unsigned char *)dest;
 
 for(c = 0; c < count && (ch = source[c]); c++)
 {
@@ -566,34 +551,34 @@ if(ch < 0x80)
 {
 if(d + 1 >= max)
 break;
-dest[d++] = (char)ch;
+byteDest[d++] = (char)ch;
 }
 else if(ch < 0x800)
 {
 if(d + 2 >= max)
 break;
-dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else if(ch < 0x10000)
 {
 if(d + 3 >= max)
 break;
-dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else
 {
 if(d + 4 >= max)
 break;
-dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+byteDest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
+byteDest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+byteDest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 }
-dest[d] = (char)0;
+byteDest[d] = 0;
 return d;
 }
 
@@ -604,7 +589,7 @@ void *  last;
 int count;
 unsigned int offset;
 unsigned int circ;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__SerialBuffer
 {
@@ -612,7 +597,7 @@ unsigned char *  _buffer;
 unsigned int count;
 unsigned int _size;
 unsigned int pos;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 extern void *  memset(void *  area, int value, size_t count);
 
@@ -712,12 +697,6 @@ extern int atoi(const char * );
 
 extern double atof(const char * );
 
-extern int tolower(int);
-
-extern int toupper(int);
-
-extern unsigned int isdigit(int);
-
 extern char *  getenv(const char *  name);
 
 extern int rename(const char *  oldpath, const char *  newpath);
@@ -740,6 +719,14 @@ extern int puts(const char * );
 
 extern int fputs(const char * , void *  stream);
 
+extern int tolower(int);
+
+extern int toupper(int);
+
+extern unsigned int isdigit(int);
+
+extern unsigned int isxdigit(int);
+
 extern int isalnum(int c);
 
 extern int isalpha(int c);
@@ -750,6 +737,8 @@ extern int isupper(int c);
 
 extern int isprint(int c);
 
+extern int isblank(int c);
+
 int __ecereVMethodID_class_OnGetString;
 
 const char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this);
@@ -761,28 +750,28 @@ char * __ecereNameSpace__ecere__sys__UTF16toUTF8(const unsigned short * source)
 int c;
 int d = 0;
 int len;
-char * dest;
+unsigned char * dest;
 unsigned short u16;
 unsigned int invert = 0;
 
 for(len = 0; source[len]; len++)
 ;
-dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len * 3 + 1));
+dest = __ecereNameSpace__ecere__com__eSystem_New(sizeof(unsigned char) * (len * 3 + 1));
 for(c = 0; (u16 = source[c]); c++)
 {
 unsigned int ch;
 
-if(!c && (u16 == (unsigned short)0xFFFE || u16 == (unsigned short)0xFEFF))
+if(!c && (u16 == 0xFFFE || u16 == 0xFEFF))
 {
-if(u16 == (unsigned short)0xFFFE)
+if(u16 == 0xFFFE)
 invert = 1;
 continue;
 }
 if(invert)
 {
-u16 = ((u16 & (unsigned short)0xFF00) >> (unsigned short)8) | ((u16 & (unsigned short)0x00FF) << (unsigned short)8);
+u16 = ((u16 & 0xFF00) >> 8) | ((u16 & 0x00FF) << 8);
 }
-if(u16 < (unsigned short)0xD800 || u16 > (unsigned short)0xDBFF)
+if(u16 < 0xD800 || u16 > 0xDBFF)
 ch = u16;
 else
 ch = (u16 << 10) + source[c++] + (0x10000 - (0xD800 << 10) - 0xDC00);
@@ -792,26 +781,26 @@ dest[d++] = (char)ch;
 }
 else if(ch < 0x800)
 {
-dest[d++] = (unsigned char)0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+dest[d++] = 0xC0 | (unsigned char)((ch & 0x7C0) >> 6);
+dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else if(ch < 0x10000)
 {
-dest[d++] = (unsigned char)0xE0 | (unsigned char)((ch & 0xF000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+dest[d++] = 0xE0 | (unsigned char)((ch & 0xF000) >> 12);
+dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 else
 {
-dest[d++] = (unsigned char)0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0x3F000) >> 12);
-dest[d++] = (unsigned char)0x80 | (unsigned char)((ch & 0xFC0) >> 6);
-dest[d++] = (unsigned char)0x80 | (unsigned char)(ch & 0x03F);
+dest[d++] = 0xF0 | (unsigned char)((ch & 0x1C0000) >> 18);
+dest[d++] = 0x80 | (unsigned char)((ch & 0x3F000) >> 12);
+dest[d++] = 0x80 | (unsigned char)((ch & 0xFC0) >> 6);
+dest[d++] = 0x80 | (unsigned char)(ch & 0x03F);
 }
 }
-dest[d] = (char)0;
-dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(char) * (d + 1));
-return dest;
+dest[d] = 0;
+dest = __ecereNameSpace__ecere__com__eSystem_Renew(dest, sizeof(unsigned char) * (d + 1));
+return (char *)dest;
 }
 
 unsigned int __ecereNameSpace__ecere__com__LocateModule(const char * name, const char * fileName)
@@ -838,7 +827,7 @@ struct __ecereNameSpace__ecere__com__EnumClassData
 {
 struct __ecereNameSpace__ecere__sys__OldList values;
 long long largest;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 void __ecereMethod___ecereNameSpace__ecere__sys__OldList_Delete(struct __ecereNameSpace__ecere__sys__OldList * this, void *  item);
 
@@ -883,17 +872,17 @@ unsigned char ch = source[c];
 unsigned int codePoint = 0;
 int numBytes = 1;
 int i;
-unsigned char mask = (unsigned char)0x7F;
+unsigned char mask = 0x7F;
 
-if(ch & (unsigned char)0x80 && ch & (unsigned char)0x40)
+if(ch & 0x80 && ch & 0x40)
 {
 mask >>= 2;
 numBytes++;
-if(ch & (unsigned char)0x20)
+if(ch & 0x20)
 {
 numBytes++;
 mask >>= 1;
-if(ch & (unsigned char)0x10)
+if(ch & 0x10)
 {
 numBytes++;
 mask >>= 1;
@@ -904,12 +893,12 @@ for(i = 0; i < numBytes; i++)
 {
 codePoint <<= 6;
 codePoint |= source[c++] & mask;
-mask = (unsigned char)0x3F;
+mask = 0x3F;
 }
 if(codePoint > 0xFFFF)
 {
 unsigned short lead = (unsigned short)((0xD800 - (0x10000 >> 10)) + (codePoint >> 10));
-unsigned short trail = (unsigned short)0xDC00 + (unsigned short)(codePoint & 0x3FF);
+unsigned short trail = (unsigned short)(0xDC00 | (codePoint & 0x3FF));
 
 dest[d++] = lead;
 dest[d++] = trail;
@@ -919,7 +908,7 @@ else
 dest[d++] = (unsigned short)codePoint;
 }
 }
-dest[d] = (unsigned short)0;
+dest[d] = 0;
 if(wordCount)
 *wordCount = d;
 return dest;
@@ -1049,6 +1038,19 @@ break;
 return sign * value;
 }
 
+int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(const char *  value)
+{
+if(value)
+{
+int c;
+
+for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
+if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
+return c;
+}
+return 0;
+}
+
 struct __ecereNameSpace__ecere__com__Class;
 
 struct __ecereNameSpace__ecere__com__Instance
@@ -1056,7 +1058,7 @@ struct __ecereNameSpace__ecere__com__Instance
 void * *  _vTbl;
 struct __ecereNameSpace__ecere__com__Class * _class;
 int _refCount;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
 
@@ -1065,7 +1067,7 @@ struct __ecereNameSpace__ecere__com__DesignerBase
 struct __ecereNameSpace__ecere__com__Instance * classDesigner;
 const char * objectClass;
 unsigned int isDragging;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_Reset;
 
@@ -1125,7 +1127,7 @@ const char * name;
 struct __ecereNameSpace__ecere__com__BTNamedLink * parent, * left, * right;
 int depth;
 void * data;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__SelfWatcher;
 
@@ -1153,7 +1155,7 @@ unsigned int watcherOffset;
 const char * category;
 unsigned int compiled;
 unsigned int selfWatchable, isWatchable;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 int __ecereVMethodID___ecereNameSpace__ecere__com__ClassDesignerBase_FixProperty;
 
@@ -1164,7 +1166,7 @@ struct __ecereNameSpace__ecere__com__SelfWatcher
 struct __ecereNameSpace__ecere__com__SelfWatcher * prev, * next;
 void (* callback)(void *);
 struct __ecereNameSpace__ecere__com__Property * _property;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__com__Class_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__com__Class_char__PTR_;
 
@@ -1190,7 +1192,7 @@ int numParts;
 int numBlocks;
 unsigned int totalSize;
 unsigned int usedSpace;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__MemPart
 {
@@ -1198,7 +1200,7 @@ void * memory;
 int blocksUsed;
 int size;
 struct __ecereNameSpace__ecere__com__BlockPool * pool;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static struct __ecereNameSpace__ecere__com__BlockPool * __ecereNameSpace__ecere__com__pools;
 
@@ -1207,69 +1209,201 @@ struct __ecereNameSpace__ecere__com__MemBlock
 struct __ecereNameSpace__ecere__com__MemBlock * prev, * next;
 struct __ecereNameSpace__ecere__com__MemPart * part;
 unsigned int size;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
-static void *  __ecereNameSpace__ecere__com___mymalloc(unsigned int size);
+unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
+{
+unsigned char * memory = malloc(numBlocks * this->blockSpace);
 
-static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
+__ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
+if(memory)
 {
-void * pointer = __ecereNameSpace__ecere__com___mymalloc(n * size);
+int c;
+struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
+struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
 
-if(pointer)
-memset(pointer, 0, n * size);
-return pointer;
+__ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
+this->free = block;
+for(c = 0; c < numBlocks - 1; c++)
+{
+block->part = part;
+block->prev = (((void *)0));
+block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
+block = block->next;
+}
+part->blocksUsed = 0;
+part->pool = this;
+part->memory = memory;
+part->size = numBlocks;
+block->part = part;
+block->prev = (((void *)0));
+block->next = (((void *)0));
+this->totalSize += numBlocks;
+this->numParts++;
+return 1;
+}
+return 0;
 }
 
-static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
+void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
 {
-void * pointer;
+if(block->prev)
+block->prev->next = block->next;
+if(block->next)
+block->next->prev = block->prev;
+if(this->first == block)
+this->first = block->next;
+if(this->last == block)
+this->last = block->prev;
+block->next = this->free;
+this->free = block;
+block->part->blocksUsed--;
+this->numBlocks--;
+(*block->part->pool).usedSpace -= block->size;
+if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
+{
+struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
+struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
 
-pointer = size ? __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0) : (((void *)0));
-return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
+this->free = (((void *)0));
+this->totalSize -= part->size;
+while(next)
+{
+if(next->part != part)
+{
+if(prev)
+prev->next = next;
+else
+this->free = next;
+prev = next;
+}
+next = next->next;
+}
+;
+if(prev)
+prev->next = (((void *)0));
+__ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
+__ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
+this->numParts--;
+free(part->memory);
+free(part);
+}
 }
 
-static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
+struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
 {
-void * pointer;
+int __simpleStruct0;
+struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
 
-pointer = (n * size) ? __ecereNameSpace__ecere__com___mycalloc(1, n * size + 2 * 0) : (((void *)0));
-return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
+if(!this->free)
+__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
+if(this->free)
+{
+block = this->free;
+block->prev = this->last;
+if(block->prev)
+block->prev->next = block;
+if(!this->first)
+this->first = block;
+this->last = block;
+this->free = block->next;
+block->next = (((void *)0));
+block->part->blocksUsed++;
+this->numBlocks++;
+}
+return block;
 }
 
-void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
+static void __ecereNameSpace__ecere__com__InitMemory()
 {
-return __ecereNameSpace__ecere__com___malloc(size);
-}
+int c;
 
-void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
+__ecereNameSpace__ecere__com__memoryInitialized = 1;
+__ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
+for(c = 0; c < 31; c++)
 {
-return __ecereNameSpace__ecere__com___calloc(1, size);
+int expansion;
+
+__ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
+if(__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *))
+__ecereNameSpace__ecere__com__pools[c].blockSize += sizeof(void *) - (__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *));
+__ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
+__ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
+expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
+if(c < 12)
+__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
+}
 }
 
-static void __ecereNameSpace__ecere__com___free(void *  pointer);
+static void __ecereNameSpace__ecere__com___myfree(void * pointer)
+{
+if(pointer)
+{
+struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
+struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
+struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
 
-void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
+if(pool)
+__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
+else
 {
-if(memory)
-__ecereNameSpace__ecere__com___free(memory);
+__ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
+__ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
+free(block);
+}
+}
 }
 
-static void *  __ecereNameSpace__ecere__com___mycrealloc(void *  pointer, unsigned int size);
+static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
+{
+struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
 
-static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
+if(size)
 {
-if(!size)
-return (((void *)0));
-pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
-return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
+unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
+
+if(!__ecereNameSpace__ecere__com__memoryInitialized)
+__ecereNameSpace__ecere__com__InitMemory();
+if(!__ecereNameSpace__ecere__com__poolingDisabled && p < 31)
+{
+block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
+if(block)
+{
+block->size = size;
+__ecereNameSpace__ecere__com__pools[p].usedSpace += size;
+}
+}
+else
+{
+block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
+if(block)
+{
+__ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
+__ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
+block->part = (((void *)0));
+block->size = size;
+}
+}
+}
+return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
 }
 
-void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
+static void __ecereNameSpace__ecere__com___free(void * pointer)
 {
-return __ecereNameSpace__ecere__com___crealloc(memory, size);
+if(pointer)
+{
+__ecereNameSpace__ecere__com___myfree(pointer);
+}
 }
 
-static void __ecereNameSpace__ecere__com___myfree(void *  pointer);
+static void * __ecereNameSpace__ecere__com___mycalloc(int n, unsigned int size)
+{
+void * pointer = __ecereNameSpace__ecere__com___mymalloc(n * size);
+
+if(pointer)
+memset(pointer, 0, n * size);
+return pointer;
+}
 
 static void * __ecereNameSpace__ecere__com___myrealloc(void * pointer, unsigned int size)
 {
@@ -1303,6 +1437,7 @@ if(newBlock)
 __ecereNameSpace__ecere__com__TOTAL_MEM += size - newBlock->size;
 __ecereNameSpace__ecere__com__OUTSIDE_MEM += size - newBlock->size;
 newPointer = ((struct __ecereNameSpace__ecere__com__MemBlock *)newBlock + 1);
+newBlock->size = size;
 }
 }
 }
@@ -1385,12 +1520,26 @@ memset((unsigned char *)newPointer, 0, size);
 return newPointer;
 }
 
-static void __ecereNameSpace__ecere__com___free(void * pointer)
+static void * __ecereNameSpace__ecere__com___malloc(unsigned int size)
 {
-if(pointer)
+void * pointer;
+
+pointer = size ? __ecereNameSpace__ecere__com___mymalloc(size + 2 * 0) : (((void *)0));
+return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
+}
+
+void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory)
 {
-__ecereNameSpace__ecere__com___myfree(pointer);
+if(memory)
+__ecereNameSpace__ecere__com___free(memory);
 }
+
+static void * __ecereNameSpace__ecere__com___calloc(int n, unsigned int size)
+{
+void * pointer;
+
+pointer = (n * size) ? __ecereNameSpace__ecere__com___mycalloc(1, n * size + 2 * 0) : (((void *)0));
+return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
 }
 
 static void * __ecereNameSpace__ecere__com___realloc(void * pointer, unsigned int size)
@@ -1404,11 +1553,37 @@ pointer = __ecereNameSpace__ecere__com___myrealloc(pointer, size);
 return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
 }
 
+static void * __ecereNameSpace__ecere__com___crealloc(void * pointer, unsigned int size)
+{
+if(!size)
+{
+__ecereNameSpace__ecere__com___free(pointer);
+return (((void *)0));
+}
+pointer = __ecereNameSpace__ecere__com___mycrealloc(pointer, size);
+return pointer ? ((unsigned char *)pointer + 0) : (((void *)0));
+}
+
+void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size)
+{
+return __ecereNameSpace__ecere__com___malloc(size);
+}
+
+void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size)
+{
+return __ecereNameSpace__ecere__com___calloc(1, size);
+}
+
 void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size)
 {
 return __ecereNameSpace__ecere__com___realloc(memory, size);
 }
 
+void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size)
+{
+return __ecereNameSpace__ecere__com___crealloc(memory, size);
+}
+
 struct __ecereNameSpace__ecere__sys__BTNode;
 
 struct __ecereNameSpace__ecere__sys__BTNode
@@ -1418,7 +1593,7 @@ struct __ecereNameSpace__ecere__sys__BTNode * parent;
 struct __ecereNameSpace__ecere__sys__BTNode * left;
 struct __ecereNameSpace__ecere__sys__BTNode * right;
 int depth;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BTNode_Get_next(struct __ecereNameSpace__ecere__sys__BTNode * this);
 
@@ -1429,7 +1604,7 @@ struct __ecereNameSpace__ecere__sys__OldLink
 struct __ecereNameSpace__ecere__sys__OldLink * prev;
 struct __ecereNameSpace__ecere__sys__OldLink * next;
 void *  data;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__sys__OldLink * __ecereMethod___ecereNameSpace__ecere__sys__OldList_FindLink(struct __ecereNameSpace__ecere__sys__OldList * this, void *  data);
 
@@ -1441,7 +1616,7 @@ struct __ecereNameSpace__ecere__sys__NamedLink64 * prev;
 struct __ecereNameSpace__ecere__sys__NamedLink64 * next;
 char *  name;
 long long data;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static void __ecereNameSpace__ecere__com__FreeEnumValue(struct __ecereNameSpace__ecere__sys__NamedLink64 * value)
 {
@@ -1463,7 +1638,7 @@ void * symbol;
 const char * dataTypeString;
 struct __ecereNameSpace__ecere__com__Instance * dataType;
 int memberAccess;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__ObjectInfo;
 
@@ -1479,7 +1654,7 @@ struct __ecereNameSpace__ecere__sys__OldList instances;
 struct __ecereNameSpace__ecere__com__Instance * classDefinition;
 unsigned int modified;
 void * i18nStrings;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 int __ecereVMethodID___ecereNameSpace__ecere__com__DesignerBase_RenameObject;
 
@@ -1515,6 +1690,13 @@ extern void __ecereNameSpace__ecere__com__InitializeDataTypes1(struct __ecereNam
 
 extern void __ecereNameSpace__ecere__com__InitializeDataTypes(struct __ecereNameSpace__ecere__com__Instance * module);
 
+struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(const char *  value)
+{
+struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
+
+return theClass;
+}
+
 struct __ecereNameSpace__ecere__com__BitMember;
 
 struct __ecereNameSpace__ecere__com__BitMember
@@ -1532,7 +1714,7 @@ int type;
 int size;
 int pos;
 uint64 mask;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__ClassProperty;
 
@@ -1546,7 +1728,7 @@ long long (* Get)(struct __ecereNameSpace__ecere__com__Class *);
 const char * dataTypeString;
 struct __ecereNameSpace__ecere__com__Instance * dataType;
 unsigned int constant;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__Watcher;
 
@@ -1555,7 +1737,7 @@ struct __ecereNameSpace__ecere__com__Watcher
 struct __ecereNameSpace__ecere__com__Watcher * prev, * next;
 void (* callback)(void *, void *);
 struct __ecereNameSpace__ecere__com__Instance * object;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 void __ecereNameSpace__ecere__com__eInstance_Watch(void * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void *, void *))
 {
@@ -1579,51 +1761,7 @@ struct __ecereNameSpace__ecere__com__DefinedExpression * prev, * next;
 const char * name;
 const char * value;
 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
-} __attribute__ ((gcc_struct));
-
-unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool *  this, unsigned int numBlocks);
-
-static void __ecereNameSpace__ecere__com__InitMemory()
-{
-int c;
-
-__ecereNameSpace__ecere__com__memoryInitialized = 1;
-__ecereNameSpace__ecere__com__pools = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__BlockPool) * 31);
-for(c = 0; c < 31; c++)
-{
-int expansion;
-
-__ecereNameSpace__ecere__com__pools[c].blockSize = __ecereNameSpace__ecere__com__pow1_5(c);
-if(__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *))
-__ecereNameSpace__ecere__com__pools[c].blockSize += sizeof(void *) - (__ecereNameSpace__ecere__com__pools[c].blockSize % sizeof(void *));
-__ecereNameSpace__ecere__com__pools[c].blockSpace = __ecereNameSpace__ecere__com__pools[c].blockSize;
-__ecereNameSpace__ecere__com__pools[c].blockSpace += sizeof(struct __ecereNameSpace__ecere__com__MemBlock);
-expansion = (__ecereNameSpace__ecere__com__pools[c].blockSize < 128) ? 1024 : (131072 / __ecereNameSpace__ecere__com__pools[c].blockSize);
-if(c < 12)
-__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(&__ecereNameSpace__ecere__com__pools[c], ((1 > expansion) ? 1 : expansion));
-}
-}
-
-void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool *  this, struct __ecereNameSpace__ecere__com__MemBlock *  block);
-
-static void __ecereNameSpace__ecere__com___myfree(void * pointer)
-{
-if(pointer)
-{
-struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)pointer - sizeof(struct __ecereNameSpace__ecere__com__MemBlock));
-struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
-struct __ecereNameSpace__ecere__com__BlockPool * pool = part ? part->pool : (((void *)0));
-
-if(pool)
-__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove((&*pool), block);
-else
-{
-__ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
-__ecereNameSpace__ecere__com__OUTSIDE_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + block->size;
-free(block);
-}
-}
-}
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__sys__BinaryTree;
 
@@ -1633,7 +1771,7 @@ struct __ecereNameSpace__ecere__sys__BTNode * root;
 int count;
 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
 void (*  FreeKey)(void *  key);
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__NameSpace
 {
@@ -1645,7 +1783,7 @@ struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__sys__BTNode * __ecereProp___ecereNameSpace__ecere__sys__BinaryTree_Get_first(struct __ecereNameSpace__ecere__sys__BinaryTree * this);
 
@@ -1668,7 +1806,7 @@ unsigned int isGUIApp;
 struct __ecereNameSpace__ecere__sys__OldList allModules;
 char *  parsedCommand;
 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static void __ecereNameSpace__ecere__com__NameSpace_Free(struct __ecereNameSpace__ecere__com__NameSpace * parentNameSpace)
 {
@@ -1716,7 +1854,7 @@ int importType;
 int origImportType;
 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchNameSpace(struct __ecereNameSpace__ecere__com__NameSpace * nameSpace, const char * name, void * listOffset)
 {
@@ -1783,7 +1921,7 @@ struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
 int memberOffset;
 short structAlignment;
 short pointerAlignment;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
 {
@@ -1793,7 +1931,7 @@ struct
 {
 const char * dataTypeString;
 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
-} __attribute__ ((gcc_struct)) __anon1;
+} ecere_gcc_struct __anon1;
 struct __ecereNameSpace__ecere__com__DataValue expression;
 struct
 {
@@ -1803,10 +1941,10 @@ union
 struct __ecereNameSpace__ecere__com__DataMember * member;
 struct __ecereNameSpace__ecere__com__Property * prop;
 struct __ecereNameSpace__ecere__com__Method * method;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct)) __anon2;
-} __attribute__ ((gcc_struct)) __anon1;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct __anon2;
+} ecere_gcc_struct __anon1;
+} ecere_gcc_struct;
 
 static void __ecereNameSpace__ecere__com__DataMember_Free(struct __ecereNameSpace__ecere__com__DataMember * parentMember)
 {
@@ -1882,10 +2020,10 @@ unsigned int pointerAlignment = alignment == 0xF000F000;
 
 if(pointerAlignment)
 alignment = sizeof(void *);
-if(pointerAlignment && member->structAlignment <= (short)4)
-member->pointerAlignment = (short)1;
+if(pointerAlignment && member->structAlignment <= 4)
+member->pointerAlignment = 1;
 else if(!pointerAlignment && alignment >= 8)
-member->pointerAlignment = (short)0;
+member->pointerAlignment = 0;
 member->structAlignment = (__simpleStruct0 = member->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
 if(member->memberOffset % alignment)
 member->memberOffset += alignment - (member->memberOffset % alignment);
@@ -1984,11 +2122,11 @@ struct __ecereNameSpace__ecere__sys__OldList templatized;
 int numParams;
 unsigned int isInstanceClass;
 unsigned int byValueSystemClass;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Angle;
 
-static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__unichar;
+static struct __ecereNameSpace__ecere__com__Class * __ecereClass_unichar;
 
 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Property;
 
@@ -2052,6 +2190,34 @@ static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpac
 
 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__ClassDesignerBase;
 
+const char * __ecereMethod_unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
+{
+__ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*this), 1, tempString, 5);
+return tempString;
+}
+
+unsigned int __ecereMethod_unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, const char * string)
+{
+int nb;
+
+(*this) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
+return 1;
+}
+
+const char *  __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
+{
+return this->name;
+}
+
+const char * __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, char * tempString, void * fieldData, unsigned int * needClass)
+{
+return this->name;
+}
+
+void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
+{
+}
+
 static void __ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(struct __ecereNameSpace__ecere__com__Class * base, const char * name, int vid, void * origFunction, const char * type)
 {
 struct __ecereNameSpace__ecere__sys__OldLink * derivative;
@@ -2448,47 +2614,6 @@ for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
 __ecereNameSpace__ecere__com__FixOffsets(deriv->data);
 }
 
-struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode)
-{
-if(_class && name)
-{
-if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
-{
-struct __ecereNameSpace__ecere__com__DataMember * dataMember;
-
-if(alignment)
-{
-short __simpleStruct0;
-unsigned int pointerAlignment = alignment == 0xF000F000;
-
-if(pointerAlignment)
-alignment = sizeof(void *);
-if(pointerAlignment && _class->structAlignment <= (short)4)
-_class->pointerAlignment = (short)1;
-else if(!pointerAlignment && alignment >= 8)
-_class->pointerAlignment = (short)0;
-_class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
-if(_class->memberOffset % alignment)
-_class->memberOffset += alignment - (_class->memberOffset % alignment);
-}
-dataMember = __extension__ ({
-struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DataMember));
-
-__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = _class->memberID++, __ecereInstance1->_class = _class, __ecereInstance1->offset = _class->memberOffset, __ecereInstance1->memberOffset = size, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
-});
-__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
-_class->memberOffset += size;
-__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
-struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
-
-__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
-}));
-return dataMember;
-}
-}
-return (((void *)0));
-}
-
 void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, long long value)
 {
 if(_class && _class->type == 4)
@@ -2555,52 +2680,36 @@ return (struct __ecereNameSpace__ecere__com__Class *)__ecereNameSpace__ecere__co
 return (((void *)0));
 }
 
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
-
-extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
-
-const char * __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, char * tempString, void * fieldData, unsigned int * needClass)
+const char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
 {
-__ecereNameSpace__ecere__sys__UTF32toUTF8Len(&(*this), 1, tempString, 5);
-return tempString;
+if((*this) >= __ecereNameSpace__ecere__com__firstPlatform && (*this) <= __ecereNameSpace__ecere__com__lastPlatform)
+{
+if(tempString)
+strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
+return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
+}
+if(tempString && tempString[0])
+tempString[0] = '\0';
+return (((void *)0));
 }
 
-unsigned int __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, unsigned int * this, const char * string)
+unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, const char * string)
 {
-int nb;
-
-(*this) = __ecereNameSpace__ecere__sys__UTF8GetChar(string, &nb);
-return 1;
+(*this) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
+return (*this) != 0;
 }
 
-const char *  __ecereProp___ecereNameSpace__ecere__com__Class_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Class * this)
-{
-return this->name;
-}
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__OldLink;
 
-struct __ecereNameSpace__ecere__com__Class * __ecereProp___ecereNameSpace__ecere__com__Class_Set_char__PTR_(const char *  value)
-{
-struct __ecereNameSpace__ecere__com__Class * theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(__thisModule, value);
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
 
-return theClass;
-}
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_char__PTR_;
 
-const char * __ecereMethod___ecereNameSpace__ecere__com__Class_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this, char * tempString, void * fieldData, unsigned int * needClass)
-{
-return this->name;
-}
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass_String;
 
-void __ecereMethod___ecereNameSpace__ecere__com__Class_OnFree(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Class * this)
-{
-}
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Application;
+
+extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Instance;
 
 struct __ecereNameSpace__ecere__com__Method * __ecereNameSpace__ecere__com__eClass_AddMethod(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, void * function, int declMode)
 {
@@ -2625,7 +2734,7 @@ void * oldFunction = _class->_vTbl[method->vid];
 if(method->vid >= _class->vTblSize)
 printf("error: virtual methods overriding failure\n");
 else
-_class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
+_class->_vTbl[method->vid] = function ? function : (((void *)0));
 for(deriv = _class->derivatives.first; deriv; deriv = deriv->next)
 {
 struct __ecereNameSpace__ecere__com__Class * derivClass = deriv->data;
@@ -2664,7 +2773,7 @@ return method;
 }
 if(!base)
 {
-struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
+struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (((void *)0)), method->_class = _class, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
 
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
 return method;
@@ -2680,7 +2789,11 @@ short __simpleStruct0, __simpleStruct1;
 if(dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&addTo->membersAlpha, dataMember->name))
 {
 __ecereNameSpace__ecere__com__DataMember_Free(dataMember);
-((dataMember ? (__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)dataMember) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(dataMember)) : 0), dataMember = 0);
+((dataMember ? __extension__ ({
+void * __ecerePtrToDelete = (dataMember);
+
+__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete);
+}) : 0), dataMember = 0);
 return 0;
 }
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&addTo->members, dataMember);
@@ -2696,10 +2809,10 @@ if(dataMember->type == 1)
 addTo->memberID += 1;
 else
 addTo->memberID += dataMember->memberID;
-if(dataMember->pointerAlignment && dataMember->structAlignment <= (short)4)
-addTo->pointerAlignment = (short)1;
-else if(!dataMember->pointerAlignment && dataMember->structAlignment >= (short)8)
-addTo->pointerAlignment = (short)0;
+if(dataMember->pointerAlignment && dataMember->structAlignment <= 4)
+addTo->pointerAlignment = 1;
+else if(!dataMember->pointerAlignment && dataMember->structAlignment >= 8)
+addTo->pointerAlignment = 0;
 addTo->structAlignment = (__simpleStruct0 = addTo->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
 dataMember->offset = (addTo->type == 1) ? 0 : addTo->memberOffset;
 if(dataMember->structAlignment)
@@ -2724,7 +2837,11 @@ short __simpleStruct0, __simpleStruct1;
 if(!_class || _class->comRedefinition || (dataMember->name && __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, dataMember->name)))
 {
 __ecereNameSpace__ecere__com__DataMember_Free(dataMember);
-((dataMember ? (__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)dataMember) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(dataMember)) : 0), dataMember = 0);
+((dataMember ? __extension__ ({
+void * __ecerePtrToDelete = (dataMember);
+
+__ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor ? __ecereClass___ecereNameSpace__ecere__com__DataMember->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete);
+}) : 0), dataMember = 0);
 return 0;
 }
 __ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
@@ -2736,10 +2853,10 @@ __ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember,
 }));
 __ecereNameSpace__ecere__com__SetMemberClass(dataMember, _class);
 dataMember->id = _class->memberID;
-if(dataMember->pointerAlignment && dataMember->structAlignment <= (short)4)
-_class->pointerAlignment = (short)1;
-else if(!dataMember->pointerAlignment && dataMember->structAlignment >= (short)8)
-_class->pointerAlignment = (short)0;
+if(dataMember->pointerAlignment && dataMember->structAlignment <= 4)
+_class->pointerAlignment = 1;
+else if(!dataMember->pointerAlignment && dataMember->structAlignment >= 8)
+_class->pointerAlignment = 0;
 _class->structAlignment = (__simpleStruct0 = _class->structAlignment, __simpleStruct1 = dataMember->structAlignment, (__simpleStruct0 > __simpleStruct1) ? __simpleStruct0 : __simpleStruct1);
 if(dataMember->type == 1)
 _class->memberID += 1;
@@ -2787,144 +2904,14 @@ return bitMember;
 return (((void *)0));
 }
 
-unsigned int __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(struct __ecereNameSpace__ecere__com__BlockPool * this, unsigned int numBlocks)
-{
-unsigned char * memory = malloc(numBlocks * this->blockSpace);
-
-__ecereNameSpace__ecere__com__TOTAL_MEM += numBlocks * this->blockSpace;
-if(memory)
-{
-int c;
-struct __ecereNameSpace__ecere__com__MemBlock * block = (struct __ecereNameSpace__ecere__com__MemBlock *)memory;
-struct __ecereNameSpace__ecere__com__MemPart * part = calloc(1, sizeof(struct __ecereNameSpace__ecere__com__MemPart));
-
-__ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemPart);
-this->free = block;
-for(c = 0; c < numBlocks - 1; c++)
-{
-block->part = part;
-block->prev = (((void *)0));
-block->next = (struct __ecereNameSpace__ecere__com__MemBlock *)((unsigned char *)block + this->blockSpace);
-block = block->next;
-}
-part->blocksUsed = 0;
-part->pool = this;
-part->memory = memory;
-part->size = numBlocks;
-block->part = part;
-block->prev = (((void *)0));
-block->next = (((void *)0));
-this->totalSize += numBlocks;
-this->numParts++;
-return 1;
-}
-return 0;
-}
-
-struct __ecereNameSpace__ecere__com__MemBlock * __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(struct __ecereNameSpace__ecere__com__BlockPool * this)
-{
-int __simpleStruct0;
-struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
-
-if(!this->free)
-__ecereMethod___ecereNameSpace__ecere__com__BlockPool_Expand(this, (__simpleStruct0 = this->numBlocks / 2, (1 > __simpleStruct0) ? 1 : __simpleStruct0));
-if(this->free)
-{
-block = this->free;
-block->prev = this->last;
-if(block->prev)
-block->prev->next = block;
-if(!this->first)
-this->first = block;
-this->last = block;
-this->free = block->next;
-block->next = (((void *)0));
-block->part->blocksUsed++;
-this->numBlocks++;
-}
-return block;
-}
-
-void __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Remove(struct __ecereNameSpace__ecere__com__BlockPool * this, struct __ecereNameSpace__ecere__com__MemBlock * block)
-{
-if(block->prev)
-block->prev->next = block->next;
-if(block->next)
-block->next->prev = block->prev;
-if(this->first == block)
-this->first = block->next;
-if(this->last == block)
-this->last = block->prev;
-block->next = this->free;
-this->free = block;
-block->part->blocksUsed--;
-this->numBlocks--;
-(*block->part->pool).usedSpace -= block->size;
-if(!block->part->blocksUsed && this->numBlocks && this->totalSize > this->numBlocks + this->numBlocks / 2)
-{
-struct __ecereNameSpace__ecere__com__MemBlock * next = this->free, * prev = (((void *)0));
-struct __ecereNameSpace__ecere__com__MemPart * part = block->part;
-
-this->free = (((void *)0));
-this->totalSize -= part->size;
-while(next)
-{
-if(next->part != part)
-{
-if(prev)
-prev->next = next;
-else
-this->free = next;
-prev = next;
-}
-next = next->next;
-}
-;
-if(prev)
-prev->next = (((void *)0));
-__ecereNameSpace__ecere__com__TOTAL_MEM -= part->size * this->blockSpace;
-__ecereNameSpace__ecere__com__TOTAL_MEM -= sizeof(struct __ecereNameSpace__ecere__com__MemPart);
-this->numParts--;
-free(part->memory);
-free(part);
-}
-}
-
 const char *  __ecereProp___ecereNameSpace__ecere__com__Platform_Get_char__PTR_(int this)
 {
-return ((const char *  (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char *  tempString, void *  fieldData, unsigned int *  needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString])(__ecereClass___ecereNameSpace__ecere__com__Platform, (void *)&this, (((void *)0)), (((void *)0)), (((void *)0)));
-}
-
-int __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(const char *  value)
-{
-if(value)
-{
-int c;
-
-for(c = __ecereNameSpace__ecere__com__firstPlatform; c <= __ecereNameSpace__ecere__com__lastPlatform; c++)
-if(!strcasecmp(value, __ecereNameSpace__ecere__com__platformNames[c]))
-return c;
-}
-return 0;
-}
-
-const char * __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, int * this, char * tempString, void * fieldData, unsigned int * needClass)
-{
-if((*this) >= __ecereNameSpace__ecere__com__firstPlatform && (*this) <= __ecereNameSpace__ecere__com__lastPlatform)
-{
-if(tempString)
-strcpy(tempString, __ecereNameSpace__ecere__com__platformNames[*(int *)this]);
-return __ecereNameSpace__ecere__com__platformNames[*(int *)this];
-}
-if(tempString && tempString[0])
-tempString[0] = '\0';
-return (((void *)0));
-}
+return (__extension__ ({
+const char *  (*  __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Class * , const void * , char *  tempString, void *  fieldData, unsigned int *  needClass);
 
-unsigned int __ecereMethod___ecereNameSpace__ecere__com__Platform_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, int * this, const char * string)
-{
-(*this) = __ecereProp___ecereNameSpace__ecere__com__Platform_Set_char__PTR_(string);
-return (*this) != 0;
+__internal_VirtualMethod = ((const char *  (*)(struct __ecereNameSpace__ecere__com__Class *, const void *, char *  tempString, void *  fieldData, unsigned int *  needClass))__ecereClass___ecereNameSpace__ecere__com__Platform->_vTbl[__ecereVMethodID_class_OnGetString]);
+__internal_VirtualMethod ? __internal_VirtualMethod(__ecereClass___ecereNameSpace__ecere__com__Platform, (void *)&this, (((void *)0)), (((void *)0)), (((void *)0))) : (const char * )1;
+}));
 }
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__com__DesignerBase_Get_classDesigner(struct __ecereNameSpace__ecere__com__Instance * this)
@@ -2965,7 +2952,7 @@ if(method->type == 1)
 if(method->vid >= _class->vTblSize)
 printf("error: virtual methods overriding failure\n");
 else
-_class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
+_class->_vTbl[method->vid] = function ? function : (((void *)0));
 }
 else
 base = (((void *)0));
@@ -2974,13 +2961,13 @@ return method;
 }
 if(!base)
 {
-struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (void *)(__ecereNameSpace__ecere__com__DefaultFunction), method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
+struct __ecereNameSpace__ecere__com__Method * method = (method = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__Method)), method->name = __ecereNameSpace__ecere__sys__CopyString(name), method->function = function ? function : (((void *)0)), method->type = 1, method->_class = _class, method->vid = _class->vTblSize++, method->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), method->memberAccess = declMode, method);
 
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->methods, (struct __ecereNameSpace__ecere__sys__BTNode *)method);
 _class->_vTbl = __ecereNameSpace__ecere__com__eSystem_Renew(_class->_vTbl, sizeof(void *) * (_class->vTblSize));
-_class->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
+_class->_vTbl[method->vid] = function ? function : (((void *)0));
 if(_class->derivatives.first || _class->templatized.first)
-__ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (void *)__ecereNameSpace__ecere__com__DefaultFunction, type);
+__ecereNameSpace__ecere__com__FixDerivativeVirtualMethod(_class, name, method->vid, function ? function : (((void *)0)), type);
 return method;
 }
 }
@@ -3222,6 +3209,62 @@ theClass = __ecereNameSpace__ecere__com__eSystem_FindClass(((struct __ecereNameS
 (*this) = (void *)theClass;
 }
 
+struct __ecereNameSpace__ecere__com__DataMember * __ecereNameSpace__ecere__com__eClass_AddDataMember(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * type, unsigned int size, unsigned int alignment, int declMode)
+{
+if(_class && name)
+{
+if(!__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&_class->members, name))
+{
+struct __ecereNameSpace__ecere__com__DataMember * dataMember;
+
+if(alignment)
+{
+short __simpleStruct0;
+unsigned int pointerAlignment = alignment == 0xF000F000;
+unsigned int force64Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 2) ? 1 : 0;
+unsigned int force32Bits = (((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)_class->module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->isGUIApp & 4) ? 1 : 0;
+
+if((force32Bits || force64Bits) && !strcmp(_class->name, "AVLNode") && !strcmp(name, "__ecerePrivateData0"))
+{
+if(force64Bits)
+{
+type = "byte[32]";
+size = 32;
+}
+if(force32Bits)
+{
+type = "byte[16]";
+size = 16;
+}
+}
+if(pointerAlignment)
+alignment = sizeof(void *);
+if(pointerAlignment && _class->structAlignment <= 4)
+_class->pointerAlignment = 1;
+else if(!pointerAlignment && alignment >= 8)
+_class->pointerAlignment = 0;
+_class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment);
+if(_class->memberOffset % alignment)
+_class->memberOffset += alignment - (_class->memberOffset % alignment);
+}
+dataMember = __extension__ ({
+struct __ecereNameSpace__ecere__com__DataMember * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__DataMember));
+
+__ecereInstance1->name = __ecereNameSpace__ecere__sys__CopyString(name), __ecereInstance1->dataTypeString = __ecereNameSpace__ecere__sys__CopyString(type), __ecereInstance1->id = _class->memberID++, __ecereInstance1->_class = _class, __ecereInstance1->offset = _class->memberOffset, __ecereInstance1->memberOffset = size, __ecereInstance1->memberAccess = declMode, __ecereInstance1->membersAlpha.CompareKey = (void *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_CompareString, __ecereInstance1;
+});
+__ecereMethod___ecereNameSpace__ecere__sys__OldList_Add(&_class->membersAndProperties, dataMember);
+_class->memberOffset += size;
+__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Add(&_class->members, (struct __ecereNameSpace__ecere__sys__BTNode *)__extension__ ({
+struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereInstance1 = __ecereNameSpace__ecere__com__eSystem_New0(sizeof(struct __ecereNameSpace__ecere__com__BTNamedLink));
+
+__ecereInstance1->name = dataMember->name, __ecereInstance1->data = dataMember, __ecereInstance1;
+}));
+return dataMember;
+}
+}
+return (((void *)0));
+}
+
 static void __ecereNameSpace__ecere__com__Application_Destructor(struct __ecereNameSpace__ecere__com__Instance * app)
 {
 if(((struct __ecereNameSpace__ecere__com__Application *)(((char *)app + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->parsedCommand)
@@ -3342,7 +3385,7 @@ if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl ==
 ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl = __ecereNameSpace__ecere__com___malloc(sizeof(void *) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
 memcpy(((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl, ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->_vTbl, sizeof(int (*)()) * ((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_class->vTblSize);
 }
-((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : __ecereNameSpace__ecere__com__DefaultFunction;
+((struct __ecereNameSpace__ecere__com__Instance *)(char *)instance)->_vTbl[method->vid] = function ? function : (((void *)0));
 }
 }
 }
@@ -3487,40 +3530,6 @@ return __ecereNameSpace__ecere__com__eClass_GetDesigner(((struct __ecereNameSpac
 return (((void *)0));
 }
 
-static void * __ecereNameSpace__ecere__com___mymalloc(unsigned int size)
-{
-struct __ecereNameSpace__ecere__com__MemBlock * block = (((void *)0));
-
-if(size)
-{
-unsigned int p = __ecereNameSpace__ecere__com__log1_5i(size);
-
-if(!__ecereNameSpace__ecere__com__memoryInitialized)
-__ecereNameSpace__ecere__com__InitMemory();
-if(!__ecereNameSpace__ecere__com__poolingDisabled && p < 31)
-{
-block = __ecereMethod___ecereNameSpace__ecere__com__BlockPool_Add(&__ecereNameSpace__ecere__com__pools[p]);
-if(block)
-{
-block->size = size;
-__ecereNameSpace__ecere__com__pools[p].usedSpace += size;
-}
-}
-else
-{
-block = malloc(sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size);
-if(block)
-{
-__ecereNameSpace__ecere__com__TOTAL_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
-__ecereNameSpace__ecere__com__OUTSIDE_MEM += sizeof(struct __ecereNameSpace__ecere__com__MemBlock) + size;
-block->part = (((void *)0));
-block->size = size;
-}
-}
-}
-return block ? ((struct __ecereNameSpace__ecere__com__MemBlock *)block + 1) : (((void *)0));
-}
-
 void __ecereNameSpace__ecere__com__eProperty_SelfWatch(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, void (* callback)(void *))
 {
 if(_class)
@@ -3569,7 +3578,7 @@ struct __ecereNameSpace__ecere__com__SubModule
 struct __ecereNameSpace__ecere__com__SubModule * prev, * next;
 struct __ecereNameSpace__ecere__com__Instance * module;
 int importMode;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static struct __ecereNameSpace__ecere__com__BTNamedLink * __ecereNameSpace__ecere__com__SearchModule(struct __ecereNameSpace__ecere__com__Instance * module, const char * name, void * listOffset, unsigned int searchPrivate)
 {
@@ -3653,7 +3662,7 @@ struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
 const char * dataTypeString;
 struct __ecereNameSpace__ecere__com__Instance * dataType;
 void * symbol;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 void __ecereNameSpace__ecere__com__eInstance_Evolve(struct __ecereNameSpace__ecere__com__Instance ** instancePtr, struct __ecereNameSpace__ecere__com__Class * _class)
 {
@@ -3844,10 +3853,10 @@ union
 {
 const char * dataTypeString;
 int memberType;
-} __attribute__ ((gcc_struct)) __anon1;
+} ecere_gcc_struct __anon1;
 struct __ecereNameSpace__ecere__com__ClassTemplateArgument defaultArg;
 void * param;
-} __attribute__ ((gcc_struct));
+} ecere_gcc_struct;
 
 static void __ecereNameSpace__ecere__com__FreeTemplateArg(struct __ecereNameSpace__ecere__com__Class * template, struct __ecereNameSpace__ecere__com__ClassTemplateParameter * param, int id)
 {
@@ -4125,7 +4134,7 @@ char ident[1024];
 while(*end == ' ')
 end--;
 strncpy(ident, paramStart, end + 1 - paramStart);
-ident[end + 1 - paramStart] = (char)0;
+ident[end + 1 - paramStart] = 0;
 for(sClass = _class; sClass; sClass = sClass->base)
 {
 if(sClass->templateClass)
@@ -4211,12 +4220,12 @@ equal++;
 while(*equal == ' ')
 equal++;
 memcpy(value, equal, paramEnd - equal);
-value[paramEnd - equal] = (char)0;
+value[paramEnd - equal] = 0;
 }
 else
 {
 memcpy(value, paramStart, paramEnd - paramStart);
-value[paramEnd - paramStart] = (char)0;
+value[paramEnd - paramStart] = 0;
 }
 __ecereNameSpace__ecere__sys__TrimRSpaces(value, value);
 switch(curParam->type)
@@ -4257,7 +4266,7 @@ argument.__anon1.expression.__anon1.ui = ch;
 }
 else if(!strcmp(curParam->__anon1.dataTypeString, "uint"))
 {
-argument.__anon1.expression.__anon1.ui = strtoul(value, (((void *)0)), 0);
+argument.__anon1.expression.__anon1.ui = (unsigned int)strtoul(value, (((void *)0)), 0);
 }
 else if(!strcmp(curParam->__anon1.dataTypeString, "char"))
 {
@@ -4293,7 +4302,7 @@ argument.__anon1.expression.__anon1.d = strtod(value, (((void *)0)));
 }
 else
 {
-argument.__anon1.expression.__anon1.i = strtol(value, (((void *)0)), 0);
+argument.__anon1.expression.__anon1.i = (int)strtol(value, (((void *)0)), 0);
 }
 break;
 }
@@ -4724,7 +4733,7 @@ dataTypeString = enumBase ? enumBase->dataTypeString : base->dataTypeString;
 offsetClass = base ? (base->templateClass ? base->templateClass->sizeClass : base->sizeClass) : (type == 5 ? 0 : 0);
 totalSizeClass = offsetClass + sizeClass;
 if(type == 0 || type == 5)
-_class->offset = (base && (base->templateClass ? base->templateClass->structSize : base->structSize) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : sizeof(struct __ecereNameSpace__ecere__com__Instance));
+_class->offset = (base && (base->templateClass ? (type == 0 ? base->templateClass->structSize : base->templateClass->memberOffset) : (type == 0 ? base->structSize : base->memberOffset)) && base->type != 1000) ? (base->templateClass ? base->templateClass->structSize : base->structSize) : ((type == 5) ? 0 : sizeof(struct __ecereNameSpace__ecere__com__Instance));
 else
 _class->offset = 0;
 if(type == 1)
@@ -5484,7 +5493,7 @@ id++;
 }
 _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0;
 if(type == 0 || type == 5)
-_class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : ((force64Bits && inCompiler && fixed) ? 24 : (force32Bits && inCompiler && fixed) ? 12 : sizeof(struct __ecereNameSpace__ecere__com__Instance)));
+_class->offset = (base && base->structSize && base->type != 1000) ? (base->type == 0 ? base->structSize : base->memberOffset) : ((type == 5) ? 0 : ((force64Bits && inCompiler && fixed) ? 24 : (force32Bits && inCompiler && fixed) ? 12 : sizeof(struct __ecereNameSpace__ecere__com__Instance)));
 else
 _class->offset = 0;
 if(crossBits)
@@ -5500,8 +5509,8 @@ else
 if(!strcmp(name, "ecere::sys::FileListing"))
 {
 size = 3 * (force32Bits ? 4 : 8);
-_class->structAlignment = force32Bits ? (short)4 : (short)8;
-_class->pointerAlignment = (short)1;
+_class->structAlignment = force32Bits ? 4 : 8;
+_class->pointerAlignment = 1;
 }
 else if(!strcmp(name, "ecere::com::Class"))
 size = 0;
@@ -5785,8 +5794,8 @@ __ecereNameSpace__ecere__com__eInstance_Delete(instance);
 
 static struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__Module_Load(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess, unsigned int ensureCOM)
 {
-unsigned int (stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
-unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
+unsigned int (ecere_stdcall * Load)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
+unsigned int (ecere_stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (((void *)0));
 struct __ecereNameSpace__ecere__com__Instance * module;
 
 for(module = ((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)fromModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application + sizeof(struct __ecereNameSpace__ecere__com__Module) + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->allModules.first; module; module = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->next)
@@ -5813,7 +5822,7 @@ Unload = (void *)(__ecereDll_Unload_ecere);
 }
 else
 {
-char * libLocation = (((void *)0));
+const char * libLocation = (((void *)0));
 
 library = Instance_Module_Load(libLocation, name, (void *)(&Load), (void *)(&Unload));
 }
@@ -5834,7 +5843,7 @@ if((!(strcasecmp)(ext, "dylib") || !(strcasecmp)(ext, "so")) && strstr(moduleNam
 int len = (int)strlen(moduleName) - 3;
 
 memmove(moduleName, moduleName + 3, len);
-moduleName[len] = (char)0;
+moduleName[len] = 0;
 }
 ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->name = __ecereNameSpace__ecere__sys__CopyString(moduleName);
 }
@@ -5991,7 +6000,7 @@ Unload(module);
 }
 else
 {
-unsigned int (stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload;
+unsigned int (ecere_stdcall * Unload)(struct __ecereNameSpace__ecere__com__Instance * module) = (void *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->Unload;
 
 Unload(module);
 }
@@ -6026,6 +6035,9 @@ for(; (_class = ((struct __ecereNameSpace__ecere__com__Module *)(((char *)module
 if(_class->nameSpace)
 {
 struct __ecereNameSpace__ecere__com__BTNamedLink * classLink = (struct __ecereNameSpace__ecere__com__BTNamedLink *)__ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_FindString(&(*_class->nameSpace).classes, _class->name);
+
+if(classLink)
+{
 struct __ecereNameSpace__ecere__sys__OldLink * t;
 
 for(t = _class->templatized.first; t; t = t->next)
@@ -6038,6 +6050,7 @@ __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*template->nameS
 template->nameSpace = (((void *)0));
 }
 __ecereMethod___ecereNameSpace__ecere__sys__BinaryTree_Delete(&(*_class->nameSpace).classes, (struct __ecereNameSpace__ecere__sys__BTNode *)classLink);
+}
 _class->nameSpace = (((void *)0));
 }
 _class->module = (((void *)0));
@@ -6208,9 +6221,6 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("strtoull", "uint64 strto
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("system", "int system(const char*)", system, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atoi", "int atoi(const char*)", atoi, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("atof", "double atof(const char*)", atof, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("memset", "void * memset(void * area, int value, uintsize count)", memset, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("getenv", "char * getenv(const char * name)", getenv, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("rename", "int rename(const char *oldpath, const char *newpath)", rename, module, 4);
@@ -6243,12 +6253,17 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsprintf", "int vsprintf
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("vsnprintf", "int vsnprintf(char*, uintsize, const char*, __builtin_va_list)", vsnprintf, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("puts", "int puts(const char *)", puts, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("fputs", "int fputs(const char *, void * stream)", fputs, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("tolower", "int tolower(int)", tolower, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("toupper", "int toupper(int)", toupper, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("isdigit", "bool isdigit(int)", isdigit, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("isxdigit", "bool isxdigit(int)", isxdigit, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalnum", "int isalnum(int c)", isalnum, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isspace", "int isspace(int c)", isspace, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isalpha", "int isalpha(int c)", isalpha, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("islower", "int islower(int c)", islower, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isupper", "int isupper(int c)", isupper, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("isprint", "int isprint(int c)", isprint, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("isblank", "int isblank(int c)", isblank, module, 4);
 }
 
 struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com____ecere_COM_Initialize(unsigned int guiApp, int argc, char * argv[])
@@ -6278,11 +6293,11 @@ __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::com::null", "((void
 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::Angle", "double", 0, 0, (void *)0, (void *)0, module, 4, 1);
 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
 __ecereClass___ecereNameSpace__ecere__com__Angle = class;
-class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "ecere::com::unichar", "uint", 0, 0, (void *)0, (void *)0, module, 4, 1);
+class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(3, "unichar", "uint", 0, 0, (void *)0, (void *)0, module, 4, 1);
 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
-__ecereClass___ecereNameSpace__ecere__com__unichar = class;
-__ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetString, 1);
-__ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__com__unichar_OnGetDataFromString, 1);
+__ecereClass_unichar = class;
+__ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod_unichar_OnGetString, 1);
+__ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod_unichar_OnGetDataFromString, 1);
 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(5, "ecere::com::Property", 0, sizeof(struct __ecereNameSpace__ecere__com__Property), 0, (void *)0, (void *)0, module, 4, 1);
 if(((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application == ((struct __ecereNameSpace__ecere__com__Module *)(((char *)__thisModule + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->application && class)
 __ecereClass___ecereNameSpace__ecere__com__Property = class;
@@ -6670,6 +6685,7 @@ __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "usedSpace", "uint", 4
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::log2i", "uint ecere::com::log2i(uint number)", __ecereNameSpace__ecere__com__log2i, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::pow2i", "uint ecere::com::pow2i(uint number)", __ecereNameSpace__ecere__com__pow2i, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::memswap", "void ecere::com::memswap(byte * a, byte * b, uint size)", __ecereNameSpace__ecere__com__memswap, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckConsistency", "void ecere::com::CheckConsistency(void)", __ecereNameSpace__ecere__com__CheckConsistency, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::CheckMemory", "void ecere::com::CheckMemory(void)", __ecereNameSpace__ecere__com__CheckMemory, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eSystem_RegisterClass", "ecere::com::Class ecere::com::eSystem_RegisterClass(ecere::com::ClassType type, const char * name, const char * baseName, int size, int sizeClass, bool (* Constructor)(void *), void (* Destructor)(void *), ecere::com::Module module, ecere::com::AccessMode declMode, ecere::com::AccessMode inheritanceAccess)", __ecereNameSpace__ecere__com__eSystem_RegisterClass, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::eClass_Unregister", "void ecere::com::eClass_Unregister(ecere::com::Class _class)", __ecereNameSpace__ecere__com__eClass_Unregister, module, 4);
@@ -6808,9 +6824,9 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8Validate
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ISO8859_1toUTF8", "int ecere::sys::ISO8859_1toUTF8(const char * source, char * dest, int max)", __ecereNameSpace__ecere__sys__ISO8859_1toUTF8, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8", "char * ecere::sys::UTF16toUTF8(const uint16 * source)", __ecereNameSpace__ecere__sys__UTF16toUTF8, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF16toUTF8Buffer", "int ecere::sys::UTF16toUTF8Buffer(const uint16 * source, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "ecere::com::unichar ecere::sys::UTF8GetChar(const char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar", "unichar ecere::sys::UTF8GetChar(const char * string, int * numBytes)", __ecereNameSpace__ecere__sys__UTF8GetChar, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(const char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4);
-__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF32toUTF8Len", "int ecere::sys::UTF32toUTF8Len(const ecere::com::unichar * source, int count, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF32toUTF8Len, module, 4);
+__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF32toUTF8Len", "int ecere::sys::UTF32toUTF8Len(const unichar * source, int count, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF32toUTF8Len, module, 4);
 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(const char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4);
 }