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