str and StringBuilder
This commit is contained in:
29
src/string/str.c
Normal file
29
src/string/str.c
Normal file
@@ -0,0 +1,29 @@
|
||||
#include "str.h"
|
||||
|
||||
str str_copy(str src){
|
||||
if(src.data == NULL || src.len == 0)
|
||||
return src;
|
||||
str nstr = str_construct((char*)malloc(src.len + 1), src.len, true);
|
||||
memcpy(nstr.data, src.data, src.len);
|
||||
nstr.data[nstr.len] = '\0';
|
||||
return nstr;
|
||||
}
|
||||
|
||||
bool str_compare(str str0, str str1){
|
||||
if(str0.len!= str1.len) return false;
|
||||
if(!str0.data) return str1.data ? false : true;
|
||||
else if(!str1.data) return false;
|
||||
while(str0.len-- > 0)
|
||||
if(*str0.data++ != *str1.data++ )
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
str str_reverse(str s){
|
||||
if(s.data == NULL || s.len == 0)
|
||||
return s;
|
||||
str r = str_construct(malloc(s.len), s.len, s.isZeroTerminated);
|
||||
for(u32 i = 0; i < s.len; i++ )
|
||||
r.data[i] = s.data[s.len - i - 1];
|
||||
return r;
|
||||
}
|
||||
Reference in New Issue
Block a user