string and StringBuilder
This commit is contained in:
@@ -4,32 +4,32 @@ kt_define(string, NULL, NULL);
|
||||
Autoarr_define(string, false);
|
||||
|
||||
// copies str content to new char pointer value (adding '\0' at the end)
|
||||
char* string_extract(string str){
|
||||
char* string_extract(allocator_ptr al, string str){
|
||||
if(str.length==0) return NULL;
|
||||
char* cptr=malloc(str.length*sizeof(char)+1);
|
||||
char* cptr=allocator_alloc(al, str.length+1);
|
||||
memcpy(cptr, str.ptr, str.length);
|
||||
cptr[str.length]=0;
|
||||
while(str.length-->0)
|
||||
cptr[str.length]=str.ptr[str.length];
|
||||
return cptr;
|
||||
}
|
||||
|
||||
|
||||
// copies src.ptr content to new string and adds \0 at the end
|
||||
string string_copy(string src){
|
||||
string string_copy(allocator_ptr al, string src){
|
||||
if(!src.ptr)
|
||||
return src;
|
||||
throw(ERR_NULLPTR);
|
||||
string nstr;
|
||||
nstr.length=src.length;
|
||||
nstr.ptr=malloc(nstr.length+1);
|
||||
for(u32 i=0;i<nstr.length;i++)
|
||||
nstr.ptr[i]=src.ptr[i];
|
||||
nstr.ptr=allocator_alloc(al, nstr.length+1);
|
||||
memcpy(nstr.ptr, src.ptr, nstr.length);
|
||||
nstr.ptr[nstr.length]='\0';
|
||||
return nstr;
|
||||
}
|
||||
|
||||
// compares two strings, NullPtr-friendly
|
||||
bool string_compare(string str0, string str1){
|
||||
if(str0.length!=str1.length) return false;
|
||||
if(!str0.ptr) return str1.ptr ? false : true;
|
||||
if(str0.length!=str1.length)
|
||||
return false;
|
||||
if(!str0.ptr)
|
||||
return str1.ptr ? false : true;
|
||||
else if(!str1.ptr) return false;
|
||||
while(str0.length-->0)
|
||||
if(*str0.ptr++ != *str1.ptr++)
|
||||
@@ -38,9 +38,12 @@ bool string_compare(string str0, string str1){
|
||||
}
|
||||
|
||||
// creates new string which is reversed variant of <s>
|
||||
string string_reverse(string s){
|
||||
if(s.length==0) return s;
|
||||
string r={malloc(s.length), s.length};
|
||||
string string_reverse(allocator_ptr al, string s){
|
||||
if(s.length==0)
|
||||
return s;
|
||||
string r;
|
||||
r.ptr=allocator_alloc(al, s.length);
|
||||
r.length=s.length;
|
||||
for(u32 i=0; i<s.length; i++)
|
||||
r.ptr[i]=s.ptr[s.length-i-1];
|
||||
return r;
|
||||
|
||||
Reference in New Issue
Block a user