2 public import static "ecere"
9 public class DynamicString : Array<char>
25 int len = strlen(value) + 1;
27 memcpy(s.array, value, len);
34 const char * OnGetString(char * tempString, void * fieldData, bool * needClass)
39 bool OnGetDataFromString(const char * string)
41 this = (DynamicString)(char *)string;
45 void concat(const String s)
51 if(pos == -1) { Add('\0'); pos = 0; }
53 memcpy(&(this[pos]), s, len+1);
57 void concatf(const char * format, ...)
59 // TODO: improve this to vsprinf directly in the Array<char> instead of calling concat
60 char string[MAX_F_STRING];
62 va_start(args, format);
63 vsnprintf(string, sizeof(string), format, args);
64 string[sizeof(string)-1] = 0;
69 void concatx(typed_object object, ...)
71 // TODO: improve this to work directly on the Array<char> instead of calling PrintStdArgsToBuffer
72 char string[MAX_F_STRING];
75 va_start(args, object);
76 /*len = */PrintStdArgsToBuffer(string, sizeof(string), object, args);
81 void copySingleBlankReplTrim(String s, char replace, bool trim)
83 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, strlen(s));
86 void copyLenSingleBlankReplTrim(String s, char replace, bool trim, int copyLen)
88 privateCommonCopyLenSingleBlankReplTrim(s, replace, trim, Min(strlen(s), copyLen));
91 void privateCommonCopyLenSingleBlankReplTrim(String s, char replace, bool trim, int len)
96 for(c = d = 0; c < len; c++)
103 /*array*/this[d++] = replace ? replace : s[c];
108 /*array*/this[d++] = s[c];
113 if(!trim || (len && !isblank(/*array*/this[d])))
115 /*array*/this[d] = '\0';