2 public import static "ecere"
7 public class DynamicString : Array<char>
23 int len = strlen(value) + 1;
25 memcpy(s.array, value, len);
32 const char * OnGetString(char * tempString, void * fieldData, bool * needClass)
37 bool OnGetDataFromString(const char * string)
39 this = (DynamicString)(char *)string;
43 void concat(const String s)
49 if(pos == -1) { Add('\0'); pos = 0; }
51 memcpy(&(this[pos]), s, len+1);
55 void concatf(const char * format, ...)
57 // TODO: improve this to vsprinf directly in the Array<char> instead of calling concat
58 char string[MAX_F_STRING];
60 va_start(args, format);
61 vsnprintf(string, sizeof(string), format, args);
62 string[sizeof(string)-1] = 0;
67 void concatx(typed_object object, ...)
69 // TODO: improve this to work directly on the Array<char> instead of calling PrintStdArgsToBuffer
70 char string[MAX_F_STRING];
73 va_start(args, object);
74 /*len = */PrintStdArgsToBuffer(string, sizeof(string), object, args);
79 void copySingleBlankReplTrim(String s, char replace, bool trim)
81 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, strlen(s));
84 void copyLenSingleBlankReplTrim(String s, char replace, bool trim, int copyLen)
86 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, Min(strlen(s), copyLen));
89 void privateCommonCopyLenSingleBlankReplTrim(String s, char replace, bool trim, int len)
94 for(c = d = 0; c < len; c++)
101 /*array*/this[d++] = replace ? replace : s[c];
106 /*array*/this[d++] = s[c];
111 if(!trim || (len && !isblank(/*array*/this[d])))
113 /*array*/this[d] = '\0';