buildsystem,epj2make,ide; new per-file-config-platform CFLAGS generation method....
[sdk] / extras / types / DynamicString.ec
1 #include <stdarg.h>
2
3 class DynamicString : Array<char>
4 {
5    minAllocSize = 1024;
6
7    DynamicString()
8    {
9       Add('\0');
10    }
11
12    property String
13    {
14       get
15       {
16          return &(this[0]);
17       }
18       set
19       {
20       }
21    }
22
23    void concat(String s)
24    {
25       int len = strlen(s);
26       if(len)
27       {
28          int pos = size-1;
29          if(pos == -1) { Add('\0'); pos = 0; }
30          size += len;
31          memcpy(&(this[pos]), s, len+1);
32       }
33    }
34
35    void concatf(char * format, ...)
36    {
37       char string[MAX_F_STRING*16];
38       va_list args;
39       va_start(args, format);
40       vsprintf(string, format, args);
41       va_end(args);
42       concat(string);
43    }
44
45    void concatx(typed_object object, ...)
46    {
47       char string[MAX_F_STRING*16];
48       va_list args;
49       int len;
50       va_start(args, object);
51       len = PrintStdArgsToBuffer(string, sizeof(string), object, args);
52       concat(string);
53       va_end(args);
54    }
55
56 }