ucx/string.c

changeset 109
75cb6590358b
parent 108
d2b1e67b2b48
child 116
234920008754
equal deleted inserted replaced
108:d2b1e67b2b48 109:75cb6590358b
29 #include <stdlib.h> 29 #include <stdlib.h>
30 #include <string.h> 30 #include <string.h>
31 #include <stdarg.h> 31 #include <stdarg.h>
32 32
33 #include "string.h" 33 #include "string.h"
34 #include "allocator.h"
34 35
35 sstr_t sstr(char *s) { 36 sstr_t sstr(char *s) {
36 sstr_t string; 37 sstr_t string;
37 string.ptr = s; 38 string.ptr = s;
38 string.length = strlen(s); 39 string.length = strlen(s);
178 } 179 }
179 180
180 sstr_t sstrdup(sstr_t s) { 181 sstr_t sstrdup(sstr_t s) {
181 sstr_t newstring; 182 sstr_t newstring;
182 newstring.ptr = (char*) malloc(s.length + 1); 183 newstring.ptr = (char*) malloc(s.length + 1);
183 newstring.length = 0;
184 if (newstring.ptr) { 184 if (newstring.ptr) {
185 newstring.length = s.length; 185 newstring.length = s.length;
186 newstring.ptr[newstring.length] = 0; 186 newstring.ptr[newstring.length] = 0;
187 187
188 memcpy(newstring.ptr, s.ptr, s.length); 188 memcpy(newstring.ptr, s.ptr, s.length);
189 } else { 189 } else {
190 newstring.length = 0; 190 newstring.length = 0;
191 } 191 }
192 192
193 return newstring;
194 }
195
196 sstr_t sstrdup_alloc(UcxAllocator *allocator, sstr_t s) {
197 sstr_t newstring;
198 newstring.ptr = (char*)allocator->malloc(allocator->pool, s.length + 1);
199 if (newstring.ptr) {
200 newstring.length = s.length;
201 newstring.ptr[newstring.length] = 0;
202
203 memcpy(newstring.ptr, s.ptr, s.length);
204 } else {
205 newstring.length = 0;
206 }
207
193 return newstring; 208 return newstring;
194 } 209 }
195 210
196 sstr_t sstrtrim(sstr_t string) { 211 sstr_t sstrtrim(sstr_t string) {
197 sstr_t newstr = string; 212 sstr_t newstr = string;

mercurial