#include "base.h" // returns length of string (including \0) uint32 cptr_length(char* str){ uint32 len=0; while(*(str++)) len++; return ++len; } // allocates new char[] and copies src there char* cptr_copy(char* src){ uint32 len=cptr_length(src); char* dst=malloc(len*sizeof(char)); while(len-->0) dst[len]=src[len]; return dst; } // compares two char buffers, NullPtr-friendly bool cptr_compare(char* key0, char* key1){ if(!key0) return key1 ? false : true; if(!key1) return false; while(*key0&&*key1) if(*key0++ != *key1++) return false; return true; } // multiplies char n times char* char_multiply(char c, uint32 n){ char* rez=malloc(n+1); rez[n]=0; while(n-->0) rez[n]=c; return rez; } // copies str content to new char pointer value (adding '\0' at the end) char* string_cpToCptr(string str){ if(str.length==0) return NULL; char* cptr=malloc(str.length*sizeof(char)+1); cptr[str.length]=0; while(str.length-->0) cptr[str.length]=str.ptr[str.length]; return cptr; } // copies cptr content (excluding '\0' at the end) to new string string string_cpFromCharPtr(char* cptr){ if(!cptr) return stringNull; string str; str.length=cptr_length(cptr)-1; str.ptr=malloc(str.length); for(uint32 i=0;i0) if(*str0.ptr++ != *str1.ptr++) return false; return true; } // creates new string which is reversed variant of string string_reverse(string s){ if(s.length==0) return s; string r={malloc(s.length), s.length}; for(uint32 i=0; i