2 public import static "ecere"
7 extern int isblank(int c);
9 public class DynamicString : Array<char>
25 int len = strlen(value) + 1;
27 memcpy(s.array, value, len);
34 char * OnGetString(char * tempString, void * fieldData, bool * needClass)
39 bool OnGetDataFromString(char * string)
41 this = (DynamicString)string;
50 if(pos == -1) { Add('\0'); pos = 0; }
52 memcpy(&(this[pos]), s, len+1);
56 void concatf(char * format, ...)
58 // TODO: improve this to vsprinf directly in the Array<char> instead of calling concat
59 char string[MAX_F_STRING];
61 va_start(args, format);
62 vsnprintf(string, sizeof(string), format, args);
63 string[sizeof(string)-1] = 0;
68 void concatx(typed_object object, ...)
70 // TODO: improve this to work directly on the Array<char> instead of calling PrintStdArgsToBuffer
71 char string[MAX_F_STRING];
74 va_start(args, object);
75 len = PrintStdArgsToBuffer(string, sizeof(string), object, args);
80 void copySingleBlankReplTrim(String s, char replace, bool trim)
82 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, strlen(s));
85 void copyLenSingleBlankReplTrim(String s, char replace, bool trim, int copyLen)
87 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, Min(strlen(s), copyLen));
90 void privateCommonCopyLenSingleBlankReplTrim(String s, char replace, bool trim, int len)
95 for(c = d = 0; c < len; c++)
102 /*array*/this[d++] = replace ? replace : s[c];
107 /*array*/this[d++] = s[c];
112 if(!trim || (len && !isblank(/*array*/this[d])))
114 /*array*/this[d] = '\0';