a572fc7dc7b75cdc7cb48d73d39f8a3710fd8181
[sdk] / compiler / bootstrap / ecere / bootstrap / String.c
1 /* Code generated from eC source file: String.ec */
2 #if defined(_WIN32)
3 #define __runtimePlatform 1
4 #elif defined(__APPLE__)
5 #define __runtimePlatform 3
6 #else
7 #define __runtimePlatform 2
8 #endif
9 #if defined(__GNUC__)
10 typedef long long int64;
11 typedef unsigned long long uint64;
12 #ifndef _WIN32
13 #define __declspec(x)
14 #endif
15 #elif defined(__TINYC__)
16 #include <stdarg.h>
17 #define __builtin_va_list va_list
18 #define __builtin_va_start va_start
19 #define __builtin_va_end va_end
20 #ifdef _WIN32
21 #define strcasecmp stricmp
22 #define strncasecmp strnicmp
23 #define __declspec(x) __attribute__((x))
24 #else
25 #define __declspec(x)
26 #endif
27 typedef long long int64;
28 typedef unsigned long long uint64;
29 #else
30 typedef __int64 int64;
31 typedef unsigned __int64 uint64;
32 #endif
33 #ifdef __BIG_ENDIAN__
34 #define __ENDIAN_PAD(x) (8 - (x))
35 #else
36 #define __ENDIAN_PAD(x) 0
37 #endif
38 #if defined(_WIN32)
39 #   if defined(__GNUC__) || defined(__TINYC__)
40 #      define ecere_stdcall __attribute__((__stdcall__))
41 #      define ecere_gcc_struct __attribute__((gcc_struct))
42 #   else
43 #      define ecere_stdcall __stdcall
44 #      define ecere_gcc_struct
45 #   endif
46 #else
47 #   define ecere_stdcall
48 #   define ecere_gcc_struct
49 #endif
50 #include <stdint.h>
51 #include <sys/types.h>
52 void exit(int status);
53
54 void * calloc(size_t nmemb, size_t size);
55
56 void free(void * ptr);
57
58 void * malloc(size_t size);
59
60 void * realloc(void * ptr, size_t size);
61
62 long int strtol(const char * nptr, char ** endptr, int base);
63
64 long long int strtoll(const char * nptr, char ** endptr, int base);
65
66 unsigned long long int strtoull(const char * nptr, char ** endptr, int base);
67
68 typedef __builtin_va_list va_list;
69
70 extern int runtimePlatform;
71
72
73
74
75
76
77
78
79 void __ecereNameSpace__ecere__sys__ChangeCh(char * string, char ch1, char ch2)
80 {
81 int c;
82
83 for(c = 0; string[c]; c++)
84 if(string[c] == ch1)
85 string[c] = ch2;
86 }
87
88 void __ecereNameSpace__ecere__sys__RepeatCh(char * string, int count, char ch)
89 {
90 int c;
91
92 for(c = 0; c < count; c++)
93 string[c] = ch;
94 string[c] = 0;
95 }
96
97 unsigned int __ecereNameSpace__ecere__sys__GetString(char ** buffer, char * string, int max)
98 {
99 int c;
100 char ch;
101 unsigned int quoted = 0;
102 unsigned int result = 1;
103
104 if(!* *buffer)
105 {
106 string[0] = 0;
107 return 0;
108 }
109 for(; ; )
110 {
111 if(!(ch = *((*buffer)++)))
112 result = 0;
113 if((ch != '\n') && (ch != '\r') && (ch != ' ') && (ch != ',') && (ch != '\t'))
114 break;
115 if(!*(*buffer))
116 break;
117 }
118 if(result)
119 {
120 for(c = 0; c < max - 1; c++)
121 {
122 if(!quoted && ((ch == '\n') || (ch == '\r') || (ch == ' ') || (ch == ',') || (ch == '\t')))
123 {
124 result = 1;
125 break;
126 }
127 if(ch == '\"')
128 {
129 quoted ^= (unsigned int)1;
130 c--;
131 }
132 else
133 string[c] = ch;
134 if(!(ch = *(*buffer)))
135 {
136 c++;
137 break;
138 }
139 (*buffer)++;
140 }
141 string[c] = 0;
142 }
143 return result;
144 }
145
146 struct __ecereNameSpace__ecere__sys__ZString
147 {
148 char * _string;
149 int len;
150 int allocType;
151 int size;
152 int minSize;
153 int maxSize;
154 } ecere_gcc_struct;
155
156 struct __ecereNameSpace__ecere__sys__BTNode;
157
158 struct __ecereNameSpace__ecere__sys__OldList
159 {
160 void *  first;
161 void *  last;
162 int count;
163 unsigned int offset;
164 unsigned int circ;
165 } ecere_gcc_struct;
166
167 struct __ecereNameSpace__ecere__com__DataValue
168 {
169 union
170 {
171 char c;
172 unsigned char uc;
173 short s;
174 unsigned short us;
175 int i;
176 unsigned int ui;
177 void *  p;
178 float f;
179 double d;
180 long long i64;
181 uint64 ui64;
182 } ecere_gcc_struct __anon1;
183 } ecere_gcc_struct;
184
185 struct __ecereNameSpace__ecere__com__SerialBuffer
186 {
187 unsigned char *  _buffer;
188 unsigned int count;
189 unsigned int _size;
190 unsigned int pos;
191 } ecere_gcc_struct;
192
193 extern void *  __ecereNameSpace__ecere__com__eSystem_New(unsigned int size);
194
195 extern void *  __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size);
196
197 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew(void *  memory, unsigned int size);
198
199 extern void *  __ecereNameSpace__ecere__com__eSystem_Renew0(void *  memory, unsigned int size);
200
201 extern void __ecereNameSpace__ecere__com__eSystem_Delete(void *  memory);
202
203 extern size_t strlen(const char * );
204
205 extern char *  strcpy(char * , const char * );
206
207 extern int strcmp(const char * , const char * );
208
209 extern void *  memmove(void * , const void * , size_t size);
210
211 extern char *  strncpy(char * , const char * , size_t n);
212
213 extern char *  strstr(const char * , const char * );
214
215 extern void *  memcpy(void * , const void * , size_t size);
216
217 extern int toupper(int);
218
219 extern char *  strcat(char * , const char * );
220
221 extern int sprintf(char * , const char * , ...);
222
223 extern int strcasecmp(const char * , const char * );
224
225 extern int strncmp(const char * , const char * , size_t n);
226
227 extern int strncasecmp(const char * , const char * , size_t n);
228
229 extern int tolower(int);
230
231 extern int isalnum(int c);
232
233 extern char *  strchr(const char * , int);
234
235 extern int atoi(const char * );
236
237 extern unsigned long strtoul(const char *  nptr, char * *  endptr, int base);
238
239 extern unsigned int isdigit(int);
240
241 extern int vsnprintf(char * , size_t, const char * , __builtin_va_list);
242
243 struct __ecereNameSpace__ecere__com__DefinedExpression;
244
245 struct __ecereNameSpace__ecere__com__GlobalFunction;
246
247 unsigned int __ecereNameSpace__ecere__sys__StripExtension(char * string)
248 {
249 int c;
250
251 for(c = strlen(string); c >= 0; c--)
252 if(string[c] == '.')
253 {
254 string[c] = '\0';
255 return 1;
256 }
257 else if(string[c] == '\\' || string[c] == '/')
258 break;
259 return 0;
260 }
261
262 char * __ecereNameSpace__ecere__sys__GetExtension(const char * string, char * output)
263 {
264 int __simpleStruct0;
265 int c;
266 int len = strlen(string);
267 int limit = (__simpleStruct0 = len - (17), (0 > __simpleStruct0) ? 0 : __simpleStruct0);
268
269 output[0] = '\0';
270 for(c = len; c >= limit; c--)
271 {
272 char ch = string[c];
273
274 if(ch == '.')
275 {
276 strcpy(output, string + c + 1);
277 break;
278 }
279 else if(ch == '/' || ch == '\\')
280 break;
281 }
282 return output;
283 }
284
285 char * __ecereNameSpace__ecere__sys__StripLastDirectory(const char * string, char * output)
286 {
287 int c;
288
289 if(runtimePlatform == 1 && !strcmp(string, "\\\\"))
290 {
291 strcpy(output, "/");
292 return output;
293 }
294 else
295 {
296 int len = strlen(string);
297
298 for(c = len - 2; c >= 0; c--)
299 if(string[c] == '/' || string[c] == '\\')
300 break;
301 else if(string[c] == '>' || (string[c] == ':' && c == 0))
302 {
303 c++;
304 break;
305 }
306 if((runtimePlatform == 1) ? (c >= 0) : (c > 0))
307 {
308 memmove(output, string, c);
309 if(c > 0)
310 {
311 if(runtimePlatform == 1 && c == 1 && output[0] == '\\' && output[1] == '\\')
312 output[2] = '\0';
313 else
314 output[c] = '\0';
315 }
316 else
317 strcpy(output, ((__runtimePlatform == 1) ? "\\" : "/"));
318 return output;
319 }
320 else
321 {
322 if(c == 0)
323 {
324 strcpy(output, ((__runtimePlatform == 1) ? "\\" : "/"));
325 return output;
326 }
327 else
328 {
329 strcpy(output, "");
330 return (((void *)0));
331 }
332 }
333 }
334 }
335
336 char * __ecereNameSpace__ecere__sys__SplitDirectory(const char * string, char * part, char * rest)
337 {
338 int len = 0;
339 char ch;
340 int c = 0;
341
342 for(; (ch = string[c]) && (ch == '/' || ch == '\\'); c++)
343 ;
344 if(c)
345 part[len++] = ((__runtimePlatform == 1) ? '\\' : '/');
346 else
347 {
348 for(; (ch = string[c]) && (ch != '/' && ch != '\\'); c++)
349 {
350 if(len < (274))
351 part[len++] = ch;
352 }
353 }
354 for(; (ch = string[c]) && (ch == '/' || ch == '\\'); c++)
355 ;
356 memmove(rest, string + c, strlen(string + c) + 1);
357 for(c = strlen(rest); c >= 0; c--)
358 if(ch != '/' && ch != '\\')
359 break;
360 if(c > 0)
361 rest[c] = '\0';
362 part[len] = '\0';
363 return rest;
364 }
365
366 char * __ecereNameSpace__ecere__sys__GetLastDirectory(const char * string, char * output)
367 {
368 int c;
369 int len = string ? strlen(string) : 0;
370
371 for(c = len - 2; c >= 0; c--)
372 if(string[c] == '/' || string[c] == '\\' || string[c] == ':' || string[c] == '>')
373 break;
374 c++;
375 if(c >= 0)
376 memmove(output, string + c, strlen(string + c) + 1);
377 else
378 output[0] = '\0';
379 len = strlen(output);
380 if(len > 1 && (output[len - 1] == '\\' || output[len - 1] == '/'))
381 output[len - 1] = '\0';
382 return output;
383 }
384
385 char * __ecereNameSpace__ecere__sys__TrimLSpaces(const char * string, char * output)
386 {
387 int c;
388
389 for(c = 0; string[c] && string[c] == ' '; c++)
390 ;
391 memmove(output, string + c, strlen(string + c) + 1);
392 return output;
393 }
394
395 char * __ecereNameSpace__ecere__sys__TrimRSpaces(const char * string, char * output)
396 {
397 int c;
398
399 for(c = strlen(string) - 1; c >= 0 && string[c] == ' '; c--)
400 ;
401 if(c >= 0)
402 {
403 memmove(output, string, c + 1);
404 output[c + 1] = '\0';
405 }
406 else
407 output[0] = '\0';
408 return output;
409 }
410
411 char * __ecereNameSpace__ecere__sys__StripQuotes(const char * string, char * output)
412 {
413 int len;
414 const char * src = (string[0] == '\"') ? (string + 1) : string;
415
416 memmove(output, src, strlen(src) + 1);
417 len = strlen(output);
418 if(len && output[len - 1] == '\"')
419 output[len - 1] = '\0';
420 return output;
421 }
422
423 unsigned int __ecereNameSpace__ecere__sys__SplitArchivePath(const char * fileName, char * archiveName, const char ** archiveFile)
424 {
425 if(fileName[0] == '<')
426 {
427 int c = strlen(fileName);
428
429 for(; c > 0 && fileName[c] != '>'; c--)
430 ;
431 if(c > 0)
432 {
433 strncpy(archiveName, fileName + 1, c - 1);
434 archiveName[c - 1] = '\0';
435 *archiveFile = fileName + c + 1;
436 return 1;
437 }
438 }
439 else if(fileName[0] == ':')
440 {
441 strcpy(archiveName, ":");
442 *archiveFile = fileName + 1;
443 return 1;
444 }
445 return 0;
446 }
447
448 char * __ecereNameSpace__ecere__sys__CopyString(const char * string)
449 {
450 if(string)
451 {
452 int len = strlen(string);
453 char * destination = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (len + 1));
454
455 if(destination)
456 memcpy(destination, string, len + 1);
457 return destination;
458 }
459 else
460 return (((void *)0));
461 }
462
463 void __ecereNameSpace__ecere__sys__PrintSize(char * string, unsigned int size, int prec)
464 {
465 if(size > 1024)
466 {
467 char format[8];
468
469 sprintf(format, "%%.0%df", prec);
470 if(size > 1024 * 1024 * 1024)
471 {
472 sprintf(string, format, (float)size / (float)((float)(float)(1024 * 1024 * 1024)));
473 strcat(string, " GB");
474 }
475 else if(size > 1024 * 1024)
476 {
477 sprintf(string, format, (float)size / (float)((float)(float)(1024 * 1024)));
478 strcat(string, " MB");
479 }
480 else
481 {
482 sprintf(string, format, (float)size / (float)1024);
483 strcat(string, " KB");
484 }
485 }
486 else
487 sprintf(string, "%d B", size);
488 }
489
490 void __ecereNameSpace__ecere__sys__PrintBigSize(char * string, double size, int prec)
491 {
492 if(size > (double)1024)
493 {
494 char format[8];
495
496 sprintf(format, "%%.0%df", prec);
497 if(size > 1024.0 * 1024.0 * 1024.0 * 1024.0)
498 {
499 sprintf(string, format, size / ((double)(double)(1024 * 1024) * 1024.0 * 1024.0));
500 strcat(string, " TB");
501 }
502 else if(size > 1024.0 * 1024.0 * 1024.0)
503 {
504 sprintf(string, format, size / (1024.0 * 1024.0 * 1024.0));
505 strcat(string, " GB");
506 }
507 else if(size > 1024.0 * 1024.0)
508 {
509 sprintf(string, format, size / (1024.0 * 1024.0));
510 strcat(string, " MB");
511 }
512 else
513 {
514 sprintf(string, format, size / 1024.0);
515 strcat(string, " KB");
516 }
517 }
518 else
519 sprintf(string, "%.0f B", size);
520 }
521
522 char * __ecereNameSpace__ecere__sys__SearchString(const char * buffer, int start, const char * subStr, unsigned int matchCase, unsigned int matchWord)
523 {
524 if(buffer && subStr)
525 {
526 const char * ptr;
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)));
531
532 for(ptr = strBuffer; *ptr; ptr++)
533 {
534 if(matchCase ? (*subStr == *ptr) : (tolower(*subStr) == tolower(*ptr)))
535 {
536 if(matchWord)
537 {
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)))))
539 return (char *)ptr;
540 }
541 else
542 {
543 if(!strcompare(ptr, subStr, subLen))
544 return (char *)ptr;
545 }
546 }
547 beforeChar = ptr[0];
548 }
549 }
550 return (((void *)0));
551 }
552
553 char * __ecereNameSpace__ecere__sys__RSearchString(const char * buffer, const char * subStr, int maxLen, unsigned int matchCase, unsigned int matchWord)
554 {
555 if(buffer && subStr)
556 {
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)));
561
562 for(; ptr1 >= buffer; ptr1--, ptr2--)
563 {
564 if(tolower(*subStr) == tolower(*ptr1))
565 {
566 if(matchWord)
567 {
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)))))
569 return (char *)ptr1;
570 }
571 else
572 {
573 if(!strcompare(ptr1, subStr, subLen))
574 return (char *)ptr1;
575 }
576 }
577 }
578 }
579 return (((void *)0));
580 }
581
582 int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char * tokens[], unsigned int esc)
583 {
584 const char * escChars, * escCharsQuoted;
585 int count = 0;
586 unsigned int quoted = 0, escaped = 0;
587 char * start = (((void *)0)), * output = string;
588 char ch;
589
590 if(__runtimePlatform == 1)
591 {
592 escChars = " !\"%&'()+,;=[]^`{}~";
593 escCharsQuoted = "\"";
594 }
595 else
596 {
597 escChars = " !\"$&'()*:;<=>?[\\`{|";
598 escCharsQuoted = "\"()$";
599 }
600 for(; (ch = *string) && count < maxTokens; string++, output++)
601 {
602 unsigned int wasEscaped = escaped;
603
604 if(output != string)
605 *output = ch;
606 if(start)
607 {
608 if(escaped)
609 {
610 escaped = 0;
611 output--;
612 *output = ch;
613 }
614 else if(ch == '\"')
615 {
616 quoted ^= 1;
617 output--;
618 }
619 else if(ch == ' ' && !quoted)
620 {
621 tokens[count++] = start;
622 *output = '\0';
623 start = (((void *)0));
624 }
625 }
626 else if(ch != ' ')
627 {
628 if(ch == '\"')
629 {
630 quoted = 1;
631 start = output + 1;
632 }
633 else
634 start = output;
635 }
636 if(!wasEscaped && ch == '\\' && (esc == 1 || (esc == 2 && strchr(quoted ? escCharsQuoted : escChars, *(string + 1)))))
637 escaped = 1;
638 }
639 if(start && count < maxTokens)
640 {
641 tokens[count++] = start;
642 *output = '\0';
643 }
644 return count;
645 }
646
647 int __ecereNameSpace__ecere__sys__TokenizeWith(char * string, int maxTokens, char * tokens[], const char * tokenizers, unsigned int escapeBackSlashes)
648 {
649 int count = 0;
650 unsigned int quoted = 0;
651 char * start = (((void *)0));
652 unsigned int escaped = 0;
653 char * output = string;
654 unsigned int quotedFromStart = 0;
655
656 for(; *string && count < maxTokens; string++, output++)
657 {
658 if(output != string)
659 *output = *string;
660 if(start)
661 {
662 if(escaped)
663 {
664 escaped = 0;
665 output--;
666 if(output != string)
667 *output = *string;
668 }
669 else if(escapeBackSlashes && *string == '\\')
670 escaped = 1;
671 else if(*string == '\"')
672 {
673 if(quoted)
674 {
675 if(quotedFromStart)
676 *output = '\0';
677 quotedFromStart = 0;
678 quoted = 0;
679 }
680 else
681 quoted = 1;
682 }
683 else if(strchr(tokenizers, *string) && !quoted)
684 {
685 tokens[count++] = start;
686 *output = '\0';
687 start = (((void *)0));
688 }
689 }
690 else if(!strchr(tokenizers, *string))
691 {
692 if(*string == '\"')
693 {
694 quotedFromStart = 1;
695 quoted = 1;
696 start = output + 1;
697 }
698 else
699 {
700 start = output;
701 if(*string == '\\' && escapeBackSlashes)
702 escaped = 1;
703 }
704 }
705 }
706 if(start && count < maxTokens)
707 {
708 tokens[count++] = start;
709 *output = '\0';
710 }
711 return count;
712 }
713
714 void __ecereNameSpace__ecere__sys__ChangeChars(char * string, const char * chars, char alt)
715 {
716 int c;
717
718 for(c = 0; string[c]; c++)
719 if(strchr(chars, string[c]))
720 string[c] = alt;
721 }
722
723 int __ecereNameSpace__ecere__sys__GetValue(char ** buffer)
724 {
725 char string[20];
726
727 __ecereNameSpace__ecere__sys__GetString(buffer, string, 20);
728 return atoi(string);
729 }
730
731 unsigned int __ecereNameSpace__ecere__sys__GetHexValue(char ** buffer)
732 {
733 char string[20];
734
735 __ecereNameSpace__ecere__sys__GetString(buffer, string, 20);
736 return (unsigned int)strtoul(string, (((void *)0)), 16);
737 }
738
739 double __ecereNameSpace__ecere__sys__FloatFromString(const char * string)
740 {
741 int c, dig;
742 float dec = 0, res = 0;
743 int neg = 1;
744 char ch;
745
746 for(c = 0; string[c]; c++)
747 {
748 ch = string[c];
749 if(ch == ' ')
750 continue;
751 if(ch == '-')
752 {
753 if(neg == -1)
754 break;
755 neg = -1;
756 }
757 else if((ch == '.') && !dec)
758 dec = 10;
759 else if(isdigit(ch))
760 {
761 dig = ch - '0';
762 if(dec)
763 {
764 res += (float)dig / dec;
765 dec *= 10;
766 }
767 else
768 res = res * (float)10 + (float)dig;
769 }
770 else
771 break;
772 }
773 return (float)neg * res;
774 }
775
776 char * __ecereNameSpace__ecere__sys__ChangeExtension(const char * string, const char * ext, char * output)
777 {
778 if(string != output)
779 strcpy(output, string);
780 __ecereNameSpace__ecere__sys__StripExtension(output);
781 if(ext[0])
782 strcat(output, ".");
783 strcat(output, ext);
784 return output;
785 }
786
787 unsigned int __ecereNameSpace__ecere__sys__IsPathInsideOf(const char * path, const char * of)
788 {
789 if(!path[0] || !of[0])
790 return 0;
791 else
792 {
793 char ofPart[274], ofRest[797];
794 char pathPart[274], pathRest[797];
795
796 strcpy(ofRest, of);
797 strcpy(pathRest, path);
798 for(; ofRest[0] && pathRest[0]; )
799 {
800 __ecereNameSpace__ecere__sys__SplitDirectory(ofRest, ofPart, ofRest);
801 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
802 if(((__runtimePlatform == 1) ? (strcasecmp) : strcmp)(pathPart, ofPart))
803 return 0;
804 }
805 if(!ofRest[0] && !pathRest[0])
806 return 0;
807 else if(!pathRest[0])
808 return 0;
809 return 1;
810 }
811 }
812
813 char * __ecereNameSpace__ecere__sys__PathCatSlash(char * string, const char * addedPath)
814 {
815 unsigned int modified = 0;
816
817 if(addedPath)
818 {
819 char fileName[797] = "", archiveName[797] = "";
820 const char * file = (((void *)0));
821 int c = 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;
826
827 strcpy(fileName, isArchive ? file : string);
828 if(!isArchive)
829 {
830 protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
831 if(protocolSymbol)
832 {
833 char * slash = strstr(protocolSymbol + 3, "/");
834
835 isURL = 1;
836 if(slash)
837 urlFileName = slash;
838 else
839 urlFileName = fileName + strlen(fileName);
840 }
841 }
842 protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
843 if(protocolSymbol)
844 {
845 int len = protocolSymbol - addedPath + 3;
846
847 memcpy(fileName, addedPath, len);
848 fileName[len] = 0;
849 isURL = 1;
850 c = len;
851 }
852 else if(__runtimePlatform == 1)
853 {
854 if(addedPath[0] && addedPath[1] == ':' && addedPath[0] != '<')
855 {
856 fileName[0] = (char)toupper(addedPath[0]);
857 fileName[1] = ':';
858 fileName[2] = '\0';
859 c = 2;
860 modified = 1;
861 }
862 else if(addedPath[0] == '\\' && addedPath[1] == '\\')
863 {
864 fileName[0] = fileName[1] = '\\';
865 fileName[2] = '\0';
866 c = 2;
867 modified = 1;
868 }
869 }
870 if(!modified && isURL && (addedPath[0] == '\\' || addedPath[0] == '/'))
871 {
872 urlFileName[0] = '/';
873 urlFileName[1] = '\0';
874 }
875 else if(!modified && (addedPath[0] == '\\' || addedPath[0] == '/'))
876 {
877 if(__runtimePlatform == 1)
878 {
879 if(addedPath[0] == '/' && !addedPath[1])
880 {
881 fileName[0] = addedPath[0];
882 fileName[1] = '\0';
883 modified = 1;
884 }
885 else if(fileName[0] && fileName[1] == ':')
886 {
887 fileName[2] = '\0';
888 modified = 1;
889 }
890 else
891 {
892 fileName[0] = '\\';
893 fileName[1] = '\0';
894 modified = 1;
895 }
896 }
897 else
898 {
899 fileName[0] = '/';
900 fileName[1] = '\0';
901 modified = 1;
902 }
903 c = 1;
904 }
905 for(; addedPath[c]; )
906 {
907 char directory[4384];
908 int len = 0;
909 char ch;
910 int count;
911
912 for(; (ch = addedPath[c]) && (ch == '/' || ch == '\\'); c++)
913 ;
914 for(; (ch = addedPath[c]) && (ch != '/' && ch != '\\'); c++)
915 {
916 if(isURL && ch == '?')
917 {
918 break;
919 }
920 if(len < (274))
921 directory[len++] = ch;
922 }
923 directory[len] = '\0';
924 for(count = len - 1; count >= 0 && (directory[count] == ' ' || directory[count] == '\t'); count--)
925 {
926 directory[count] = '\0';
927 len--;
928 }
929 if(len > 0)
930 {
931 modified = 1;
932 if(strstr(directory, "..") == directory && (!directory[2] || directory[2] == ((__runtimePlatform == 1) ? '\\' : '/') || directory[2] == '/'))
933 {
934 int strLen = strlen(fileName) - 1;
935
936 if(strLen > -1)
937 {
938 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
939 ;
940 for(; strLen > -1 && (ch = fileName[strLen]) && (ch != '/' && ch != '\\' && ch != ':'); strLen--)
941 ;
942 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
943 ;
944 if(isURL)
945 {
946 int __simpleStruct0;
947
948 strLen = (__simpleStruct0 = urlFileName - fileName, (strLen > __simpleStruct0) ? strLen : __simpleStruct0);
949 }
950 if(!strcmp(fileName + strLen + 1, ".."))
951 {
952 strcat(fileName, "/");
953 strcat(fileName, "..");
954 }
955 else
956 {
957 if(__runtimePlatform == 1)
958 {
959 if(!strLen && fileName[0] == '\\' && fileName[1] == '\\')
960 {
961 if(!fileName[2])
962 return (((void *)0));
963 else
964 {
965 fileName[0] = '\\';
966 fileName[1] = '\\';
967 fileName[2] = '\0';
968 }
969 }
970 else
971 fileName[strLen + 1] = '\0';
972 }
973 else
974 {
975 fileName[strLen + 1] = '\0';
976 if(strLen < 0)
977 {
978 fileName[0] = '/';
979 fileName[1] = '\0';
980 strLen = 2;
981 }
982 }
983 }
984 }
985 else
986 {
987 strcpy(fileName, "..");
988 }
989 }
990 else if(strcmp(directory, "."))
991 {
992 int strLen = strlen(fileName);
993 unsigned int notZeroLen = strLen > 0;
994
995 if(strLen > 0 && (fileName[strLen - 1] == '/' || fileName[strLen - 1] == '\\'))
996 strLen--;
997 if(notZeroLen)
998 fileName[strLen++] = '/';
999 fileName[strLen] = '\0';
1000 if(strLen + strlen(directory) > (797) - 3)
1001 return (((void *)0));
1002 strcat(fileName, directory);
1003 }
1004 }
1005 if(isURL && ch == '/')
1006 strcat(fileName, "/");
1007 if(isURL && ch == '?')
1008 {
1009 strcat(fileName, addedPath + c);
1010 break;
1011 }
1012 }
1013 if(archiveName[0])
1014 sprintf(string, "<%s>%s", archiveName, fileName);
1015 else
1016 strcpy(string, fileName);
1017 }
1018 return modified ? string : (((void *)0));
1019 }
1020
1021 char * __ecereNameSpace__ecere__sys__PathCat(char * string, const char * addedPath)
1022 {
1023 unsigned int modified = 0;
1024
1025 if(addedPath)
1026 {
1027 char fileName[797] = "", archiveName[797] = "";
1028 const char * file = (((void *)0));
1029 int c = 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;
1034
1035 strcpy(fileName, isArchive ? file : string);
1036 if(!isArchive)
1037 {
1038 protocolSymbol = (fileName[0] && fileName[0] != '.' && fileName[0] != '/' && fileName[0] != '\\' && fileName[1] != ':') ? strstr(fileName, "://") : (((void *)0));
1039 if(protocolSymbol)
1040 {
1041 char * slash = strstr(protocolSymbol + 3, "/");
1042
1043 isURL = 1;
1044 if(slash)
1045 urlFileName = slash;
1046 else
1047 urlFileName = fileName + strlen(fileName);
1048 }
1049 }
1050 protocolSymbol = (addedPath[0] && addedPath[0] != '.' && addedPath[0] != '/' && addedPath[0] != '\\' && addedPath[1] != ':') ? strstr(addedPath, "://") : (((void *)0));
1051 if(protocolSymbol)
1052 {
1053 int len = protocolSymbol - addedPath + 3;
1054
1055 memcpy(fileName, addedPath, len);
1056 fileName[len] = 0;
1057 isURL = 1;
1058 c = len;
1059 }
1060 else if(runtimePlatform == 1)
1061 {
1062 if(addedPath[0] && addedPath[1] == ':' && addedPath[0] != '<')
1063 {
1064 fileName[0] = (char)toupper(addedPath[0]);
1065 fileName[1] = ':';
1066 fileName[2] = '\0';
1067 c = 2;
1068 modified = 1;
1069 }
1070 else if(addedPath[0] == '\\' && addedPath[1] == '\\')
1071 {
1072 fileName[0] = fileName[1] = '\\';
1073 fileName[2] = '\0';
1074 c = 2;
1075 modified = 1;
1076 }
1077 else if(fileName[0] == '/' && !archiveName[0] && strcmp(addedPath, "/"))
1078 return (((void *)0));
1079 }
1080 if(!modified && isURL && (addedPath[0] == '\\' || addedPath[0] == '/'))
1081 {
1082 urlFileName[0] = '/';
1083 urlFileName[1] = '\0';
1084 }
1085 else if(!modified && (addedPath[0] == '\\' || addedPath[0] == '/'))
1086 {
1087 if(runtimePlatform == 1)
1088 {
1089 if(addedPath[0] == '/' && !addedPath[1])
1090 {
1091 fileName[0] = addedPath[0];
1092 fileName[1] = '\0';
1093 modified = 1;
1094 }
1095 else if(fileName[0] && fileName[1] == ':')
1096 {
1097 fileName[2] = '\0';
1098 modified = 1;
1099 }
1100 else
1101 {
1102 fileName[0] = '\\';
1103 fileName[1] = '\0';
1104 modified = 1;
1105 }
1106 }
1107 else
1108 {
1109 fileName[0] = '/';
1110 fileName[1] = '\0';
1111 modified = 1;
1112 }
1113 c = 1;
1114 }
1115 for(; addedPath[c]; )
1116 {
1117 char directory[4384];
1118 int len = 0;
1119 char ch;
1120 int count;
1121
1122 for(; (ch = addedPath[c]) && (ch == '/' || ch == '\\'); c++)
1123 ;
1124 for(; (ch = addedPath[c]) && (ch != '/' && ch != '\\'); c++)
1125 {
1126 if(isURL && ch == '?')
1127 {
1128 break;
1129 }
1130 if(len < (274))
1131 directory[len++] = ch;
1132 }
1133 directory[len] = '\0';
1134 for(count = len - 1; count >= 0 && (directory[count] == ' ' || directory[count] == '\t'); count--)
1135 {
1136 directory[count] = '\0';
1137 len--;
1138 }
1139 if(len > 0)
1140 {
1141 modified = 1;
1142 if(strstr(directory, "..") == directory && (!directory[2] || directory[2] == ((__runtimePlatform == 1) ? '\\' : '/')))
1143 {
1144 int strLen = strlen(fileName) - 1;
1145
1146 if(strLen > -1)
1147 {
1148 unsigned int separator = 0;
1149
1150 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
1151 ;
1152 for(; strLen > -1 && (ch = fileName[strLen]) && (ch != '/' && ch != '\\' && ch != ':'); strLen--)
1153 ;
1154 for(; strLen > -1 && (ch = fileName[strLen]) && (ch == '/' || ch == '\\'); strLen--)
1155 separator = 1;
1156 if(isURL)
1157 {
1158 int __simpleStruct0;
1159
1160 strLen = (__simpleStruct0 = urlFileName - fileName, (strLen > __simpleStruct0) ? strLen : __simpleStruct0);
1161 }
1162 if(!strcmp(fileName + strLen + (separator ? 2 : 1), ".."))
1163 {
1164 strcat(fileName, ((__runtimePlatform == 1) ? "\\" : "/"));
1165 strcat(fileName, "..");
1166 }
1167 else
1168 {
1169 if(runtimePlatform == 1)
1170 {
1171 if(!strLen && fileName[0] == '\\' && fileName[1] == '\\')
1172 {
1173 if(!fileName[2])
1174 return (((void *)0));
1175 else
1176 {
1177 fileName[0] = '\\';
1178 fileName[1] = '\\';
1179 fileName[2] = '\0';
1180 }
1181 }
1182 else
1183 fileName[strLen + 1] = '\0';
1184 }
1185 else
1186 {
1187 fileName[strLen + 1] = '\0';
1188 if(strLen < 0)
1189 {
1190 fileName[0] = '/';
1191 fileName[1] = '\0';
1192 strLen = 2;
1193 }
1194 }
1195 }
1196 }
1197 else
1198 {
1199 strcpy(fileName, "..");
1200 }
1201 }
1202 else if(strcmp(directory, "."))
1203 {
1204 int strLen = strlen(fileName);
1205 unsigned int notZeroLen = strLen > 0;
1206
1207 if(strLen > 0 && (fileName[strLen - 1] == '/' || fileName[strLen - 1] == '\\'))
1208 strLen--;
1209 if(notZeroLen)
1210 {
1211 if(isURL)
1212 fileName[strLen++] = '/';
1213 else
1214 fileName[strLen++] = ((__runtimePlatform == 1) ? '\\' : '/');
1215 }
1216 fileName[strLen] = '\0';
1217 if(strLen + strlen(directory) > (797) - 3)
1218 return (((void *)0));
1219 strcat(fileName, directory);
1220 }
1221 }
1222 if(isURL && ch == '/')
1223 strcat(fileName, "/");
1224 if(isURL && ch == '?')
1225 {
1226 strcat(fileName, addedPath + c);
1227 break;
1228 }
1229 }
1230 if(archiveName[0])
1231 sprintf(string, "<%s>%s", archiveName, fileName);
1232 else
1233 strcpy(string, fileName);
1234 }
1235 return modified ? string : (((void *)0));
1236 }
1237
1238 char * __ecereNameSpace__ecere__sys__MakePathRelative(const char * path, const char * to, char * destination)
1239 {
1240 int len;
1241
1242 if(!path[0])
1243 memmove(destination, path, strlen(path) + 1);
1244 else
1245 {
1246 char pathPart[4384], pathRest[797];
1247 char toPart[4384], toRest[797];
1248 unsigned int different = 0;
1249
1250 strcpy(pathRest, path);
1251 strcpy(toRest, to);
1252 destination[0] = '\0';
1253 for(; toRest[0]; )
1254 {
1255 __ecereNameSpace__ecere__sys__SplitDirectory(toRest, toPart, toRest);
1256 if(!different)
1257 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
1258 if(different || ((__runtimePlatform == 1) ? (strcasecmp) : strcmp)(toPart, pathPart))
1259 {
1260 different = 1;
1261 strcat(destination, "..");
1262 strcat(destination, ((__runtimePlatform == 1) ? "\\" : "/"));
1263 }
1264 }
1265 if(different)
1266 __ecereNameSpace__ecere__sys__PathCat(destination, pathPart);
1267 for(; pathRest[0]; )
1268 {
1269 __ecereNameSpace__ecere__sys__SplitDirectory(pathRest, pathPart, pathRest);
1270 __ecereNameSpace__ecere__sys__PathCat(destination, pathPart);
1271 }
1272 }
1273 len = strlen(destination);
1274 if(len > 1 && (destination[len - 1] == '/' || destination[len - 1] == '\\'))
1275 destination[--len] = '\0';
1276 return destination;
1277 }
1278
1279 struct __ecereNameSpace__ecere__com__Property;
1280
1281 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_string, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_string;
1282
1283 static __attribute__((unused)) struct __ecereNameSpace__ecere__com__Property * __ecereProp___ecereNameSpace__ecere__sys__ZString_char__PTR_, * __ecerePropM___ecereNameSpace__ecere__sys__ZString_char__PTR_;
1284
1285 struct __ecereNameSpace__ecere__com__Class;
1286
1287 struct __ecereNameSpace__ecere__com__Instance
1288 {
1289 void * *  _vTbl;
1290 struct __ecereNameSpace__ecere__com__Class * _class;
1291 int _refCount;
1292 } ecere_gcc_struct;
1293
1294 extern long long __ecereNameSpace__ecere__com__eClass_GetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name);
1295
1296 extern void __ecereNameSpace__ecere__com__eClass_SetProperty(struct __ecereNameSpace__ecere__com__Class * _class, const char *  name, long long value);
1297
1298 extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, const char *  string, long long value);
1299
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);
1301
1302 extern void *  __ecereNameSpace__ecere__com__eInstance_New(struct __ecereNameSpace__ecere__com__Class * _class);
1303
1304 struct __ecereNameSpace__ecere__com__Property
1305 {
1306 struct __ecereNameSpace__ecere__com__Property * prev;
1307 struct __ecereNameSpace__ecere__com__Property * next;
1308 const char *  name;
1309 unsigned int isProperty;
1310 int memberAccess;
1311 int id;
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 * );
1319 void *  data;
1320 void *  symbol;
1321 int vid;
1322 unsigned int conversion;
1323 unsigned int watcherOffset;
1324 const char *  category;
1325 unsigned int compiled;
1326 unsigned int selfWatchable;
1327 unsigned int isWatchable;
1328 } ecere_gcc_struct;
1329
1330 extern void __ecereNameSpace__ecere__com__eInstance_FireSelfWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
1331
1332 extern void __ecereNameSpace__ecere__com__eInstance_SetMethod(struct __ecereNameSpace__ecere__com__Instance * instance, const char *  name, void *  function);
1333
1334 extern void __ecereNameSpace__ecere__com__eInstance_IncRef(struct __ecereNameSpace__ecere__com__Instance * instance);
1335
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);
1337
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 * ));
1339
1340 extern void __ecereNameSpace__ecere__com__eInstance_FireWatchers(struct __ecereNameSpace__ecere__com__Instance * instance, struct __ecereNameSpace__ecere__com__Property * _property);
1341
1342 char *  __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(struct __ecereNameSpace__ecere__com__Instance * this);
1343
1344 void __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string(struct __ecereNameSpace__ecere__com__Instance * this, char *  value);
1345
1346 struct __ecereNameSpace__ecere__sys__BinaryTree;
1347
1348 struct __ecereNameSpace__ecere__sys__BinaryTree
1349 {
1350 struct __ecereNameSpace__ecere__sys__BTNode * root;
1351 int count;
1352 int (*  CompareKey)(struct __ecereNameSpace__ecere__sys__BinaryTree * tree, uintptr_t a, uintptr_t b);
1353 void (*  FreeKey)(void *  key);
1354 } ecere_gcc_struct;
1355
1356 struct __ecereNameSpace__ecere__com__DataMember;
1357
1358 struct __ecereNameSpace__ecere__com__DataMember
1359 {
1360 struct __ecereNameSpace__ecere__com__DataMember * prev;
1361 struct __ecereNameSpace__ecere__com__DataMember * next;
1362 const char *  name;
1363 unsigned int isProperty;
1364 int memberAccess;
1365 int id;
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;
1370 int type;
1371 int offset;
1372 int memberID;
1373 struct __ecereNameSpace__ecere__sys__OldList members;
1374 struct __ecereNameSpace__ecere__sys__BinaryTree membersAlpha;
1375 int memberOffset;
1376 short structAlignment;
1377 short pointerAlignment;
1378 } ecere_gcc_struct;
1379
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);
1381
1382 struct __ecereNameSpace__ecere__com__Method;
1383
1384 struct __ecereNameSpace__ecere__com__ClassTemplateArgument
1385 {
1386 union
1387 {
1388 struct
1389 {
1390 const char *  dataTypeString;
1391 struct __ecereNameSpace__ecere__com__Class * dataTypeClass;
1392 } ecere_gcc_struct __anon1;
1393 struct __ecereNameSpace__ecere__com__DataValue expression;
1394 struct
1395 {
1396 const char *  memberString;
1397 union
1398 {
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;
1405 } ecere_gcc_struct;
1406
1407 struct __ecereNameSpace__ecere__com__Method
1408 {
1409 const char *  name;
1410 struct __ecereNameSpace__ecere__com__Method * parent;
1411 struct __ecereNameSpace__ecere__com__Method * left;
1412 struct __ecereNameSpace__ecere__com__Method * right;
1413 int depth;
1414 int (*  function)();
1415 int vid;
1416 int type;
1417 struct __ecereNameSpace__ecere__com__Class * _class;
1418 void *  symbol;
1419 const char *  dataTypeString;
1420 struct __ecereNameSpace__ecere__com__Instance * dataType;
1421 int memberAccess;
1422 } ecere_gcc_struct;
1423
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);
1425
1426 struct __ecereNameSpace__ecere__com__Module;
1427
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);
1429
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);
1431
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);
1433
1434 extern struct __ecereNameSpace__ecere__com__Instance * __thisModule;
1435
1436 struct __ecereNameSpace__ecere__com__NameSpace;
1437
1438 struct __ecereNameSpace__ecere__com__NameSpace
1439 {
1440 const char *  name;
1441 struct __ecereNameSpace__ecere__com__NameSpace *  btParent;
1442 struct __ecereNameSpace__ecere__com__NameSpace *  left;
1443 struct __ecereNameSpace__ecere__com__NameSpace *  right;
1444 int depth;
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;
1450 } ecere_gcc_struct;
1451
1452 struct __ecereNameSpace__ecere__com__Class
1453 {
1454 struct __ecereNameSpace__ecere__com__Class * prev;
1455 struct __ecereNameSpace__ecere__com__Class * next;
1456 const char *  name;
1457 int offset;
1458 int structSize;
1459 void * *  _vTbl;
1460 int vTblSize;
1461 unsigned int (*  Constructor)(void * );
1462 void (*  Destructor)(void * );
1463 int offsetClass;
1464 int sizeClass;
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;
1472 int memberID;
1473 int startMemberID;
1474 int type;
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;
1479 int typeSize;
1480 int defaultAlignment;
1481 void (*  Initialize)();
1482 int memberOffset;
1483 struct __ecereNameSpace__ecere__sys__OldList selfWatchers;
1484 const char *  designerClass;
1485 unsigned int noExpansion;
1486 const char *  defaultProperty;
1487 unsigned int comRedefinition;
1488 int count;
1489 int isRemote;
1490 unsigned int internalDecl;
1491 void *  data;
1492 unsigned int computeSize;
1493 short structAlignment;
1494 short pointerAlignment;
1495 int destructionWatchOffset;
1496 unsigned int fixed;
1497 struct __ecereNameSpace__ecere__sys__OldList delayedCPValues;
1498 int inheritanceAccess;
1499 const char *  fullName;
1500 void *  symbol;
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;
1506 int numParams;
1507 unsigned int isInstanceClass;
1508 unsigned int byValueSystemClass;
1509 void *  bindingsClass;
1510 } ecere_gcc_struct;
1511
1512 struct __ecereNameSpace__ecere__com__Application
1513 {
1514 int argc;
1515 const char * *  argv;
1516 int exitCode;
1517 unsigned int isGUIApp;
1518 struct __ecereNameSpace__ecere__sys__OldList allModules;
1519 char *  parsedCommand;
1520 struct __ecereNameSpace__ecere__com__NameSpace systemNameSpace;
1521 } ecere_gcc_struct;
1522
1523 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__BackSlashEscaping;
1524
1525 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__StringAllocType;
1526
1527 static struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__sys__ZString;
1528
1529 extern struct __ecereNameSpace__ecere__com__Class * __ecereClass___ecereNameSpace__ecere__com__Module;
1530
1531 struct __ecereNameSpace__ecere__com__Module
1532 {
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;
1540 const char *  name;
1541 void *  library;
1542 void *  Unload;
1543 int importType;
1544 int origImportType;
1545 struct __ecereNameSpace__ecere__com__NameSpace privateNameSpace;
1546 struct __ecereNameSpace__ecere__com__NameSpace publicNameSpace;
1547 } ecere_gcc_struct;
1548
1549 unsigned int __ecereConstructor___ecereNameSpace__ecere__sys__ZString(struct __ecereNameSpace__ecere__com__Instance * this)
1550 {
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);
1552
1553 {
1554 __ecerePointer___ecereNameSpace__ecere__sys__ZString->maxSize = (((int)0x7fffffff));
1555 }
1556 return 1;
1557 }
1558
1559 void __ecereDestructor___ecereNameSpace__ecere__sys__ZString(struct __ecereNameSpace__ecere__com__Instance * this)
1560 {
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);
1562
1563 {
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);
1566 }
1567 }
1568
1569 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_copyString(struct __ecereNameSpace__ecere__com__Instance * this, char * value, int newLen)
1570 {
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);
1572
1573 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 0)
1574 {
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;
1578 }
1579 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 2)
1580 {
1581 int newSize = newLen ? newLen + 1 : 0;
1582
1583 if(newSize != __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1584 {
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));
1591 else if(newSize)
1592 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string = __ecereNameSpace__ecere__com__eSystem_New(sizeof(char) * (newSize));
1593 else
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;
1596 }
1597 }
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;
1601 if(value)
1602 {
1603 memcpy(__ecerePointer___ecereNameSpace__ecere__sys__ZString->_string, value, newLen);
1604 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string[newLen] = 0;
1605 }
1606 }
1607
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)
1609 {
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);
1611
1612 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1613 }
1614
1615 unsigned int __ecereMethod___ecereNameSpace__ecere__sys__ZString_OnGetDataFromString(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance ** this, const char * string)
1616 {
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);
1618
1619 __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string((*this), (char *)string);
1620 return 1;
1621 }
1622
1623 char *  __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_string(struct __ecereNameSpace__ecere__com__Instance * this)
1624 {
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);
1626
1627 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1628 }
1629
1630 const char *  __ecereProp___ecereNameSpace__ecere__sys__ZString_Get_char__PTR_(struct __ecereNameSpace__ecere__com__Instance * this)
1631 {
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);
1633
1634 return __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string;
1635 }
1636
1637 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_concatf(struct __ecereNameSpace__ecere__com__Instance * this, const char * format, ...)
1638 {
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);
1640
1641 if(format && __ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType != 0)
1642 {
1643 int __simpleStruct0;
1644 int addedLen;
1645 va_list args;
1646
1647 __builtin_va_start(args, format);
1648 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->size < __ecerePointer___ecereNameSpace__ecere__sys__ZString->minSize)
1649 {
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;
1652 }
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);
1654 if(addedLen > 0)
1655 {
1656 __ecerePointer___ecereNameSpace__ecere__sys__ZString->len += addedLen;
1657 __ecerePointer___ecereNameSpace__ecere__sys__ZString->_string[__ecerePointer___ecereNameSpace__ecere__sys__ZString->len] = 0;
1658 }
1659 __builtin_va_end(args);
1660 }
1661 }
1662
1663 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_concat(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * s)
1664 {
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);
1666
1667 if(s && __ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType != 0)
1668 {
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;
1671
1672 if(__ecerePointer___ecereNameSpace__ecere__sys__ZString->allocType == 2 && newLen + 1 > __ecerePointer___ecereNameSpace__ecere__sys__ZString->size)
1673 {
1674 int newSize = newLen + 1;
1675
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)
1679 {
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;
1682 }
1683 }
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;
1686 if(addedLen > 0)
1687 {
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;
1691 }
1692 }
1693 }
1694
1695 struct __ecereNameSpace__ecere__com__Instance * __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_char__PTR_(const char *  value)
1696 {
1697 return __extension__ ({
1698 struct __ecereNameSpace__ecere__com__Instance * __ecereInstance1 = __ecereNameSpace__ecere__com__eInstance_New(__ecereClass___ecereNameSpace__ecere__sys__ZString);
1699
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;
1701 });
1702 }
1703
1704 void __ecereUnregisterModule_String(struct __ecereNameSpace__ecere__com__Instance * module)
1705 {
1706
1707 __ecerePropM___ecereNameSpace__ecere__sys__ZString_string = (void *)0;
1708 }
1709
1710 void __ecereProp___ecereNameSpace__ecere__sys__ZString_Set_string(struct __ecereNameSpace__ecere__com__Instance * this, char *  value)
1711 {
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);
1713
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);
1716 }
1717
1718 void __ecereMethod___ecereNameSpace__ecere__sys__ZString_copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * s)
1719 {
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);
1721
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);
1723 }
1724
1725 void __ecereRegisterModule_String(struct __ecereNameSpace__ecere__com__Instance * module)
1726 {
1727 struct __ecereNameSpace__ecere__com__Class __attribute__((unused)) * class;
1728
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;
1793 }
1794