1 /* Code generated from eC source file: String.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>
52 void exit(int status);
54 void * calloc(size_t nmemb, size_t size);
56 void free(void * ptr);
58 void * malloc(size_t size);
60 void * realloc(void * ptr, size_t size);
62 long int strtol(const char * nptr, char ** endptr, int base);
64 long long int strtoll(const char * nptr, char ** endptr, int base);
66 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
68 typedef __builtin_va_list va_list;
70 extern int runtimePlatform;
79 void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2)
83 for(c = 0; string[c]; c++)
88 void __ecereNameSpace__ecere__sys__RepeatCh(char * string, int count, char ch)
92 for(c = 0; c < count; c++)
97 unsigned int __ecereNameSpace__ecere__sys__GetString(char ** buffer, char * string, int max)
101 unsigned int quoted = 0;
102 unsigned int result = 1;
111 if(!(ch = *((*buffer)++)))
113 if((ch != '\n') && (ch != '\r') && (ch != ' ') && (ch != ',') && (ch != '\t'))
120 for(c = 0; c < max - 1; c++)
122 if(!quoted && ((ch == '\n') || (ch == '\r') || (ch == ' ') || (ch == ',') || (ch == '\t')))
129 quoted ^= (unsigned int)1;
134 if(!(ch = *(*buffer)))
146 struct __ecereNameSpace__ecere__sys__ZString
156 struct __ecereNameSpace__ecere__sys__BTNode;
158 struct __ecereNameSpace__ecere__sys__OldList
167 struct __ecereNameSpace__ecere__com__DataValue
182 } ecere_gcc_struct __anon1;
185 struct __ecereNameSpace__ecere__com__SerialBuffer
187 unsigned char * _buffer;
193 extern void * __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
195 extern void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
197 extern void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size);
199 extern void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size);
201 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory);
203 extern size_t strlen(const char * );
205 extern char * strcpy(char * , const char * );
207 extern int strcmp(const char * , const char * );
209 extern void * memmove(void * , const void * , size_t size);
211 extern char * strncpy(char * , const char * , size_t n);
213 extern char * strstr(const char * , const char * );
215 extern void * memcpy(void * , const void * , size_t size);
217 extern int toupper(int);
219 extern char * strcat(char * , const char * );
221 extern int sprintf(char * , const char * , ...);
223 extern int strcasecmp(const char * , const char * );
225 extern int strncmp(const char * , const char * , size_t n);
227 extern int strncasecmp(const char * , const char * , size_t n);
229 extern int tolower(int);
231 extern int isalnum(int c);
233 extern char * strchr(const char * , int);
235 extern int atoi(const char * );
237 extern unsigned long strtoul(const char * nptr, char * * endptr, int base);
239 extern unsigned int isdigit(int);
241 extern int vsnprintf(char * , size_t, const char * , __builtin_va_list);
243 struct __ecereNameSpace__ecere__com__DefinedExpression;
245 struct __ecereNameSpace__ecere__com__GlobalFunction;
247 unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string)
251 for(c = strlen(string); c >= 0; c--)
257 else if(string[c] == '\\' || string[c] == '/')
262 char * __ecereNameSpace__ecere__sys__GetExtension(const char * string, char * output)
266 int len = strlen(string);
267 int limit = (__simpleStruct0 = len - (17), (0 > __simpleStruct0) ? 0 : __simpleStruct0);
270 for(c = len; c >= limit; c--)
276 strcpy(output, string + c + 1);
279 else if(ch == '/' || ch == '\\')
285 char * __ecereNameSpace__ecere__sys__StripLastDirectory(const char * string, char * output)
289 if(runtimePlatform == 1 && !strcmp(string, "\\\\"))
296 int len = strlen(string);
298 for(c = len - 2; c >= 0; c--)
299 if(string[c] == '/' || string[c] == '\\')
301 else if(string[c] == '>' || (string[c] == ':' && c == 0))
306 if((runtimePlatform == 1) ? (c >= 0) : (c > 0))
308 memmove(output, string, c);
311 if(runtimePlatform == 1 && c == 1 && output[0] == '\\' && output[1] == '\\')
317 strcpy(output, ((__runtimePlatform == 1) ? "\\" : "/"));
324 strcpy(output, ((__runtimePlatform == 1) ? "\\" : "/"));
330 return (((void *)0));
336 char * __ecereNameSpace__ecere__sys__SplitDirectory(const char * string, char * part, char * rest)
342 for(; (ch = string[c]) && (ch == '/' || ch == '\\'); c++)
345 part[len++] = ((__runtimePlatform == 1) ? '\\' : '/');
348 for(; (ch = string[c]) && (ch != '/' && ch != '\\'); c++)
354 for(; (ch = string[c]) && (ch == '/' || ch == '\\'); c++)
356 memmove(rest, string + c, strlen(string + c) + 1);
357 for(c = strlen(rest); c >= 0; c--)
358 if(ch != '/' && ch != '\\')
366 char * __ecereNameSpace__ecere__sys__GetLastDirectory(const char * string, char * output)
369 int len = string ? strlen(string) : 0;
371 for(c = len - 2; c >= 0; c--)
372 if(string[c] == '/' || string[c] == '\\' || string[c] == ':' || string[c] == '>')
376 memmove(output, string + c, strlen(string + c) + 1);
379 len = strlen(output);
380 if(len > 1 && (output[len - 1] == '\\' || output[len - 1] == '/'))
381 output[len - 1] = '\0';
385 char * __ecereNameSpace__ecere__sys__TrimLSpaces(const char * string, char * output)
389 for(c = 0; string[c] && string[c] == ' '; c++)
391 memmove(output, string + c, strlen(string + c) + 1);
395 char * __ecereNameSpace__ecere__sys__TrimRSpaces(const char * string, char * output)
399 for(c = strlen(string) - 1; c >= 0 && string[c] == ' '; c--)
403 memmove(output, string, c + 1);
404 output[c + 1] = '\0';
411 char * __ecereNameSpace__ecere__sys__StripQuotes(const char * string, char * output)
414 const char * src = (string[0] == '\"') ? (string + 1) : string;
416 memmove(output, src, strlen(src) + 1);
417 len = strlen(output);
418 if(len && output[len - 1] == '\"')
419 output[len - 1] = '\0';
423 unsigned int __ecereNameSpace__ecere__sys__SplitArchivePath(const char * fileName, char * archiveName, const char ** archiveFile)
425 if(fileName[0] == '<')
427 int c = strlen(fileName);
429 for(; c > 0 && fileName[c] != '>'; c--)
433 strncpy(archiveName, fileName + 1, c - 1);
434 archiveName[c - 1] = '\0';
435 *archiveFile = fileName + c + 1;
439 else if(fileName[0] == ':')
441 strcpy(archiveName, ":");
442 *archiveFile = fileName + 1;
448 char * __ecereNameSpace__ecere__sys__CopyString(const char * string)
452 int len = strlen(string);
453 char * destination = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len + 1));
456 memcpy(destination, string, len + 1);
460 return (((void *)0));
463 void __ecereNameSpace__ecere__sys__PrintSize(char * string, unsigned int size, int prec)
469 sprintf(format, "%%.0%df", prec);
470 if(size > 1024 * 1024 * 1024)
472 sprintf(string, format, (float)size / (float)((float)(float)(1024 * 1024 * 1024)));
473 strcat(string, " GB");
475 else if(size > 1024 * 1024)
477 sprintf(string, format, (float)size / (float)((float)(float)(1024 * 1024)));
478 strcat(string, " MB");
482 sprintf(string, format, (float)size / (float)1024);
483 strcat(string, " KB");
487 sprintf(string, "%d B", size);
490 void __ecereNameSpace__ecere__sys__PrintBigSize(char * string, double size, int prec)
492 if(size > (double)1024)
496 sprintf(format, "%%.0%df", prec);
497 if(size > 1024.0 * 1024.0 * 1024.0 * 1024.0)
499 sprintf(string, format, size / ((double)(double)(1024 * 1024) * 1024.0 * 1024.0));
500 strcat(string, " TB");
502 else if(size > 1024.0 * 1024.0 * 1024.0)
504 sprintf(string, format, size / (1024.0 * 1024.0 * 1024.0));
505 strcat(string, " GB");
507 else if(size > 1024.0 * 1024.0)
509 sprintf(string, format, size / (1024.0 * 1024.0));
510 strcat(string, " MB");
514 sprintf(string, format, size / 1024.0);
515 strcat(string, " KB");
519 sprintf(string, "%.0f B", size);
522 char * __ecereNameSpace__ecere__sys__SearchString(const char * buffer, int start, const char * subStr, unsigned int matchCase, unsigned int matchWord)
527 const char * strBuffer = buffer + start;
528 int subLen = strlen(subStr);
529 char beforeChar = start ? *(strBuffer - 1) : 0;
530 int (* strcompare)(const char *, const char *, size_t) = (void *)(matchCase ? (void *)(strncmp) : ((void *)(strncasecmp)));
532 for(ptr = strBuffer; *ptr; ptr++)
534 if(matchCase ? (*subStr == *ptr) : (tolower(*subStr) == tolower(*ptr)))
538 if(!strcompare(ptr, subStr, subLen) && (!((subStr[subLen - 1]) == '_' || isalnum((subStr[subLen - 1]))) || !((ptr[subLen]) == '_' || isalnum((ptr[subLen])))) && (!((subStr[0]) == '_' || isalnum((subStr[0]))) || !((beforeChar) == '_' || isalnum((beforeChar)))))
543 if(!strcompare(ptr, subStr, subLen))
550 return (((void *)0));
553 char * __ecereNameSpace__ecere__sys__RSearchString(const char * buffer, const char * subStr, int maxLen, unsigned int matchCase, unsigned int matchWord)
557 int subLen = strlen(subStr);
558 const char * ptr1 = buffer + maxLen - subLen;
559 const char * ptr2 = buffer + maxLen - subLen - 1;
560 int (* strcompare)(const char *, const char *, size_t) = (void *)(matchCase ? (void *)(strncmp) : ((void *)(strncasecmp)));
562 for(; ptr1 >= buffer; ptr1--, ptr2--)
564 if(tolower(*subStr) == tolower(*ptr1))
568 if(!strcompare(ptr1, subStr, subLen) && (!((subStr[subLen - 1]) == '_' || isalnum((subStr[subLen - 1]))) || !((ptr1[subLen]) == '_' || isalnum((ptr1[subLen])))) && (!((subStr[0]) == '_' || isalnum((subStr[0]))) || !((*ptr2) == '_' || isalnum((*ptr2)))))
573 if(!strcompare(ptr1, subStr, subLen))
579 return (((void *)0));
582 int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char * tokens[], unsigned int esc)
584 const char * escChars, * escCharsQuoted;
586 unsigned int quoted = 0, escaped = 0;
587 char * start = (((void *)0)), * output = string;
590 if(__runtimePlatform == 1)
592 escChars = " !\"%&'()+,;=[]^`{}~";
593 escCharsQuoted = "\"";
597 escChars = " !\"$&'()*:;<=>?[\\`{|";
598 escCharsQuoted = "\"()$";
600 for(; (ch = *string) && count < maxTokens; string++, output++)
602 unsigned int wasEscaped = escaped;
619 else if(ch == ' ' && !quoted)
621 tokens[count++] = start;
623 start = (((void *)0));
636 if(!wasEscaped && ch == '\\' && (esc == 1 || (esc == 2 && strchr(quoted ? escCharsQuoted : escChars, *(string + 1)))))
639 if(start && count < maxTokens)
641 tokens[count++] = start;
647 int __ecereNameSpace__ecere__sys__TokenizeWith(char * string, int maxTokens, char * tokens[], const char * tokenizers, unsigned int escapeBackSlashes)
650 unsigned int quoted = 0;
651 char * start = (((void *)0));
652 unsigned int escaped = 0;
653 char * output = string;
654 unsigned int quotedFromStart = 0;
656 for(; *string && count < maxTokens; string++, output++)
669 else if(escapeBackSlashes && *string == '\\')
671 else if(*string == '\"')
683 else if(strchr(tokenizers, *string) && !quoted)
685 tokens[count++] = start;
687 start = (((void *)0));
690 else if(!strchr(tokenizers, *string))
701 if(*string == '\\' && escapeBackSlashes)
706 if(start && count < maxTokens)
708 tokens[count++] = start;
714 void __ecereNameSpace__ecere__sys__ChangeChars(char * string, const char * chars, char alt)
718 for(c = 0; string[c]; c++)
719 if(strchr(chars, string[c]))
723 int __ecereNameSpace__ecere__sys__GetValue(char ** buffer)
727 __ecereNameSpace__ecere__sys__GetString(buffer, string, 20);
731 unsigned int __ecereNameSpace__ecere__sys__GetHexValue(char ** buffer)
735 __ecereNameSpace__ecere__sys__GetString(buffer, string, 20);
736 return (unsigned int)strtoul(string, (((void *)0)), 16);
739 double __ecereNameSpace__ecere__sys__FloatFromString(const char * string)
742 float dec = 0, res = 0;
746 for(c = 0; string[c]; c++)
757 else if((ch == '.') && !dec)
764 res += (float)dig / dec;
768 res = res * (float)10 + (float)dig;
773 return (float)neg * res;
776 char * __ecereNameSpace__ecere__sys__ChangeExtension(const char * string, const char * ext, char * output)
779 strcpy(output, string);
780 __ecereNameSpace__ecere__sys__StripExtension(output);
787 unsigned int __ecereNameSpace__ecere__sys__IsPathInsideOf(const char * path, const char * of)
789 if(!path[0] || !of[0])
793 char ofPart[274], ofRest[797];
794 char pathPart[274], pathRest[797];
797 strcpy(pathRest, path);
798 for(; ofRest[0] && pathRest[0]; )
800 __ecereNameSpace__ecere__sys__SplitDirectory(ofRest, ofPart, ofRest);
801 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
802 if(((__runtimePlatform == 1) ? (strcasecmp) : strcmp)(pathPart, ofPart))
805 if(!ofRest[0] && !pathRest[0])
807 else if(!pathRest[0])
813 char * __ecereNameSpace__ecere__sys__PathCatSlash(char * string, const char * addedPath)
815 unsigned int modified = 0;
819 char fileName[797] = "", archiveName[797] = "";
820 const char * file = (((void *)0));
822 unsigned int isURL = 0;
823 unsigned int isArchive = __ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file);
824 char * urlFileName = (((void *)0));
825 char * protocolSymbol;
827 strcpy(fileName, isArchive ? file : string);
830 protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
833 char * slash = strstr(protocolSymbol + 3, "/");
839 urlFileName = fileName + strlen(fileName);
842 protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
845 int len = protocolSymbol - addedPath + 3;
847 memcpy(fileName, addedPath, len);
852 else if(__runtimePlatform == 1)
854 if(addedPath[0] && addedPath[1] == ':' && addedPath[0] != '<')
856 fileName[0] = (char)toupper(addedPath[0]);
862 else if(addedPath[0] == '\\' && addedPath[1] == '\\')
864 fileName[0] = fileName[1] = '\\';
870 if(!modified && isURL && (addedPath[0] == '\\' || addedPath[0] == '/'))
872 urlFileName[0] = '/';
873 urlFileName[1] = '\0';
875 else if(!modified && (addedPath[0] == '\\' || addedPath[0] == '/'))
877 if(__runtimePlatform == 1)
879 if(addedPath[0] == '/' && !addedPath[1])
881 fileName[0] = addedPath[0];
885 else if(fileName[0] && fileName[1] == ':')
905 for(; addedPath[c]; )
907 char directory[4384];
912 for(; (ch = addedPath[c]) && (ch == '/' || ch == '\\'); c++)
914 for(; (ch = addedPath[c]) && (ch != '/' && ch != '\\'); c++)
916 if(isURL && ch == '?')
921 directory[len++] = ch;
923 directory[len] = '\0';
924 for(count = len - 1; count >= 0 && (directory[count] == ' ' || directory[count] == '\t'); count--)
926 directory[count] = '\0';
932 if(strstr(directory, "..") == directory && (!directory[2] || directory[2] == ((__runtimePlatform == 1) ? '\\' : '/') || directory[2] == '/'))
934 int strLen = strlen(fileName) - 1;
938 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
940 for(; strLen > -1 && (ch = fileName[strLen]) && (ch != '/' && ch != '\\' && ch != ':'); strLen--)
942 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
948 strLen = (__simpleStruct0 = urlFileName - fileName, (strLen > __simpleStruct0) ? strLen : __simpleStruct0);
950 if(!strcmp(fileName + strLen + 1, ".."))
952 strcat(fileName, "/");
953 strcat(fileName, "..");
957 if(__runtimePlatform == 1)
959 if(!strLen && fileName[0] == '\\' && fileName[1] == '\\')
962 return (((void *)0));
971 fileName[strLen + 1] = '\0';
975 fileName[strLen + 1] = '\0';
987 strcpy(fileName, "..");
990 else if(strcmp(directory, "."))
992 int strLen = strlen(fileName);
993 unsigned int notZeroLen = strLen > 0;
995 if(strLen > 0 && (fileName[strLen - 1] == '/' || fileName[strLen - 1] == '\\'))
998 fileName[strLen++] = '/';
999 fileName[strLen] = '\0';
1000 if(strLen + strlen(directory) > (797) - 3)
1001 return (((void *)0));
1002 strcat(fileName, directory);
1005 if(isURL && ch == '/')
1006 strcat(fileName, "/");
1007 if(isURL && ch == '?')
1009 strcat(fileName, addedPath + c);
1014 sprintf(string, "<%s>%s", archiveName, fileName);
1016 strcpy(string, fileName);
1018 return modified ? string : (((void *)0));
1021 char * __ecereNameSpace__ecere__sys__PathCat(char * string, const char * addedPath)
1023 unsigned int modified = 0;
1027 char fileName[797] = "", archiveName[797] = "";
1028 const char * file = (((void *)0));
1030 unsigned int isURL = 0;
1031 unsigned int isArchive = __ecereNameSpace__ecere__sys__SplitArchivePath(string, archiveName, &file);
1032 char * urlFileName = (((void *)0));
1033 char * protocolSymbol;
1035 strcpy(fileName, isArchive ? file : string);
1038 protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
1041 char * slash = strstr(protocolSymbol + 3, "/");
1045 urlFileName = slash;
1047 urlFileName = fileName + strlen(fileName);
1050 protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
1053 int len = protocolSymbol - addedPath + 3;
1055 memcpy(fileName, addedPath, len);
1060 else if(runtimePlatform == 1)
1062 if(addedPath[0] && addedPath[1] == ':' && addedPath[0] != '<')
1064 fileName[0] = (char)toupper(addedPath[0]);
1070 else if(addedPath[0] == '\\' && addedPath[1] == '\\')
1072 fileName[0] = fileName[1] = '\\';
1077 else if(fileName[0] == '/' && !archiveName[0] && strcmp(addedPath, "/"))
1078 return (((void *)0));
1080 if(!modified && isURL && (addedPath[0] == '\\' || addedPath[0] == '/'))
1082 urlFileName[0] = '/';
1083 urlFileName[1] = '\0';
1085 else if(!modified && (addedPath[0] == '\\' || addedPath[0] == '/'))
1087 if(runtimePlatform == 1)
1089 if(addedPath[0] == '/' && !addedPath[1])
1091 fileName[0] = addedPath[0];
1095 else if(fileName[0] && fileName[1] == ':')
1115 for(; addedPath[c]; )
1117 char directory[4384];
1122 for(; (ch = addedPath[c]) && (ch == '/' || ch == '\\'); c++)
1124 for(; (ch = addedPath[c]) && (ch != '/' && ch != '\\'); c++)
1126 if(isURL && ch == '?')
1131 directory[len++] = ch;
1133 directory[len] = '\0';
1134 for(count = len - 1; count >= 0 && (directory[count] == ' ' || directory[count] == '\t'); count--)
1136 directory[count] = '\0';
1142 if(strstr(directory, "..") == directory && (!directory[2] || directory[2] == ((__runtimePlatform == 1) ? '\\' : '/')))
1144 int strLen = strlen(fileName) - 1;
1148 unsigned int separator = 0;
1150 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
1152 for(; strLen > -1 && (ch = fileName[strLen]) && (ch != '/' && ch != '\\' && ch != ':'); strLen--)
1154 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
1158 int __simpleStruct0;
1160 strLen = (__simpleStruct0 = urlFileName - fileName, (strLen > __simpleStruct0) ? strLen : __simpleStruct0);
1162 if(!strcmp(fileName + strLen + (separator ? 2 : 1), ".."))
1164 strcat(fileName, ((__runtimePlatform == 1) ? "\\" : "/"));
1165 strcat(fileName, "..");
1169 if(runtimePlatform == 1)
1171 if(!strLen && fileName[0] == '\\' && fileName[1] == '\\')
1174 return (((void *)0));
1183 fileName[strLen + 1] = '\0';
1187 fileName[strLen + 1] = '\0';
1199 strcpy(fileName, "..");
1202 else if(strcmp(directory, "."))
1204 int strLen = strlen(fileName);
1205 unsigned int notZeroLen = strLen > 0;
1207 if(strLen > 0 && (fileName[strLen - 1] == '/' || fileName[strLen - 1] == '\\'))
1212 fileName[strLen++] = '/';
1214 fileName[strLen++] = ((__runtimePlatform == 1) ? '\\' : '/');
1216 fileName[strLen] = '\0';
1217 if(strLen + strlen(directory) > (797) - 3)
1218 return (((void *)0));
1219 strcat(fileName, directory);
1222 if(isURL && ch == '/')
1223 strcat(fileName, "/");
1224 if(isURL && ch == '?')
1226 strcat(fileName, addedPath + c);
1231 sprintf(string, "<%s>%s", archiveName, fileName);
1233 strcpy(string, fileName);
1235 return modified ? string : (((void *)0));
1238 char * __ecereNameSpace__ecere__sys__MakePathRelative(const char * path, const char * to, char * destination)
1243 memmove(destination, path, strlen(path) + 1);
1246 char pathPart[4384], pathRest[797];
1247 char toPart[4384], toRest[797];
1248 unsigned int different = 0;
1250 strcpy(pathRest, path);
1252 destination[0] = '\0';
1255 __ecereNameSpace__ecere__sys__SplitDirectory(toRest, toPart, toRest);
1257 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
1258 if(different || ((__runtimePlatform == 1) ? (strcasecmp) : strcmp)(toPart, pathPart))
1261 strcat(destination, "..");
1262 strcat(destination, ((__runtimePlatform == 1) ? "\\" : "/"));
1266 __ecereNameSpace__ecere__sys__PathCat(destination, pathPart);
1267 for(; pathRest[0]; )
1269 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
1270 __ecereNameSpace__ecere__sys__PathCat(destination, pathPart);
1273 len = strlen(destination);
1274 if(len > 1 && (destination[len - 1] == '/' || destination[len - 1] == '\\'))
1275 destination[--len] = '\0';
1279 struct __ecereNameSpace__ecere__com__Property;
1281 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_string, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_string;
1283 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_char__PTR_;
1285 struct __ecereNameSpace__ecere__com__Class;
1287 struct __ecereNameSpace__ecere__com__Instance
1290 struct __ecereNameSpace__ecere__com__Class * _class;
1294 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name);
1296 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, long long value);
1298 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char * string, long long value);
1300 extern struct __ecereNameSpace__ecere__com__Property * __ecereNameSpace__ecere__com__eClass_AddProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char * name, const char * dataType, void * setStmt, void * getStmt, int declMode);
1302 extern void * __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1304 struct __ecereNameSpace__ecere__com__Property
1306 struct __ecereNameSpace__ecere__com__Property * prev;
1307 struct __ecereNameSpace__ecere__com__Property * next;
1309 unsigned int isProperty;
1312 struct __ecereNameSpace__ecere__com__Class * _class;
1313 const char * dataTypeString;
1314 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1315 struct __ecereNameSpace__ecere__com__Instance * dataType;
1316 void (* Set)(void * , int);
1317 int (* Get)(void * );
1318 unsigned int (* IsSet)(void * );
1322 unsigned int conversion;
1323 unsigned int watcherOffset;
1324 const char * category;
1325 unsigned int compiled;
1326 unsigned int selfWatchable;
1327 unsigned int isWatchable;
1330 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
1332 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char * name, void * function);
1334 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
1336 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);
1338 extern void __ecereNameSpace__ecere__com__eInstance_Watch(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property, void * object, void (* callback)(void * , void * ));
1340 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
1342 char * __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(struct __ecereNameSpace__ecere__com__Instance * this);
1344 void __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string(struct __ecereNameSpace__ecere__com__Instance * this, char * value);
1346 struct __ecereNameSpace__ecere__sys__BinaryTree;
1348 struct __ecereNameSpace__ecere__sys__BinaryTree
1350 struct __ecereNameSpace__ecere__sys__BTNode * root;
1352 int (* CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
1353 void (* FreeKey)(void * key);
1356 struct __ecereNameSpace__ecere__com__DataMember;
1358 struct __ecereNameSpace__ecere__com__DataMember
1360 struct __ecereNameSpace__ecere__com__DataMember * prev;
1361 struct __ecereNameSpace__ecere__com__DataMember * next;
1363 unsigned int isProperty;
1366 struct __ecereNameSpace__ecere__com__Class * _class;
1367 const char * dataTypeString;
1368 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1369 struct __ecereNameSpace__ecere__com__Instance * dataType;
1373 struct __ecereNameSpace__ecere__sys__OldList members;
1374 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1376 short structAlignment;
1377 short pointerAlignment;
1380 extern 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);
1382 struct __ecereNameSpace__ecere__com__Method;
1384 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1390 const char * dataTypeString;
1391 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1392 } ecere_gcc_struct __anon1;
1393 struct __ecereNameSpace__ecere__com__DataValue expression;
1396 const char * memberString;
1399 struct __ecereNameSpace__ecere__com__DataMember * member;
1400 struct __ecereNameSpace__ecere__com__Property * prop;
1401 struct __ecereNameSpace__ecere__com__Method * method;
1402 } ecere_gcc_struct __anon1;
1403 } ecere_gcc_struct __anon2;
1404 } ecere_gcc_struct __anon1;
1407 struct __ecereNameSpace__ecere__com__Method
1410 struct __ecereNameSpace__ecere__com__Method * parent;
1411 struct __ecereNameSpace__ecere__com__Method * left;
1412 struct __ecereNameSpace__ecere__com__Method * right;
1417 struct __ecereNameSpace__ecere__com__Class * _class;
1419 const char * dataTypeString;
1420 struct __ecereNameSpace__ecere__com__Instance * dataType;
1424 extern 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);
1426 struct __ecereNameSpace__ecere__com__Module;
1428 extern struct __ecereNameSpace__ecere__com__DefinedExpression * __ecereNameSpace__ecere__com__eSystem_RegisterDefine(const char * name, const char * value, struct __ecereNameSpace__ecere__com__Instance * module, int declMode);
1430 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);
1432 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);
1434 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1436 struct __ecereNameSpace__ecere__com__NameSpace;
1438 struct __ecereNameSpace__ecere__com__NameSpace
1441 struct __ecereNameSpace__ecere__com__NameSpace * btParent;
1442 struct __ecereNameSpace__ecere__com__NameSpace * left;
1443 struct __ecereNameSpace__ecere__com__NameSpace * right;
1445 struct __ecereNameSpace__ecere__com__NameSpace * parent;
1446 struct __ecereNameSpace__ecere__sys__BinaryTree nameSpaces;
1447 struct __ecereNameSpace__ecere__sys__BinaryTree classes;
1448 struct __ecereNameSpace__ecere__sys__BinaryTree defines;
1449 struct __ecereNameSpace__ecere__sys__BinaryTree functions;
1452 struct __ecereNameSpace__ecere__com__Class
1454 struct __ecereNameSpace__ecere__com__Class * prev;
1455 struct __ecereNameSpace__ecere__com__Class * next;
1461 unsigned int (* Constructor)(void * );
1462 void (* Destructor)(void * );
1465 struct __ecereNameSpace__ecere__com__Class * base;
1466 struct __ecereNameSpace__ecere__sys__BinaryTree methods;
1467 struct __ecereNameSpace__ecere__sys__BinaryTree members;
1468 struct __ecereNameSpace__ecere__sys__BinaryTree prop;
1469 struct __ecereNameSpace__ecere__sys__OldList membersAndProperties;
1470 struct __ecereNameSpace__ecere__sys__BinaryTree classProperties;
1471 struct __ecereNameSpace__ecere__sys__OldList derivatives;
1475 struct __ecereNameSpace__ecere__com__Instance * module;
1476 struct __ecereNameSpace__ecere__com__NameSpace * nameSpace;
1477 const char * dataTypeString;
1478 struct __ecereNameSpace__ecere__com__Instance * dataType;
1480 int defaultAlignment;
1481 void (* Initialize)();
1483 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1484 const char * designerClass;
1485 unsigned int noExpansion;
1486 const char * defaultProperty;
1487 unsigned int comRedefinition;
1490 unsigned int internalDecl;
1492 unsigned int computeSize;
1493 short structAlignment;
1494 short pointerAlignment;
1495 int destructionWatchOffset;
1497 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1498 int inheritanceAccess;
1499 const char * fullName;
1501 struct __ecereNameSpace__ecere__sys__OldList conversions;
1502 struct __ecereNameSpace__ecere__sys__OldList templateParams;
1503 struct __ecereNameSpace__ecere__com__ClassTemplateArgument * templateArgs;
1504 struct __ecereNameSpace__ecere__com__Class * templateClass;
1505 struct __ecereNameSpace__ecere__sys__OldList templatized;
1507 unsigned int isInstanceClass;
1508 unsigned int byValueSystemClass;
1509 void * bindingsClass;
1512 struct __ecereNameSpace__ecere__com__Application
1515 const char * * argv;
1517 unsigned int isGUIApp;
1518 struct __ecereNameSpace__ecere__sys__OldList allModules;
1519 char * parsedCommand;
1520 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1523 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BackSlashEscaping;
1525 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__StringAllocType;
1527 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__ZString;
1529 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
1531 struct __ecereNameSpace__ecere__com__Module
1533 struct __ecereNameSpace__ecere__com__Instance * application;
1534 struct __ecereNameSpace__ecere__sys__OldList classes;
1535 struct __ecereNameSpace__ecere__sys__OldList defines;
1536 struct __ecereNameSpace__ecere__sys__OldList functions;
1537 struct __ecereNameSpace__ecere__sys__OldList modules;
1538 struct __ecereNameSpace__ecere__com__Instance * prev;
1539 struct __ecereNameSpace__ecere__com__Instance * next;
1545 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
1546 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
1549 unsigned int __ecereConstructor___ecereNameSpace__ecere__sys__ZString(struct __ecereNameSpace__ecere__com__Instance * this)
1551 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1554 __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize = (((int)0x7fffffff));
1559 void __ecereDestructor___ecereNameSpace__ecere__sys__ZString(struct __ecereNameSpace__ecere__com__Instance * this)
1561 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1564 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 2)
1565 (__ecereNameSpace__ecere__com__eSystem_Delete(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string), __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = 0);
1569 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_copyString(struct __ecereNameSpace__ecere__com__Instance * this, char * value, int newLen)
1571 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1573 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 0)
1575 __ecerePointer___ecereNameSpace__ecere__sys__ZString->size = 0;
1576 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = (((void *)0));
1577 __ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType = 2;
1579 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 2)
1581 int newSize = newLen ? newLen + 1 : 0;
1583 if(newSize != __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1585 if(newSize < __ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize)
1586 newSize = __ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize;
1587 else if(newSize > __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize)
1588 newSize = __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize;
1589 if(newSize && __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1590 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = __ecereNameSpace__ecere__com__eSystem_Renew(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string, sizeof(char) * (newSize));
1592 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (newSize));
1594 (__ecereNameSpace__ecere__com__eSystem_Delete(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string), __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = 0);
1595 __ecerePointer___ecereNameSpace__ecere__sys__ZString->size = newSize;
1598 if(newLen + 1 > __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1599 newLen = __ecerePointer___ecereNameSpace__ecere__sys__ZString->size - 1;
1600 __ecerePointer___ecereNameSpace__ecere__sys__ZString->len = newLen;
1603 memcpy(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string, value, newLen);
1604 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string[newLen] = 0;
1608 const char * __ecereMethod___ecereNameSpace__ecere__sys__ZString_OnGetString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, char * tempString, void * fieldData, unsigned int * needClass)
1610 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1612 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1615 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__ZString_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance ** this, const char * string)
1617 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1619 __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string((*this), (char *)string);
1623 char * __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(struct __ecereNameSpace__ecere__com__Instance * this)
1625 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1627 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1630 const char * __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Instance * this)
1632 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1634 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1637 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_concatf(struct __ecereNameSpace__ecere__com__Instance * this, const char * format, ...)
1639 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1641 if(format && __ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType != 0)
1643 int __simpleStruct0;
1647 __builtin_va_start(args, format);
1648 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->size < __ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize)
1650 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = __ecereNameSpace__ecere__com__eSystem_Renew(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string, sizeof(char) * (__ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize));
1651 __ecerePointer___ecereNameSpace__ecere__sys__ZString->size = __ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize;
1653 addedLen = vsnprintf(__ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(this) + __ecerePointer___ecereNameSpace__ecere__sys__ZString->len, (__simpleStruct0 = __ecerePointer___ecereNameSpace__ecere__sys__ZString->size - 1 - __ecerePointer___ecereNameSpace__ecere__sys__ZString->len, (0 > __simpleStruct0) ? 0 : __simpleStruct0), format, args);
1656 __ecerePointer___ecereNameSpace__ecere__sys__ZString->len += addedLen;
1657 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string[__ecerePointer___ecereNameSpace__ecere__sys__ZString->len] = 0;
1659 __builtin_va_end(args);
1663 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_concat(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * s)
1665 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1667 if(s && __ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType != 0)
1669 int addedLen = ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)s + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->len;
1670 int newLen = __ecerePointer___ecereNameSpace__ecere__sys__ZString->len + addedLen;
1672 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 2 && newLen + 1 > __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1674 int newSize = newLen + 1;
1676 if(newSize > __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize)
1677 newSize = __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize;
1678 if(newSize > __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1680 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = __ecereNameSpace__ecere__com__eSystem_Renew(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string, sizeof(char) * (newLen));
1681 __ecerePointer___ecereNameSpace__ecere__sys__ZString->size = newSize;
1684 if(newLen + 1 > __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1685 addedLen = __ecerePointer___ecereNameSpace__ecere__sys__ZString->size - 1 - __ecerePointer___ecereNameSpace__ecere__sys__ZString->len;
1688 memcpy(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string + __ecerePointer___ecereNameSpace__ecere__sys__ZString->len, ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)s + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->_string, addedLen);
1689 __ecerePointer___ecereNameSpace__ecere__sys__ZString->len += addedLen;
1690 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string[__ecerePointer___ecereNameSpace__ecere__sys__ZString->len] = 0;
1695 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_char__PTR_(const char * value)
1697 return __extension__ ({
1698 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__ZString);
1700 ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)__ecereInstance1 + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->len = value ? strlen(value) : 0, ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)__ecereInstance1 + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->_string = (char *)value, ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)__ecereInstance1 + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->allocType = 0, __ecereInstance1;
1704 void __ecereUnregisterModule_String(struct __ecereNameSpace__ecere__com__Instance * module)
1707 __ecerePropM___ecereNameSpace__ecere__sys__ZString_string = (void *)0;
1710 void __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string(struct __ecereNameSpace__ecere__com__Instance * this, char * value)
1712 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1714 __ecereMethod___ecereNameSpace__ecere__sys__ZString_copyString(this, value, value ? strlen(value) : 0);
1715 __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecereProp___ecereNameSpace__ecere__sys__ZString_string), __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(this, __ecerePropM___ecereNameSpace__ecere__sys__ZString_string);
1718 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * s)
1720 __attribute__((unused)) struct __ecereNameSpace__ecere__sys__ZString * __ecerePointer___ecereNameSpace__ecere__sys__ZString = (struct __ecereNameSpace__ecere__sys__ZString *)(this ? (((char *)this) + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset) : 0);
1722 __ecereMethod___ecereNameSpace__ecere__sys__ZString_copyString(this, ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)s + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->_string, ((struct __ecereNameSpace__ecere__sys__ZString *)(((char *)s + __ecereClass___ecereNameSpace__ecere__sys__ZString->offset)))->len);
1725 void __ecereRegisterModule_String(struct __ecereNameSpace__ecere__com__Instance * module)
1727 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
1729 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::DIR_SEP", "(__runtimePlatform == win32) ? '\\\\' : '/'", module, 4);
1730 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::DIR_SEPS", "(__runtimePlatform == win32) ? \"\\\\\" : \"/\"", module, 4);
1731 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_F_STRING", "1025", module, 4);
1732 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_EXTENSION", "17", module, 4);
1733 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_FILENAME", "274", module, 4);
1734 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_DIRECTORY", "534", module, 4);
1735 __ecereNameSpace__ecere__com__eSystem_RegisterDefine("ecere::sys::MAX_LOCATION", "797", module, 4);
1736 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetExtension", "char * ecere::sys::GetExtension(const char * string, char * output)", __ecereNameSpace__ecere__sys__GetExtension, module, 4);
1737 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::StripLastDirectory", "char * ecere::sys::StripLastDirectory(const char * string, char * output)", __ecereNameSpace__ecere__sys__StripLastDirectory, module, 4);
1738 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SplitDirectory", "char * ecere::sys::SplitDirectory(const char * string, char * part, char * rest)", __ecereNameSpace__ecere__sys__SplitDirectory, module, 4);
1739 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetLastDirectory", "char * ecere::sys::GetLastDirectory(const char * string, char * output)", __ecereNameSpace__ecere__sys__GetLastDirectory, module, 4);
1740 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SplitArchivePath", "bool ecere::sys::SplitArchivePath(const char * fileName, char * archiveName, const char * * archiveFile)", __ecereNameSpace__ecere__sys__SplitArchivePath, module, 4);
1741 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PathCatSlash", "char * ecere::sys::PathCatSlash(char * string, const char * addedPath)", __ecereNameSpace__ecere__sys__PathCatSlash, module, 4);
1742 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PathCat", "char * ecere::sys::PathCat(char * string, const char * addedPath)", __ecereNameSpace__ecere__sys__PathCat, module, 4);
1743 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::MakePathRelative", "char * ecere::sys::MakePathRelative(const char * path, const char * to, char * destination)", __ecereNameSpace__ecere__sys__MakePathRelative, module, 4);
1744 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::StripExtension", "bool ecere::sys::StripExtension(char * string)", __ecereNameSpace__ecere__sys__StripExtension, module, 4);
1745 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ChangeExtension", "char * ecere::sys::ChangeExtension(const char * string, const char * ext, char * output)", __ecereNameSpace__ecere__sys__ChangeExtension, module, 4);
1746 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PrintSize", "void ecere::sys::PrintSize(char * string, uint size, int prec)", __ecereNameSpace__ecere__sys__PrintSize, module, 4);
1747 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::PrintBigSize", "void ecere::sys::PrintBigSize(char * string, double size, int prec)", __ecereNameSpace__ecere__sys__PrintBigSize, module, 4);
1748 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::SearchString", "char * ecere::sys::SearchString(const char * buffer, int start, const char * subStr, bool matchCase, bool matchWord)", __ecereNameSpace__ecere__sys__SearchString, module, 4);
1749 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::RSearchString", "char * ecere::sys::RSearchString(const char * buffer, const char * subStr, int maxLen, bool matchCase, bool matchWord)", __ecereNameSpace__ecere__sys__RSearchString, module, 4);
1750 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::sys::BackSlashEscaping", "bool", 0, 0, (void *)0, (void *)0, module, 4, 1);
1751 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)
1752 __ecereClass___ecereNameSpace__ecere__sys__BackSlashEscaping = class;
1753 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "forArgsPassing", 2);
1754 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::Tokenize", "int ecere::sys::Tokenize(char * string, int maxTokens, char * tokens[], ecere::sys::BackSlashEscaping esc)", __ecereNameSpace__ecere__sys__Tokenize, module, 4);
1755 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TokenizeWith", "int ecere::sys::TokenizeWith(char * string, int maxTokens, char * tokens[], const char * tokenizers, bool escapeBackSlashes)", __ecereNameSpace__ecere__sys__TokenizeWith, module, 4);
1756 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TrimLSpaces", "char * ecere::sys::TrimLSpaces(const char * string, char * output)", __ecereNameSpace__ecere__sys__TrimLSpaces, module, 4);
1757 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::TrimRSpaces", "char * ecere::sys::TrimRSpaces(const char * string, char * output)", __ecereNameSpace__ecere__sys__TrimRSpaces, module, 4);
1758 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ChangeCh", "void ecere::sys::ChangeCh(char * string, char ch1, char ch2)", __ecereNameSpace__ecere__sys__ChangeCh, module, 4);
1759 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::ChangeChars", "void ecere::sys::ChangeChars(char * string, const char * chars, char alt)", __ecereNameSpace__ecere__sys__ChangeChars, module, 4);
1760 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::RepeatCh", "void ecere::sys::RepeatCh(char * string, int count, char ch)", __ecereNameSpace__ecere__sys__RepeatCh, module, 4);
1761 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::CopyString", "char * ecere::sys::CopyString(const char * string)", __ecereNameSpace__ecere__sys__CopyString, module, 4);
1762 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetString", "bool ecere::sys::GetString(char * * buffer, char * string, int max)", __ecereNameSpace__ecere__sys__GetString, module, 4);
1763 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetValue", "int ecere::sys::GetValue(char * * buffer)", __ecereNameSpace__ecere__sys__GetValue, module, 4);
1764 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::GetHexValue", "uint ecere::sys::GetHexValue(char * * buffer)", __ecereNameSpace__ecere__sys__GetHexValue, module, 4);
1765 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::StripQuotes", "char * ecere::sys::StripQuotes(const char * string, char * output)", __ecereNameSpace__ecere__sys__StripQuotes, module, 4);
1766 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::FloatFromString", "double ecere::sys::FloatFromString(const char * string)", __ecereNameSpace__ecere__sys__FloatFromString, module, 4);
1767 __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::IsPathInsideOf", "bool ecere::sys::IsPathInsideOf(const char * path, const char * of)", __ecereNameSpace__ecere__sys__IsPathInsideOf, module, 4);
1768 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "ecere::sys::StringAllocType", 0, 0, 0, (void *)0, (void *)0, module, 4, 1);
1769 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)
1770 __ecereClass___ecereNameSpace__ecere__sys__StringAllocType = class;
1771 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "pointer", 0);
1772 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "stack", 1);
1773 __ecereNameSpace__ecere__com__eEnum_AddFixedValue(class, "heap", 2);
1774 class = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::sys::ZString", 0, sizeof(struct __ecereNameSpace__ecere__sys__ZString), 0, (void *)__ecereConstructor___ecereNameSpace__ecere__sys__ZString, (void *)__ecereDestructor___ecereNameSpace__ecere__sys__ZString, module, 4, 1);
1775 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)
1776 __ecereClass___ecereNameSpace__ecere__sys__ZString = class;
1777 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetString", 0, __ecereMethod___ecereNameSpace__ecere__sys__ZString_OnGetString, 1);
1778 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "OnGetDataFromString", 0, __ecereMethod___ecereNameSpace__ecere__sys__ZString_OnGetDataFromString, 1);
1779 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "concat", "void concat(ecere::sys::ZString s)", __ecereMethod___ecereNameSpace__ecere__sys__ZString_concat, 1);
1780 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "concatf", "void concatf(const char * format, ...)", __ecereMethod___ecereNameSpace__ecere__sys__ZString_concatf, 1);
1781 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "copy", "void copy(ecere::sys::ZString s)", __ecereMethod___ecereNameSpace__ecere__sys__ZString_copy, 1);
1782 __ecereNameSpace__ecere__com__eClass_AddMethod(class, "copyString", "void copyString(char * value, int newLen)", __ecereMethod___ecereNameSpace__ecere__sys__ZString_copyString, 1);
1783 __ecereProp___ecereNameSpace__ecere__sys__ZString_char__PTR_ = __ecereNameSpace__ecere__com__eClass_AddProperty(class, 0, "const char *", __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_char__PTR_, __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_char__PTR_, 1);
1784 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "_string", "char *", sizeof(void *), 0xF000F000, 1);
1785 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "len", "int", 4, 4, 1);
1786 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "allocType", "ecere::sys::StringAllocType", 4, 4, 1);
1787 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "size", "int", 4, 4, 1);
1788 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "minSize", "int", 4, 4, 1);
1789 __ecereNameSpace__ecere__com__eClass_AddDataMember(class, "maxSize", "int", 4, 4, 1);
1790 __ecerePropM___ecereNameSpace__ecere__sys__ZString_string = __ecereNameSpace__ecere__com__eClass_AddProperty(class, "string", "char *", __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string, __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string, 1);
1791 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)
1792 __ecereProp___ecereNameSpace__ecere__sys__ZString_string = __ecerePropM___ecereNameSpace__ecere__sys__ZString_string, __ecerePropM___ecereNameSpace__ecere__sys__ZString_string = (void *)0;