23 #include "../libsheepyObject.h" 27 #define internal static 526 self->type =
"smallString";
534 self->f = smallStringF;
795 #if (recycleContainers) 812 #if (recycleContainers) 834 r->
f->set(r,
string);
868 va_start(pl, paramType);
869 paramType = va_arg(pl,
const char *);
871 l.f->pushS(&
l, paramType);
872 paramType = va_arg(pl,
const char *);
876 r =
l.f->join(&
l,
"");
917 dup->_len =
self->_len;
926 #if (NFreeStackCheck) 929 register u64 rsp
asm(
"rsp");
930 if ((
u64)*
self > rsp) {
931 logW(
"Probably trying to free a smallString on stack: "BLD PRIx64
RST" sp: "BLD PRIx64
RST, *
self, rsp);
935 #if (recycleContainers) 949 #if (recycleContainers) 989 self->_len = strlen(
string);
1003 self->_len = strlen(
"true");
1007 self->_len = strlen(
"false");
1157 if (!type ||
eqS(type,
"undefined")) {
1161 if (
eqS(type,
"bool")) {
1164 else if (
eqS(type,
"double")) {
1167 else if (
eqS(type,
"int")) {
1170 else if (
eqS(type,
"string")) {
1173 else if (
eqS(type,
"dict")) {
1179 else if (
eqS(type,
"array")) {
1224 if (!string->
data) {
1230 self->_len =
string->_len;
1234 if (!string->
_len) {
1241 tmp = realloc(self->data, self->_len + string->
_len + 2);
1248 self->_len +=
string->_len;
1264 if (!type || !
eqS(type,
"string")) {
1281 if (!string->
data) {
1287 self->data =
string->data;
1288 self->_len =
string->_len;
1293 if (!string->
_len) {
1301 tmp = realloc(self->data, self->_len + string->
_len + 2);
1308 self->_len +=
string->_len;
1323 size_t len = strlen(
string);
1334 tmp = realloc(self->data, self->_len + len + 2);
1340 strcat((
char *)self->data,
string);
1363 if (!type || !
eqS(type,
"string")) {
1396 if (!string->
data) {
1402 self->_len =
string->_len;
1406 if (!string->
_len) {
1428 if (!type || !
eqS(type,
"string")) {
1445 if (!string->
data) {
1451 self->data = (
sStringt *)strdup((
char *)
string->data);
1452 self->_len =
string->_len;
1457 if (!string->
_len) {
1481 if (!type || !
eqS(type,
"string")) {
1497 size_t len = strlen(
string);
1538 l.f->pushSmallString(&
l,
self);
1550 l.f->pushSmallString(&
l, paramType);
1557 self->data = r->
data;
1558 self->_len = r->
_len;
1566 char *paramType = NULL;
1580 paramType = va_arg(pl,
char *);
1582 l.f->pushS(&
l, (
char *)paramType);
1583 paramType = va_arg(pl,
char *);
1589 self->data = r->
data;
1590 self->_len = r->
_len;
1607 l.f->pushSmallString(&
l,
self);
1620 l.f->pushNFreeSmallString(&
l, paramType);
1627 self->data = r->
data;
1628 self->_len = r->
_len;
1635 char *paramType = NULL;
1644 l.f->pushSmallString(&
l,
self);
1649 paramType = va_arg(pl,
char *);
1651 l.f->pushNFreeS(&
l, (
char *)paramType);
1652 paramType = va_arg(pl,
char *);
1657 self->data = r->
data;
1658 self->_len = r->
_len;
1668 char *workingS = NULL;
1692 lolds = strlen(olds);
1704 for (count = 0 ; (tmp = strstr(ins, olds)) ; ++count) {
1706 if (max && (count == max)) {
1714 lnews = strlen(news);
1718 size_t rLen =
self->_len + (lnews - lolds) * count + 2;;
1719 tmp = r = malloc(rLen);
1725 workingS = (
char *)self->data;
1732 ins = strstr(workingS, olds);
1733 lfront = (size_t)(ins - workingS);
1734 tmp = strncpy(tmp, workingS, lfront) + lfront;
1735 tmp = strcpy(tmp, news) + lnews;
1736 workingS += lfront + lolds;
1740 strcpy(tmp, workingS);
1744 self->_len = strlen(r)-1;
1795 if (!
eqS(type,
"string")) {
1801 if (!
eqS(type,
"string")) {
1836 if (!
eqS(type,
"string")) {
1863 if (!
eqS(type,
"string")) {
1890 if (!
eqS(type,
"string")) {
1926 if (!
eqS(type,
"string")) {
2027 if (!
eqS(type,
"string")) {
2076 if (!
eqS(type,
"string")) {
2109 const char *olds = NULL;
2110 const char *news = NULL;
2124 va_start(pl, paramType);
2125 paramType = va_arg(pl,
const char *);
2147 paramType = va_arg(pl,
const char *);
2156 char *workingS = NULL;
2180 lolds = strlen(olds);
2192 for (count = 0 ; (tmp = strcasestr(ins, olds)) ; ++count) {
2194 if (max && (count == max)) {
2202 lnews = strlen(news);
2206 size_t rLen =
self->_len + (lnews - lolds) * count + 2;;
2207 tmp = r = malloc(rLen);
2213 workingS = (
char *)self->data;
2220 ins = strcasestr(workingS, olds);
2221 lfront = (size_t)(ins - workingS);
2222 tmp = strncpy(tmp, workingS, lfront) + lfront;
2223 tmp = strcpy(tmp, news) + lnews;
2224 workingS += lfront + lolds;
2228 strcpy(tmp, workingS);
2232 self->_len = strlen(r)-1;
2283 if (!
eqS(type,
"string")) {
2289 if (!
eqS(type,
"string")) {
2324 if (!
eqS(type,
"string")) {
2351 if (!
eqS(type,
"string")) {
2378 if (!
eqS(type,
"string")) {
2414 if (!
eqS(type,
"string")) {
2515 if (!
eqS(type,
"string")) {
2564 if (!
eqS(type,
"string")) {
2597 const char *olds = NULL;
2598 const char *news = NULL;
2612 va_start(pl, paramType);
2613 paramType = va_arg(pl,
const char *);
2635 paramType = va_arg(pl,
const char *);
2655 if (!string->
data) {
2659 if (self->_len != string->
_len) {
2668 if (!self->data || !
string) {
2672 if (self->_len != strlen(
string)) {
2687 if (!self->data || !p2) {
2709 else if (
strEq(s,
"false") ||
strEq(s,
"FALSE")) {
2729 return(selfValue == p2);;
2746 return(selfValue == p2);;
2763 return(selfValue == p2);;
2780 return(selfValue == p2);;
2797 return(selfValue == p2);;
2820 else if (
strEq(s,
"false") ||
strEq(s,
"FALSE")) {
2841 if ((self->_len+1) != p2->
B->
count) {
2912 return(p2->
f->equalSmallString(p2,
self));
2917 if (!self->data || !
string) {
2925 if (!string->
data) {
2929 if (self->_len != string->
_len) {
2938 if (!self->data || !
string) {
2942 if (self->_len != strlen(
string)) {
2957 if (!self->data || !p2) {
2980 return(p2->
f->icEqualSmallString(p2,
self));
2985 if (!self->data || !
string) {
2989 if (index >= (int64_t)self->_len && self->_len) {
2992 if (index < -(int64_t)self->_len) {
2996 index = (int64_t)self->_len + index;
2999 if (index > (int64_t)(
self->_len - strlen(
string))) {
3003 if (!
string[0] && !self->_len) {
3011 return(strncmp(
sStringGetTiny(self->data) + index, string, strlen(
string)) == 0);;
3033 if (!
eqS(type,
"string")) {
3054 if (!self->data || !
string) {
3058 return(strncmp(
sStringGetTiny(self->data),
string, strlen(
string)) == 0);;
3067 return(self->data->data == c);;
3083 if (!
eqS(type,
"string")) {
3104 if (!self->data || !
string) {
3108 if (self->_len < strlen(
string)) {
3111 return(strcmp(
sStringGetTiny(self->data) + self->_len - strlen(
string),
string) == 0);;
3120 if (!self->_len && !c) {
3143 if (!
eqS(type,
"string")) {
3164 if (!self->data || !
string || !
string[0]) {
3169 size_t len = strlen(
string);
3173 s = strstr(s,
string);
3205 if (!
eqS(type,
"string")) {
3226 if (!self->data || !
string) {
3230 return(strncasecmp(
sStringGetTiny(self->data),
string, strlen(
string)) == 0);;
3238 return(toupper(self->data->data) == toupper(c));;
3254 if (!
eqS(type,
"string")) {
3275 if (!self->data || !
string) {
3279 if (self->_len < strlen(
string)) {
3282 return(strcasecmp(
sStringGetTiny(self->data) + self->_len - strlen(
string),
string) == 0);;
3291 if (!self->_len && !c) {
3298 return(toupper(*(
sStringGetTiny(self->data) + self->_len-1)) == toupper(c));;
3314 if (!
eqS(type,
"string")) {
3335 if (!self->data || !
string || !
string[0]) {
3340 size_t len = strlen(
string);
3344 s = strcasestr(s,
string);
3376 if (!
eqS(type,
"string")) {
3397 if (!self->data || !self->_len) {
3404 if (!isdigit(*
string) && (*
string !=
'-') && (*
string !=
'.')) {
3409 const char *firstChar = string;
3415 if (*(
string-1) ==
'.') {
3419 while ((isdigit(*
string) || (*
string ==
'.') || (*
string ==
'e') || (*
string ==
'E') || (((*
string ==
'-') || (*
string ==
'+')) && ((*(
string-1) ==
'E') || (*(
string-1) ==
'e')))) && *
string != 0) {
3420 if (*
string ==
'.') {
3422 if (*firstChar ==
'-') {
3426 if ((dots > 1) || (exponents > 0)) {
3431 if ((*
string ==
'e') || (*
string ==
'E')) {
3433 if ((exponents > 1) || (*firstChar ==
'.')) {
3442 if ((*
string == 0) && (*(
string-1) !=
'.') && (*(
string-1) !=
'-') && (*(
string-1) !=
'e') && (*(
string-1) !=
'E')) {
3450 if (!self->data || !self->_len) {
3458 if (!isdigit(*
string) && (*
string !=
'-')) {
3464 while (isdigit(*
string) && *
string != 0) {
3469 if ((*
string == 0) && (*(
string-1) !=
'-')) {
3477 if (!self->data || !self->_len) {
3482 while (!isdigit(*
string) && *
string !=
'-' && *
string != 0) {
3485 int64_t
r = strtoll(
string, NULL, 10);
3486 if (r == INT64_MAX || r == INT64_MIN) {
3494 if (!self->data || !self->_len) {
3499 while (!isdigit(*
string) && *
string !=
'-' && *
string != 0) {
3502 double r = strtod(
string, NULL);
3509 sprintf(s,
"%" PRIiMAX, n);
3517 sprintf(s,
"%e", n);
3534 while (*
string != 0) {
3535 *
string = (char)toupper(*
string);
3548 while (*
string != 0) {
3549 *
string = (char)tolower(*
string);
3556 char *workingS = NULL;
3573 while (isspace(*workingS)) {
3584 end = workingS + strlen(workingS) - 1;
3585 while (isspace(*end)) {
3590 len = (size_t)(end - workingS + 2);
3591 isError(r, malloc(len))
return(NULL);
3592 r = strncpy(r, workingS, len - 1);
3600 char *workingS = NULL;
3615 while (isspace(*workingS)) {
3619 r = strdup(workingS);;
3626 char *workingS = NULL;
3641 end = workingS + strlen(workingS) - 1;
3642 while ((end >= workingS) && isspace(*end)) {
3657 if (self->_len < 2) {
3666 if (
string[
i-1] == c &&
string[
i] == c) {
3671 string[j] =
string[
i];
3687 if (self->_len < 2) {
3694 c = (char)tolower(c);
3699 if (tolower(
string[
i-1]) == c && tolower(
string[
i]) == c) {
3704 string[j] =
string[
i];
3715 if (!self->data || !self->_len) {
3719 if (index >= (int64_t)self->_len) {
3722 if (index < -(int64_t)self->_len) {
3726 index = (int64_t)self->_len + index;
3734 if (!self->data || !self->_len) {
3738 if (index >= (int64_t)self->_len) {
3741 if (index < -(int64_t)self->_len) {
3745 index = (int64_t)self->
_len + index;
3760 if (start > (int64_t)self->_len) {
3764 if (end > (int64_t)self->_len) {
3765 end = (int64_t)self->_len;
3767 if (start <= -(int64_t)
self->_len) {
3768 start = -(int64_t)self->_len;
3770 if (end <= -(int64_t)
self->_len) {
3775 start = (int64_t)self->_len + start;
3778 end = (int64_t)self->_len + end;
3793 s = malloc((
size_t)n+1);
3831 len = (int64_t)self->_len;
3839 if (start <= -len) {
3846 start = len + start;
3859 l = malloc((
size_t)(n+1) *
sizeof(
char));
3865 memmove(
string+start,
string+end, (
size_t)(len-end+1));
3866 self->_len -= (size_t)n;
3906 len = (int64_t)self->_len;
3914 index = len + index;
3919 char r = *(
string+index);
3921 if (index == len-1) {
3925 memmove(
string+index,
string+index+1, (
size_t)(len - index));
3943 if (start >= (int64_t)self->_len) {
3946 if (end > (int64_t)self->_len) {
3947 end = (int64_t)self->_len;
3949 if (start <= -(int64_t)
self->_len) {
3950 start = -(int64_t)self->_len;
3952 if (end <= -(int64_t)
self->_len) {
3956 start = (int64_t)self->_len + start;
3959 end = (int64_t)self->_len + end;
3973 s = malloc((
size_t)n+1);
4004 if (toInsert->
data) {
4006 self->_len = toInsert->
_len;
4011 if (!self->_len && index == -1) {
4020 if (index > (int64_t)
self->_len) {
4026 if (index < -(int64_t)
self->_len) {
4030 index = (int64_t)self->_len + index;
4033 if (!toInsert->
data || !toInsert->
_len) {
4043 char *s1 =
sliceS((
char *)self->data, 0, index+1);
4044 char *s2 =
sliceS((
char *)self->data, index+1, 0);
4051 self->_len += toInsert->
_len;
4061 if (checkObjectTypes && toInsert && !
isOSmallJson(toInsert)) {
4073 if (!
eqS(type,
"string")) {
4091 char header[2] = {
STRING ,0};
4093 self->_len = strlen(toInsert);
4097 if (!self->_len && index == -1) {
4106 if (index > (int64_t)self->_len) {
4112 if (index < -(int64_t)self->_len) {
4116 index = (int64_t)self->_len + index;
4125 char header[2] = {
STRING ,0};
4130 char *s1 =
sliceS((
char *)self->data, 0, index+1);
4131 char *s2 =
sliceS((
char *)self->data, index+1, 0);
4132 r =
catS(s1, toInsert, s2);
4138 self->_len += strlen(toInsert);
4177 char tmp[3] = {
STRING, toInject, 0};
4178 self->data = (
sStringt*) strdup(tmp);
4183 if (!self->_len && index == -1) {
4192 if (index > (int64_t)
self->_len) {
4198 if (index < -(int64_t)
self->_len) {
4202 index = (int64_t)self->_len + index;
4210 char header[2] = {
STRING ,0};
4215 char *s1 =
sliceS((
char *)self->data, 0, index+1);
4216 char *s2 =
sliceS((
char *)self->data, index+1, 0);
4217 r =
catS(s1, inject, s2);
4231 if (!self->data || !self->_len) {
4235 if (start >= (int64_t)self->_len) {
4236 start = (int64_t)self->_len;
4238 if (end > (int64_t)
self->_len) {
4239 end = (int64_t)self->_len;
4241 if (start <= -(int64_t)
self->_len) {
4242 start = -(int64_t)self->_len;
4244 if (end <= -(int64_t)
self->_len) {
4245 end = -(int64_t)self->_len;
4248 start = (int64_t)self->_len + start;
4251 end = (int64_t)self->_len + end;
4266 s = malloc(self->_len - (
size_t)n +2);
4271 strncpy(s, (
char *)self->data, (
size_t)start+1);
4272 strncpy(s+start+1, (
char *)self->data + end +1, self->_len - (
size_t)end);
4273 s[
self->_len - (size_t)n +1] = 0;
4277 self->_len -= (size_t)n;
4285 if (!self->data || !self->_len) {
4289 if (index >= (int64_t)self->_len) {
4292 if (index < -(int64_t)self->_len) {
4296 index = (int64_t)self->_len + index;
4301 s = malloc(self->_len - 1 +2);
4306 strncpy(s, (
char *)self->data, (
size_t)index+1);
4307 strncpy(s+index+1, (
char *)self->data + index+1 +1, self->_len - (
size_t)(index+1));
4308 s[
self->_len - 1 +1] = 0;
4319 if (!self->data || !needle || !self->_len) {
4328 if (!self->data || !self->_len) {
4346 if (!
eqS(type,
"string")) {
4368 if (!self->data || !needle || !self->_len) {
4387 if (!self->data || !self->_len) {
4415 if (!
eqS(type,
"string")) {
4458 if (!
eqS(type,
"string")) {
4483 if (!self->data || !needle || !self->_len) {
4495 if (!self->data || !self->_len) {
4516 if (!
eqS(type,
"string")) {
4538 if (!self->data || !needle || !self->_len) {
4560 if (!self->data || !self->_len) {
4590 if (!
eqS(type,
"string")) {
4633 if (!
eqS(type,
"string")) {
4688 if (!self->data || !delim) {
4698 r->f->fromArray(
r, list, 0);
4721 if (!
eqS(type,
"string")) {
4741 char *startSmallString = NULL;
4742 char *workingSmallString = NULL;
4748 if (!self->data || !delim) {
4760 workingSmallString = startSmallString;
4761 line = workingSmallString;
4762 while (strlen(workingSmallString) != 0) {
4763 token =
tokS(line, delim, &workingSmallString);
4766 if (!workingSmallString) {
4772 free(startSmallString);
4777 size_t lenD = strlen(delim);
4804 if (!
eqS(type,
"string")) {
4828 if (!self->data || !delim1 || !delim2) {
4832 if (
strEq(delim1, delim2)) {
4848 char **tmp2 =
split(*e, delim2);
4866 a->
f->fromArrayNFree(
a, r, 0);
4891 if (!delim1 || !delim2) {
4905 if (!
eqS(type,
"string")) {
4911 if (!
eqS(type,
"string")) {
4920 if (!delim1 || !delim2) {
4934 if (!
eqS(type,
"string")) {
4953 if (!
eqS(type,
"string")) {
4972 if (!
eqS(type,
"string")) {
4982 if (!delim1 || !delim2) {
4996 if (!
eqS(type,
"string")) {
5005 if (!delim1 || !delim2) {
5056 if (!
eqS(type,
"string")) {
5087 if (!
eqS(type,
"string")) {
5111 if (!self->data || !delim) {
5121 r->f->fromArray(
r, list, 0);
5144 if (!
eqS(type,
"string")) {
5164 char *startSmallString = NULL;
5165 char *workingSmallString = NULL;
5171 if (!self->data || !delim) {
5183 workingSmallString = startSmallString;
5184 line = workingSmallString;
5185 while (strlen(workingSmallString) != 0) {
5186 token =
icTokS(line, delim, &workingSmallString);
5189 if (!workingSmallString) {
5195 free(startSmallString);
5200 size_t lenD = strlen(delim);
5227 if (!
eqS(type,
"string")) {
5251 if (!self->data || !delim1 || !delim2) {
5255 if (
strEq(delim1, delim2)) {
5271 char **tmp2 =
icSplit(*e, delim2);
5289 a->
f->fromArrayNFree(
a, r, 0);
5314 if (!delim1 || !delim2) {
5328 if (!
eqS(type,
"string")) {
5334 if (!
eqS(type,
"string")) {
5343 if (!delim1 || !delim2) {
5357 if (!
eqS(type,
"string")) {
5376 if (!
eqS(type,
"string")) {
5395 if (!
eqS(type,
"string")) {
5405 if (!delim1 || !delim2) {
5419 if (!
eqS(type,
"string")) {
5428 if (!delim1 || !delim2) {
5480 if (!
eqS(type,
"string")) {
5511 if (!
eqS(type,
"string")) {
5534 if (!self->data || !colr) {
5546 if (!self->data || !color) {
5561 if (!filePath ||
isBlankS(filePath)) {
5573 self->data = malloc((
size_t)len+2);
5578 f = fopen(filePath,
"r");
5581 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5584 readStatus = fread(((
char *)self->data)+1, 1, (
size_t)len , f);
5587 self->data->type =
STRING;
5589 if (readStatus != (
size_t)len) {
5591 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5595 *((
char*)self->data+len+1) = 0;
5596 self->_len = (size_t)len;
5613 if (!
eqS(type,
"string")) {
5650 self->data = malloc((
size_t)len+2);
5655 readStatus = fread(&self->data->data, 1, (
size_t)len , fp);
5657 self->data->type =
STRING;
5659 if (readStatus != (
size_t)len) {
5664 *(&
self->data->data+
len) = 0;
5665 self->_len = (size_t)len;
5676 if (!filePath ||
isBlankS(filePath) || !self->data) {
5682 f = fopen(filePath,
"w");
5685 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5691 if (writeStatus != len) {
5693 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5712 if (!
eqS(type,
"string")) {
5737 if (!fp || !self->data) {
5745 if (writeStatus != len) {
5759 if (!filePath ||
isBlankS(filePath) || !self->data) {
5765 f = fopen(filePath,
"a");
5768 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5774 if (writeStatus != len) {
5776 shEPrintfS(
"The path was: \"%s\"\n", filePath);
5797 return(self->f->duplicate(
self));
5804 return(self->f->setBool(
self, p2));
5809 return(self->f->setDouble(
self, p2));
5814 return(self->f->setInt64(
self, p2));
5819 return(self->f->setInt32(
self, p2));
5824 return(self->f->setUint32(
self, p2));
5829 return(self->f->setUint64(
self, p2));
5834 return(self->f->set(
self, p2));
5839 return(self->f->setChar(
self,c));
5844 return(self->f->setSmallArray(
self, p2));
5849 return(self->f->setFromSmallDict(
self, p2));
5854 return(self->f->setFromSmallJson(
self, p2));
5859 return(self->f->setSmallBool(
self, p2));
5864 return(self->f->setSmallDouble(
self, p2));
5869 return(self->f->setSmallInt(
self, p2));
5874 return(self->f->setSmallJson(
self, p2));
5879 return(self->f->setSmallString(
self, p2));
5885 return(self->f->getAt(
self, index));
5890 return(self->f->setAt(
self, index, c));
5895 return(self->f->append(
self,
string));
5900 return(self->f->appendSmallJson(
self,
string));
5905 return(self->f->appendS(
self,
string));
5910 return(self->f->appendChar(
self,c));
5915 return(self->f->appendNSmash(
self,
string));
5920 return(self->f->appendNSmashSmallJson(
self,
string));
5925 return(self->f->appendNSmashS(
self,
string));
5931 return(self->f->prepend(
self,
string));
5936 return(self->f->prependSmallJson(
self, json));
5941 return(self->f->prependS(
self,
string));
5946 return(self->f->prependChar(
self,c));
5951 return(self->f->prependNSmash(
self,
string));
5956 return(self->f->prependNSmashSmallJson(
self, json));
5961 return(self->f->prependNSmashS(
self,
string));
5967 return(self->f->replace(
self, olds, news, max));
5972 return(self->f->replaceCharS(
self,olds,news,max));
5977 return(self->f->replaceSChar(
self,olds,news,max));
5982 return(self->f->replaceCharChar(
self,olds,news,max));
5987 return(self->f->replaceSmallJsonSmallJson(
self,olds,news,max));
5992 return(self->f->replaceSmallJsonSmallString(
self,olds,news,max));
5997 return(self->f->replaceSmallJsonS(
self,olds,news,max));
6002 return(self->f->replaceSmallJsonChar(
self,olds,news,max));
6007 return(self->f->replaceSmallStringSmallJson(
self,olds,news,max));
6012 return(self->f->replaceSmallStringSmallString(
self,olds,news,max));
6017 return(self->f->replaceSmallStringS(
self,olds,news,max));
6022 return(self->f->replaceSmallStringChar(
self,olds,news,max));
6027 return(self->f->replaceSSmallJson(
self,olds,news,max));
6032 return(self->f->replaceSSmallString(
self,olds,news,max));
6037 return(self->f->replaceCharSmallJson(
self,olds,news,max));
6042 return(self->f->replaceCharSmallString(
self,olds,news,max));
6047 return(self->f->icReplace(
self, olds, news, max));
6052 return(self->f->icReplaceCharS(
self,olds,news,max));
6057 return(self->f->icReplaceSChar(
self,olds,news,max));
6062 return(self->f->icReplaceCharChar(
self,olds,news,max));
6067 return(self->f->icReplaceSmallJsonSmallJson(
self,olds,news,max));
6072 return(self->f->icReplaceSmallJsonSmallString(
self,olds,news,max));
6077 return(self->f->icReplaceSmallJsonS(
self,olds,news,max));
6082 return(self->f->icReplaceSmallJsonChar(
self,olds,news,max));
6087 return(self->f->icReplaceSmallStringSmallJson(
self,olds,news,max));
6092 return(self->f->icReplaceSmallStringSmallString(
self,olds,news,max));
6097 return(self->f->icReplaceSmallStringS(
self,olds,news,max));
6102 return(self->f->icReplaceSmallStringChar(
self,olds,news,max));
6107 return(self->f->icReplaceSSmallJson(
self,olds,news,max));
6112 return(self->f->icReplaceSSmallString(
self,olds,news,max));
6117 return(self->f->icReplaceCharSmallJson(
self,olds,news,max));
6122 return(self->f->icReplaceCharSmallString(
self,olds,news,max));
6127 return(self->f->equal(
self, p2));
6132 return(self->f->equalChar(
self,c));
6137 return(self->f->equalS(
self,
string));
6142 return(self->f->equalBase(
self, p2));
6147 return(self->f->equalBool(
self, p2));
6152 return(self->f->equalDouble(
self, p2));
6157 return(self->f->equalInt64(
self, p2));
6162 return(self->f->equalInt32(
self, p2));
6167 return(self->f->equalUint32(
self, p2));
6172 return(self->f->equalUint64(
self, p2));
6177 return(self->f->equalSmallBool(
self, p2));
6182 return(self->f->equalSmallBytes(
self, p2));
6187 return(self->f->equalSmallDouble(
self, p2));
6192 return(self->f->equalSmallInt(
self, p2));
6197 return(self->f->equalSmallJson(
self, p2));
6202 return(self->f->icEqual(
self, p2));
6207 return(self->f->icEqualChar(
self,c));
6212 return(self->f->icEqualS(
self,
string));
6217 return(self->f->icEqualBase(
self, p2));
6222 return(self->f->icEqualSmallJson(
self, p2));
6227 return(self->f->equalIS(
self,
string, index));
6232 return(self->f->equalIChar(
self,c,index));
6237 return(self->f->equalISmallJson(
self,
string,index));
6242 return(self->f->equalISmallString(
self,
string,index));
6247 return(self->f->startsWithS(
self,
string));
6252 return(self->f->startsWithChar(
self,c));
6257 return(self->f->startsWithSmallJson(
self,
string));
6262 return(self->f->startsWithSmallString(
self,
string));
6267 return(self->f->endsWithS(
self,
string));
6272 return(self->f->endsWithChar(
self,c));
6277 return(self->f->endsWithSmallJson(
self,
string));
6282 return(self->f->endsWithSmallString(
self,
string));
6287 return(self->f->countS(
self,
string));
6292 return(self->f->countChar(
self,c));
6297 return(self->f->countSmallJson(
self,
string));
6302 return(self->f->countSmallString(
self,
string));
6307 return(self->f->icStartsWithS(
self,
string));
6312 return(self->f->icStartsWithChar(
self,c));
6317 return(self->f->icStartsWithSmallJson(
self,
string));
6322 return(self->f->icStartsWithSmallString(
self,
string));
6327 return(self->f->icEndsWithS(
self,
string));
6332 return(self->f->icEndsWithChar(
self,c));
6337 return(self->f->icEndsWithSmallJson(
self,
string));
6342 return(self->f->icEndsWithSmallString(
self,
string));
6347 return(self->f->icCountS(
self,
string));
6352 return(self->f->icCountChar(
self,c));
6357 return(self->f->icCountSmallJson(
self,
string));
6362 return(self->f->icCountSmallString(
self,
string));
6367 return(self->f->isNumber(
self));
6372 return(self->f->isInt(
self));
6377 return(self->f->parseInt(
self));
6382 return(self->f->intTo(
self, n));
6387 return(self->f->parseDouble(
self));
6392 return(self->f->doubleTo(
self, n));
6397 return(self->f->len(
self));
6402 return(self->f->upper(
self));
6407 return(self->f->lower(
self));
6412 return(self->f->trim(
self));
6417 return(self->f->lTrim(
self));
6422 return(self->f->rTrim(
self));
6427 return(self->f->uniq(
self, c));
6432 return(self->f->icUniq(
self, c));
6437 return(self->f->slice(
self, start, end));
6442 return(self->f->crop(
self, start, end));
6447 return(self->f->cropS(
self, start, end));
6452 return(self->f->cropSmallJson(
self, start, end));
6457 return(self->f->cropElem(
self, index));
6462 return(self->f->copy(
self, start, end));
6467 return(self->f->insert(
self, index, toInsert));
6472 return(self->f->insertSmallJson(
self, index, toInsert));
6477 return(self->f->insertS(
self, index, toInsert));
6482 return(self->f->insertNFree(
self, index, toInsert));
6487 return(self->f->insertNFreeSmallJson(
self, index, toInsert));
6492 return(self->f->insertSNFree(
self, index, toInsert));
6497 return(self->f->inject(
self, index, toInject));
6502 return(self->f->del(
self, start, end));
6507 return(self->f->delElem(
self, index));
6512 return(self->f->has(
self, needle));
6517 return(self->f->hasChar(
self,c));
6522 return(self->f->hasSmallJson(
self,needle));
6527 return(self->f->hasSmallString(
self,needle));
6532 return(self->f->find(
self, needle));
6537 return(self->f->findChar(
self,c));
6542 return(self->f->findSmallJson(
self,needle));
6547 return(self->f->findSmallString(
self,needle));
6552 return(self->f->indexOf(
self,needle));
6557 return(self->f->indexOfChar(
self,c));
6562 return(self->f->indexOfSmallJson(
self,needle));
6567 return(self->f->indexOfSmallString(
self,needle));
6572 return(self->f->icHas(
self, needle));
6577 return(self->f->icHasChar(
self,c));
6582 return(self->f->icHasSmallJson(
self,needle));
6587 return(self->f->icHasSmallString(
self,needle));
6592 return(self->f->icFind(
self, needle));
6597 return(self->f->icFindChar(
self,c));
6602 return(self->f->icFindSmallJson(
self,needle));
6607 return(self->f->icFindSmallString(
self,needle));
6612 return(self->f->icIndexOf(
self,needle));
6617 return(self->f->icIndexOfChar(
self,c));
6622 return(self->f->icIndexOfSmallJson(
self,needle));
6627 return(self->f->icIndexOfSmallString(
self,needle));
6632 return(self->f->empty(
self));
6637 return(self->f->isEmpty(
self));
6642 return(self->f->isBlank(
self));
6647 return(self->f->split(
self, delim));
6652 return(self->f->splitChar(
self,c));
6657 return(self->f->splitSmallJson(
self,delim));
6662 return(self->f->splitSmallString(
self,delim));
6667 return(self->f->splitS(
self,delim));
6672 return(self->f->splitCharS(
self,c));
6677 return(self->f->splitSmallJsonS(
self,delim));
6682 return(self->f->splitSmallStringS(
self,delim));
6687 return(self->f->extract(
self, delim1, delim2));
6692 return(self->f->extractCharS(
self,delim1,delim2));
6697 return(self->f->extractSChar(
self,delim1,delim2));
6702 return(self->f->extractCharChar(
self,delim1,delim2));
6707 return(self->f->extractSmallJsonSmallJson(
self,delim1,delim2));
6712 return(self->f->extractSmallJsonSmallString(
self,delim1,delim2));
6717 return(self->f->extractSmallJsonS(
self,delim1,delim2));
6722 return(self->f->extractSmallJsonChar(
self,delim1,delim2));
6727 return(self->f->extractSmallStringSmallJson(
self,delim1,delim2));
6732 return(self->f->extractSmallStringSmallString(
self,delim1,delim2));
6737 return(self->f->extractSmallStringS(
self,delim1,delim2));
6742 return(self->f->extractSmallStringChar(
self,delim1,delim2));
6747 return(self->f->extractSSmallJson(
self,delim1,delim2));
6752 return(self->f->extractSSmallString(
self,delim1,delim2));
6757 return(self->f->extractCharSmallJson(
self,delim1,delim2));
6762 return(self->f->extractCharSmallString(
self,delim1,delim2));
6767 return(self->f->icSplit(
self, delim));
6772 return(self->f->icSplitChar(
self, c));
6777 return(self->f->icSplitSmallJson(
self, delim));
6782 return(self->f->icSplitSmallString(
self, delim));
6787 return(self->f->icSplitS(
self, delim));
6792 return(self->f->icSplitCharS(
self, c));
6797 return(self->f->icSplitSmallJsonS(
self, delim));
6802 return(self->f->icSplitSmallStringS(
self, delim));
6807 return(self->f->icExtract(
self, delim1, delim2));
6812 return(self->f->icExtractCharS(
self,delim1,delim2));
6817 return(self->f->icExtractSChar(
self,delim1,delim2));
6822 return(self->f->icExtractCharChar(
self,delim1,delim2));
6827 return(self->f->icExtractSmallJsonSmallJson(
self,delim1,delim2));
6832 return(self->f->icExtractSmallJsonSmallString(
self,delim1,delim2));
6837 return(self->f->icExtractSmallJsonS(
self,delim1,delim2));
6842 return(self->f->icExtractSmallJsonChar(
self,delim1,delim2));
6847 return(self->f->icExtractSmallStringSmallJson(
self,delim1,delim2));
6852 return(self->f->icExtractSmallStringSmallString(
self,delim1,delim2));
6857 return(self->f->icExtractSmallStringS(
self,delim1,delim2));
6862 return(self->f->icExtractSmallStringChar(
self,delim1,delim2));
6867 return(self->f->icExtractSSmallJson(
self,delim1,delim2));
6872 return(self->f->icExtractSSmallString(
self,delim1,delim2));
6877 return(self->f->icExtractCharSmallJson(
self,delim1,delim2));
6882 return(self->f->icExtractCharSmallString(
self,delim1,delim2));
6887 return(self->f->readFile(
self, filePath));
6892 return(self->f->readFileSmallJson(
self,filePath));
6897 return(self->f->readFileSmallString(
self,filePath));
6902 return(self->f->readStream(
self, fp));
6907 return(self->f->writeFile(
self, filePath));
6912 return(self->f->writeFileSmallJson(
self,filePath));
6917 return(self->f->writeFileSmallString(
self,filePath));
6922 return(self->f->writeStream(
self, fp));
6927 return(self->f->appendFile(
self, filePath));
6932 return(self->f->appendFileSmallString(
self,filePath));
internal bool endsWithSmallJsonSmallString(smallStringt *self, smallJsont *string)
internal smallStringt * icReplaceSCharSmallString(smallStringt *self, const char *olds, char news, size_t max)
internal const char * helpSmallString(smallStringt UNUSED *self)
#define getTopDoubleO(self)
void listFreeS(char **list)
list Free String
internal smallStringt * setSmallArraySmallString(smallStringt *self, smallArrayt *p2)
internal smallStringt * readStreamSmallString(smallStringt *self, FILE *fp)
internal bool equalSSmallString(smallStringt *self, const char *string)
internal bool icEqualSmallString(smallStringt *self, smallStringt *string)
void sStringSetTiny(sStringt **string, const char *news)
set string in small string
bool equalICharSmallStringG(smallStringt *self, char c, int64_t index)
smallStringt * setUint64SmallStringG(smallStringt *self, uint64_t p2)
internal smallStringt * replaceManySmallString(smallStringt *self, const char *paramType,...)
internal void finishSmallString(smallStringt **self)
#define getTopBoolO(self)
bool eqS(const char *string1, const char *string2)
string Equal compare string1 to string2
internal int writeFileSmallStringSmallString(smallStringt *self, smallStringt *filePath)
internal char cropElemSmallString(smallStringt *self, int64_t index)
internal smallStringt * pushNFreeManySmallString(smallStringt *self,...)
#define getTopArrayO(self)
bool isBlankS(const char *string)
is Blank String
smallStringt * setSmallDoubleSmallStringG(smallStringt *self, smallDoublet *p2)
smallArrayt * extractSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *delim1, smallJsont *delim2)
smallArrayt * extractCharCharSmallStringG(smallStringt *self, char delim1, char delim2)
internal smallArrayt * icExtractSmallString(smallStringt *self, const char *delim1, const char *delim2)
internal smallArrayt * icExtractCharSmallJsonSmallString(smallStringt *self, char delim1, smallJsont *delim2)
internal bool icEndsWithSmallJsonSmallString(smallStringt *self, smallJsont *string)
internal char * colordSmallString(smallStringt *self, const char *color)
internal char * hasSmallStringSmallString(smallStringt *self, smallStringt *needle)
internal smallStringt * icReplaceSmallJsonSmallJsonSmallString(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max)
internal smallStringt * setSmallIntSmallString(smallStringt *self, smallIntt *p2)
internal char ** splitSSmallString(smallStringt *self, const char *delim)
internal smallStringt * icFindSmallStringSmallString(smallStringt *self, smallStringt *needle)
internal smallArrayt * icExtractCharCharSmallString(smallStringt *self, char delim1, char delim2)
ssize_t countSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
ssize_t icCountSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
ssize_t icIndexOfCharSmallStringG(smallStringt *self, char c)
internal smallStringt * icReplaceCharCharSmallString(smallStringt *self, char olds, char news, size_t max)
smallArrayt * extractCharSSmallStringG(smallStringt *self, char delim1, const char *delim2)
smallStringt * prependNSmashSmallStringG(smallStringt *self, smallStringt *string)
internal void smashSmallString(smallStringt **self)
smallStringt * icReplaceSmallJsonCharSmallStringG(smallStringt *self, smallJsont *olds, char news, size_t max)
internal smallStringt * rTrimSmallString(smallStringt *self)
internal ssize_t indexOfSmallString(smallStringt *self, const char *needle)
smallStringt * icReplaceSCharSmallStringG(smallStringt *self, const char *olds, char news, size_t max)
char * icHasSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal bool icStartsWithCharSmallString(smallStringt *self, char c)
smallStringt * prependNSmashSmallJsonSmallStringG(smallStringt *self, smallJsont *json)
smallArrayt * icExtractSmallStringG(smallStringt *self, const char *delim1, const char *delim2)
#define ssGet(obj)
get a pointer to the string in the smallString object
#define equalSmallStringO(self, p2)
internal bool endsWithSSmallString(smallStringt *self, const char *string)
internal bool startsWithCharSmallString(smallStringt *self, char c)
char ** iListSliceS(char ***list, int64_t start, int64_t end)
list Slice String return list with elements from start and end in list negative indexes are allowed ...
bool equalSmallStringInt32G(smallStringt *self, int32_t p2)
smallStringt * intToSmallStringG(smallStringt *self, int64_t n)
char * sStringEscapeTiny(sStringt *obj)
stringify string
smallStringt * cropSmallStringG(smallStringt *self, int64_t start, int64_t end)
internal smallStringt * prependNSmashSmallString(smallStringt *self, smallStringt *string)
internal ssize_t indexOfSmallStringSmallString(smallStringt *self, smallStringt *needle)
internal ssize_t icIndexOfSmallJsonSmallString(smallStringt *self, smallJsont *needle)
internal char * toStringSmallString(smallStringt *self)
smallArrayt * icExtractCharCharSmallStringG(smallStringt *self, char delim1, char delim2)
internal smallStringt * icReplaceManySmallString(smallStringt *self, const char *paramType,...)
internal smallArrayt * icExtractSmallJsonSmallJsonSmallString(smallStringt *self, smallJsont *delim1, smallJsont *delim2)
#define RST
reset for color function
internal smallStringt * insertSSmallString(smallStringt *self, int64_t index, const char *toInsert)
smallStringt * icFindSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
internal char * getSmallString(smallStringt *self)
smallStringt * setUint32SmallStringG(smallStringt *self, uint32_t p2)
internal smallStringt * icReplaceSmallStringCharSmallString(smallStringt *self, smallStringt *olds, char news, size_t max)
internal smallArrayt * extractSmallJsonSSmallString(smallStringt *self, smallJsont *delim1, const char *delim2)
smallStringt * replaceSSmallJsonSmallStringG(smallStringt *self, const char *olds, smallJsont *news, size_t max)
char ** icSplitCharSSmallStringG(smallStringt *self, char c)
internal char ** icSplitSmallStringSSmallString(smallStringt *self, smallStringt *delim)
internal smallStringt * appendCharSmallString(smallStringt *self, char c)
bool equalSmallStringSmallJsonG(smallStringt *self, smallJsont *p2)
internal smallStringt * setAtSmallString(smallStringt *self, int64_t index, char c)
internal bool icEqualCharSmallString(smallStringt *self, char c)
internal size_t lenSmallString(smallStringt *self)
internal smallArrayt * splitSmallJsonSmallString(smallStringt *self, smallJsont *delim)
internal smallStringt * readFileSmallStringSmallString(smallStringt *self, smallStringt *filePath)
internal smallStringt * replaceCharSmallJsonSmallString(smallStringt *self, char olds, smallJsont *news, size_t max)
size_t lenSmallStringG(smallStringt *self)
internal smallStringt * findSmallString(smallStringt *self, const char *needle)
int writeFileSmallJsonSmallStringG(smallStringt *self, smallJsont *filePath)
internal smallArrayt * splitCharSmallString(smallStringt *self, char c)
bool equalSSmallStringG(smallStringt *self, const char *string)
smallStringt * insertSNFreeSmallStringG(smallStringt *self, int64_t index, char *toInsert)
#define isOSmallInt(obj)
test if obj type is smallInt
char ** icSplitSmallJsonSSmallStringG(smallStringt *self, smallJsont *delim)
bool icEqualSmallStringBaseG(smallStringt *self, baset *p2)
smallStringt * setDoubleSmallStringG(smallStringt *self, double p2)
ssize_t countSSmallStringG(smallStringt *self, const char *string)
internal bool isBlankSmallString(smallStringt *self)
smallStringt * replaceSmallJsonSSmallStringG(smallStringt *self, smallJsont *olds, const char *news, size_t max)
bool icEqS(const char *string1, const char *string2)
ignore case string Equal compare string1 to string2
char getAtSmallStringG(smallStringt *self, char retType UNUSED, int64_t index)
char * trimS(const char *string)
trim String duplicate string
internal smallStringt * setDoubleSmallString(smallStringt *self, double p2)
smallArrayt * icExtractSmallStringCharSmallStringG(smallStringt *self, smallStringt *delim1, char delim2)
smallStringt * emptySmallStringG(smallStringt *self)
internal char ** splitSmallStringSSmallString(smallStringt *self, smallStringt *delim)
smallArrayt * splitSmallStringG(smallStringt *self, const char *delim)
internal bool icStartsWithSmallStringSmallString(smallStringt *self, smallStringt *string)
bool equalSmallStringInt64G(smallStringt *self, int64_t p2)
ssize_t fileSizeFP(FILE *fp)
get file size from file pointer
#define pFuncError
print function name and system error
internal smallStringt * insertNFreeSmallJsonSmallString(smallStringt *self, int64_t index, smallJsont *toInsert)
internal smallJsont * cropSmallJsonSmallString(smallStringt *self, int64_t start, int64_t end)
bool endsWithSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
internal smallStringt * catSSmallString(smallStringt *self,...)
internal smallArrayt * icSplitSmallStringSmallString(smallStringt *self, smallStringt *delim)
internal int writeFileSmallString(smallStringt *self, const char *filePath)
internal smallArrayt * icExtractSmallJsonSmallStringSmallString(smallStringt *self, smallJsont *delim1, smallStringt *delim2)
smallStringt * setCharSmallStringG(smallStringt *self, char c)
smallArrayt * extractSSmallStringSmallStringG(smallStringt *self, const char *delim1, smallStringt *delim2)
internal smallStringt * icReplaceCharSmallStringSmallString(smallStringt *self, char olds, smallStringt *news, size_t max)
smallStringt * icFindCharSmallStringG(smallStringt *self, char c)
internal smallStringt * icReplaceSmallStringSSmallString(smallStringt *self, smallStringt *olds, const char *news, size_t max)
bool equalISmallStringSmallStringG(smallStringt *self, smallStringt *string, int64_t index)
smallArrayt * icSplitSmallJsonSmallStringG(smallStringt *self, smallJsont *delim)
base class for the small objects all small objects have a type
internal ssize_t icCountCharSmallString(smallStringt *self, char c)
internal smallStringt * appendSSmallString(smallStringt *self, const char *string)
internal smallStringt * replaceSmallJsonSmallStringSmallString(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max)
internal int appendFileSmallStringSmallString(smallStringt *self, smallStringt *filePath)
bool equalISmallJsonSmallStringG(smallStringt *self, smallJsont *string, int64_t index)
char cropElemSmallStringG(smallStringt *self, int64_t index)
smallStringt * duplicateSmallStringG(smallStringt *self)
ssize_t countSmallStringSmallStringG(smallStringt *self, smallStringt *string)
smallStringt * icReplaceCharSSmallStringG(smallStringt *self, char olds, const char *news, size_t max)
smallStringt * appendNSmashSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
smallStringt * replaceCharCharSmallStringG(smallStringt *self, char olds, char news, size_t max)
bool icEndsWithCharSmallStringG(smallStringt *self, char c)
internal char ** icSplitSmallJsonSSmallString(smallStringt *self, smallJsont *delim)
internal smallStringt * setInt32SmallString(smallStringt *self, int32_t p2)
smallStringt * findSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal smallStringt * setFromSmallJsonSmallString(smallStringt *self, smallJsont *p2)
internal smallStringt * replaceSSmallStringSmallString(smallStringt *self, const char *olds, smallStringt *news, size_t max)
smallArrayt * splitSmallStringSmallStringG(smallStringt *self, smallStringt *delim)
ssize_t icIndexOfSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
smallStringt * setBoolSmallStringG(smallStringt *self, bool p2)
smallStringt * icReplaceSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max)
internal bool equalSmallStringDouble(smallStringt *self, double p2)
internal smallArrayt * icExtractSmallJsonSSmallString(smallStringt *self, smallJsont *delim1, const char *delim2)
internal smallStringt * upperSmallString(smallStringt *self)
#define helpTextSmallString
help text for this class It is public declaration so that child classes can add their help text easil...
internal char ** splitCharSSmallString(smallStringt *self, char c)
#define isError(assigned, left)
is Assigment Error catch error when assigned is false, 0 or NULL after being assigned with left ...
void cleanUpSmallStringFreeG(smallStringt **val)
smallStringt * replaceSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max)
internal bool endsWithCharSmallString(smallStringt *self, char c)
internal smallArrayt * extractSmallString(smallStringt *self, const char *delim1, const char *delim2)
internal bool equalSmallStringSmallInt(smallStringt *self, smallIntt *p2)
smallStringt * doubleToSmallStringG(smallStringt *self, double n)
smallStringt * insertSSmallStringG(smallStringt *self, int64_t index, const char *toInsert)
bool endsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string)
char * sStringGetTiny(sStringt *string)
get string in a small string object
smallStringt * icFindSmallStringG(smallStringt *self, const char *needle)
char ** icSplit(const char *string, const char *delim)
ignore case split string with delim string when updating this function, also update icSplitS (identic...
internal smallStringt * replaceSmallStringCharSmallString(smallStringt *self, smallStringt *olds, char news, size_t max)
internal smallArrayt * icExtractSmallJsonCharSmallString(smallStringt *self, smallJsont *delim1, char delim2)
internal smallStringt * insertSmallString(smallStringt *self, int64_t index, smallStringt *toInsert)
char * hasSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
bool icStartsWithSSmallStringG(smallStringt *self, const char *string)
internal smallStringt * pushNFreeManySSmallString(smallStringt *self,...)
smallArrayt * icExtractCharSSmallStringG(smallStringt *self, char delim1, const char *delim2)
internal smallArrayt * splitSmallStringSmallString(smallStringt *self, smallStringt *delim)
internal smallArrayt * icExtractCharSmallStringSmallString(smallStringt *self, char delim1, smallStringt *delim2)
smallArrayt * icExtractSSmallJsonSmallStringG(smallStringt *self, const char *delim1, smallJsont *delim2)
internal smallStringt * icReplaceCharSmallJsonSmallString(smallStringt *self, char olds, smallJsont *news, size_t max)
int writeFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath)
#define pStrError(str)
print string and system error
internal ssize_t countSmallJsonSmallString(smallStringt *self, smallJsont *string)
internal void freeSmallString(smallStringt *self)
internal smallArrayt * extractSmallJsonSmallStringSmallString(smallStringt *self, smallJsont *delim1, smallStringt *delim2)
#define getTopTypeO(self)
bool equalSmallStringFG(smallStringt *self, smallStringt *p2)
bool icStartsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string)
#define isOSmallJson(obj)
test if obj type is smallJson
int appendFileSmallStringFG(smallStringt *self, const char *filePath)
internal smallArrayt * icExtractSmallStringSSmallString(smallStringt *self, smallStringt *delim1, const char *delim2)
smallArrayt * icExtractSmallJsonSSmallStringG(smallStringt *self, smallJsont *delim1, const char *delim2)
smallStringt * setSmallBoolSmallStringG(smallStringt *self, smallBoolt *p2)
smallStringFunctionst * f
internal smallStringt * icReplaceSmallString(smallStringt *self, const char *olds, const char *news, size_t max)
smallStringt * delSmallStringG(smallStringt *self, int64_t start, int64_t end)
internal int64_t parseIntSmallString(smallStringt *self)
char * icTokS(char *s, const char *delim, char **saveptr)
ignore case token in String
smallStringt * createSF(const char *paramType,...)
create String: f("qwd ", str," werr ", str2) like catS, concatenate strings to a new smallString ...
smallt * sDuplicateTiny(smallt *obj)
duplicate small object
smallStringt * upperSmallStringG(smallStringt *self)
internal smallStringt * prependSSmallString(smallStringt *self, const char *string)
#define createAllocateSmallJson(obj)
internal smallStringt * setSmallJsonSmallString(smallStringt *self, smallJsont *p2)
internal smallStringt * icUniqSmallString(smallStringt *self, char c)
internal smallArrayt * icExtractCharSSmallString(smallStringt *self, char delim1, const char *delim2)
smallArrayt * icExtractSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *delim1, smallStringt *delim2)
bool isIntSmallStringG(smallStringt *self)
#define terminateO(obj)
free buffers and obj itself
bool equalSmallStringSmallIntG(smallStringt *self, smallIntt *p2)
internal smallArrayt * extractSCharSmallString(smallStringt *self, const char *delim1, char delim2)
internal smallStringt * copySmallString(smallStringt *self, int64_t start, int64_t end)
smallStringt * setSmallStringSmallStringG(smallStringt *self, smallStringt *p2)
smallStringt * icReplaceSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max)
smallStringt * icReplaceSSmallStringSmallStringG(smallStringt *self, const char *olds, smallStringt *news, size_t max)
ssize_t indexOfS(const char *string, const char *needle)
indexOf String relative to start
smallStringt * findSmallStringG(smallStringt *self, const char *needle)
pErrorNULL(iPrependS(&ks, "[1]"))
internal bool equalSmallStringSmallJson(smallStringt *self, smallJsont *p2)
smallStringt * rTrimSmallStringG(smallStringt *self)
smallStringt * prependCharSmallStringG(smallStringt *self, char c)
#define isOSmallBytes(obj)
test if obj type is smallBytes
smallArrayt * icExtractSmallStringSSmallStringG(smallStringt *self, smallStringt *delim1, const char *delim2)
internal smallStringt * prependSmallJsonSmallString(smallStringt *self, smallJsont *json)
internal smallStringt * icReplaceSmallJsonSmallStringSmallString(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max)
double parseDoubleSmallStringG(smallStringt *self)
smallStringt * setFromSmallDictSmallStringG(smallStringt *self, smallDictt *p2)
smallStringt * findCharSmallStringG(smallStringt *self, char c)
internal smallStringt * insertSNFreeSmallString(smallStringt *self, int64_t index, char *toInsert)
bool icEqualCharSmallStringG(smallStringt *self, char c)
internal smallStringt * findCharSmallString(smallStringt *self, char c)
smallStringt * replaceSmallJsonCharSmallStringG(smallStringt *self, smallJsont *olds, char news, size_t max)
internal smallStringt * sliceSmallString(smallStringt *self, int64_t start, int64_t end)
internal bool startsWithSSmallString(smallStringt *self, const char *string)
internal ssize_t icCountSmallJsonSmallString(smallStringt *self, smallJsont *string)
internal smallStringt * uniqSmallString(smallStringt *self, char c)
char * icHasCharSmallStringG(smallStringt *self, char c)
bool isBlankSmallStringG(smallStringt *self)
smallStringt * setInt32SmallStringG(smallStringt *self, int32_t p2)
internal smallStringt * findSmallStringSmallString(smallStringt *self, smallStringt *needle)
ssize_t icIndexOfCharS(const char *string, char c)
ssize_t indexOfSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal smallArrayt * icSplitCharSmallString(smallStringt *self, char c)
internal bool icEndsWithSmallStringSmallString(smallStringt *self, smallStringt *string)
smallStringt * icReplaceSmallStringCharSmallStringG(smallStringt *self, smallStringt *olds, char news, size_t max)
internal smallStringt * appendNSmashSmallJsonSmallString(smallStringt *self, smallJsont *string)
smallStringt * lowerSmallStringG(smallStringt *self)
internal char * cropSSmallString(smallStringt *self, int64_t start, int64_t end)
char ** splitCharSSmallStringG(smallStringt *self, char c)
internal ssize_t indexOfSmallJsonSmallString(smallStringt *self, smallJsont *needle)
int writeFileSmallStringG(smallStringt *self, const char *filePath)
smallStringt * setAtSmallStringG(smallStringt *self, int64_t index, char c)
internal ssize_t icIndexOfSmallString(smallStringt *self, const char *needle)
internal bool equalSmallStringUint64(smallStringt *self, uint64_t p2)
internal smallStringt * replaceSmallJsonSmallJsonSmallString(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max)
smallStringt * icReplaceSSmallJsonSmallStringG(smallStringt *self, const char *olds, smallJsont *news, size_t max)
void cleanUpSmallStringFinishG(smallStringt **val)
internal smallArrayt * extractSmallJsonSmallJsonSmallString(smallStringt *self, smallJsont *delim1, smallJsont *delim2)
internal smallStringt * delSmallString(smallStringt *self, int64_t start, int64_t end)
internal double parseDoubleSmallString(smallStringt *self)
toStringSmallStringFt toString
internal smallArrayt * extractSmallStringSmallJsonSmallString(smallStringt *self, smallStringt *delim1, smallJsont *delim2)
internal bool equalSmallStringSmallBytes(smallStringt *self, smallBytest *p2)
bool icEndsWithSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
smallStringt * appendSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
internal smallStringt * appendSmallJsonSmallString(smallStringt *self, smallJsont *string)
int writeStreamSmallStringG(smallStringt *self, FILE *fp)
internal char * escapeSmallString(smallStringt *self)
void cleanUpSmallStringFreeLocalG(smallStringt *val)
smallArrayt * icExtractCharSmallStringSmallStringG(smallStringt *self, char delim1, smallStringt *delim2)
internal smallStringt * replaceSCharSmallString(smallStringt *self, const char *olds, char news, size_t max)
char * cropSSmallStringG(smallStringt *self, int64_t start, int64_t end)
internal ssize_t countCharSmallString(smallStringt *self, char c)
ssize_t icIndexOfS(const char *string, const char *needle)
ignore case indexOf String relative to start
internal smallStringt * setSmallBoolSmallString(smallStringt *self, smallBoolt *p2)
internal smallStringt * prependCharSmallString(smallStringt *self, char c)
internal smallArrayt * extractCharSmallStringSmallString(smallStringt *self, char delim1, smallStringt *delim2)
internal smallArrayt * extractCharSSmallString(smallStringt *self, char delim1, const char *delim2)
smallArrayt * extractSmallStringCharSmallStringG(smallStringt *self, smallStringt *delim1, char delim2)
bool icEqualSmallStringFG(smallStringt *self, smallStringt *p2)
smallStringt * appendNSmashSSmallStringG(smallStringt *self, char *string)
char * sliceS(const char *string, int64_t start, int64_t end)
slice String return new string which is the string between start and end negative indexes are allowed...
bool equalSmallStringDoubleG(smallStringt *self, double p2)
internal smallStringt * icFindSmallJsonSmallString(smallStringt *self, smallJsont *needle)
char * emptySF(void)
empty String Function
smallStringt * replaceSmallStringG(smallStringt *self, const char *olds, const char *news, size_t max)
internal bool equalISSmallString(smallStringt *self, const char *string, int64_t index)
#define toStringO(obj)
convert data in obj to string
smallStringt * appendCharSmallStringG(smallStringt *self, char c)
smallArrayt * icExtractSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *delim1, smallJsont *delim2)
bool isNumber(const char *string)
is Number (integer or float) String
smallStringt * injectSmallStringG(smallStringt *self, int64_t index, char toInject)
internal bool equalICharSmallString(smallStringt *self, char c, int64_t index)
int appendFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath)
smallArrayt * splitCharSmallStringG(smallStringt *self, char c)
internal smallStringt * setUint32SmallString(smallStringt *self, uint32_t p2)
internal bool equalISmallJsonSmallString(smallStringt *self, smallJsont *string, int64_t index)
internal smallStringt * icReplaceSmallJsonSSmallString(smallStringt *self, smallJsont *olds, const char *news, size_t max)
internal smallStringt * replaceSmallStringSmallJsonSmallString(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max)
ssize_t icIndexOfSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal ssize_t icIndexOfSmallStringSmallString(smallStringt *self, smallStringt *needle)
internal ssize_t indexOfCharSmallString(smallStringt *self, char c)
smallStringt * copySmallStringG(smallStringt *self, int64_t start, int64_t end)
internal smallStringt * setSmallStringSmallString(smallStringt *self, smallStringt *p2)
smallStringt * uniqSmallStringG(smallStringt *self, char c)
smallStringt * readFileSmallStringG(smallStringt *self, const char *filePath)
smallStringt * appendSSmallStringG(smallStringt *self, const char *string)
char * strLCpy(char *restrict dst, size_t dstSize, const char *restrict src)
strLCpy - copy src to dst
internal smallStringt * setBoolSmallString(smallStringt *self, bool p2)
smallStringt * insertSmallStringG(smallStringt *self, int64_t index, smallStringt *toInsert)
smallStringt * replaceSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max)
smallStringt * replaceSmallStringSSmallStringG(smallStringt *self, smallStringt *olds, const char *news, size_t max)
internal ssize_t icCountSmallStringSmallString(smallStringt *self, smallStringt *string)
void cleanUpSmallStringTerminateG(smallStringt **val)
internal bool startsWithSmallJsonSmallString(smallStringt *self, smallJsont *string)
smallStringt * prependSSmallStringG(smallStringt *self, const char *string)
internal smallStringt * catSmallString(smallStringt *self,...)
char ** icSplitSmallStringSSmallStringG(smallStringt *self, smallStringt *delim)
ssize_t indexOfCharSmallStringG(smallStringt *self, char c)
internal smallStringt * replaceSmallString(smallStringt *self, const char *olds, const char *news, size_t max)
smallStringt * appendSmallStringG(smallStringt *self, smallStringt *string)
bool equalSmallStringUint64G(smallStringt *self, uint64_t p2)
internal bool endsWithSmallStringSmallString(smallStringt *self, smallStringt *string)
internal char * icHasSmallJsonSmallString(smallStringt *self, smallJsont *needle)
internal smallStringt * replaceSmallJsonCharSmallString(smallStringt *self, smallJsont *olds, char news, size_t max)
#define setTopStringO(self, value)
smallStringt * setFromSmallJsonSmallStringG(smallStringt *self, smallJsont *p2)
void initiateAllocateSmallString(smallStringt **self)
internal smallStringt * colorSmallString(smallStringt *self, const char *colr)
internal bool icStartsWithSSmallString(smallStringt *self, const char *string)
ssize_t icCountSmallStringSmallStringG(smallStringt *self, smallStringt *string)
bool isEmptySmallStringG(smallStringt *self)
bool isInt(const char *string)
is Integer String
smallArrayt * extractSmallStringSSmallStringG(smallStringt *self, smallStringt *delim1, const char *delim2)
smallStringt * prependNSmashSSmallStringG(smallStringt *self, char *string)
internal smallStringt * readFileSmallJsonSmallString(smallStringt *self, smallJsont *filePath)
internal bool equalSmallStringSmallDouble(smallStringt *self, smallDoublet *p2)
smallStringt * sliceSmallStringG(smallStringt *self, int64_t start, int64_t end)
ssize_t icIndexOfSmallStringG(smallStringt *self, const char *needle)
smallStringt * replaceSSmallStringSmallStringG(smallStringt *self, const char *olds, smallStringt *news, size_t max)
internal smallStringt * appendNSmashSSmallString(smallStringt *self, char *string)
internal bool equalSmallStringInt64(smallStringt *self, int64_t p2)
smallStringt * prependSmallJsonSmallStringG(smallStringt *self, smallJsont *json)
smallArrayt * icExtractSSmallStringSmallStringG(smallStringt *self, const char *delim1, smallStringt *delim2)
internal smallStringt * setUint64SmallString(smallStringt *self, uint64_t p2)
internal smallArrayt * extractSmallStringCharSmallString(smallStringt *self, smallStringt *delim1, char delim2)
int64_t parseIntSmallStringG(smallStringt *self)
internal bool equalISmallStringSmallString(smallStringt *self, smallStringt *string, int64_t index)
internal ssize_t countSmallStringSmallString(smallStringt *self, smallStringt *string)
bool icStartsWithSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
internal smallStringt * setFromSmallDictSmallString(smallStringt *self, smallDictt *p2)
char ** splitSmallStringSSmallStringG(smallStringt *self, smallStringt *delim)
#define isOSmallDouble(obj)
test if obj type is smallDouble
internal bool icEndsWithCharSmallString(smallStringt *self, char c)
internal smallArrayt * splitSmallString(smallStringt *self, const char *delim)
internal smallStringt * lowerSmallString(smallStringt *self)
internal smallStringt * setInt64SmallString(smallStringt *self, int64_t p2)
bool icEqualSSmallStringG(smallStringt *self, const char *string)
internal smallStringt * emptySmallString(smallStringt *self)
internal char * hasSmallString(smallStringt *self, const char *needle)
internal smallArrayt * icExtractSmallStringSmallJsonSmallString(smallStringt *self, smallStringt *delim1, smallJsont *delim2)
smallStringt * setSmallArraySmallStringG(smallStringt *self, smallArrayt *p2)
internal smallStringt * prependSmallString(smallStringt *self, smallStringt *string)
smallStringt * replaceCharSSmallStringG(smallStringt *self, char olds, const char *news, size_t max)
internal smallArrayt * icExtractSSmallJsonSmallString(smallStringt *self, const char *delim1, smallJsont *delim2)
internal smallArrayt * extractSmallStringSSmallString(smallStringt *self, smallStringt *delim1, const char *delim2)
internal bool isEmptySmallString(smallStringt *self)
internal smallStringt * icFindCharSmallString(smallStringt *self, char c)
bool icEqualSmallStringSmallJsonG(smallStringt *self, smallJsont *p2)
#define isOSmallDict(obj)
test if obj type is smallDictt
bool icEndsWithSSmallStringG(smallStringt *self, const char *string)
internal smallStringt * icReplaceSmallStringSmallJsonSmallString(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max)
internal char * icHasSmallStringSmallString(smallStringt *self, smallStringt *needle)
internal smallArrayt * icExtractSSmallStringSmallString(smallStringt *self, const char *delim1, smallStringt *delim2)
#define BLD
bold for color function
internal char * icHasSmallString(smallStringt *self, const char *needle)
internal smallStringt * delElemSmallString(smallStringt *self, int64_t index)
smallStringt * readFileSmallJsonSmallStringG(smallStringt *self, smallJsont *filePath)
ssize_t icCountSSmallStringG(smallStringt *self, const char *string)
smallStringt * lTrimSmallStringG(smallStringt *self)
finishSmallStringFt finish
END_TEST createSmallArray(obj)
smallArrayt * extractSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *delim1, smallStringt *delim2)
internal bool equalSmallStringSmallBool(smallStringt *self, smallBoolt *p2)
initiateAllocateSmallJson & json
internal char ** icSplitCharSSmallString(smallStringt *self, char c)
smallArrayt * extractSSmallJsonSmallStringG(smallStringt *self, const char *delim1, smallJsont *delim2)
internal smallArrayt * extractSSmallStringSmallString(smallStringt *self, const char *delim1, smallStringt *delim2)
smallStringt * appendNSmashSmallStringG(smallStringt *self, smallStringt *string)
bool equalCharSmallStringG(smallStringt *self, char c)
char * tokS(char *s, const char *delim, char **saveptr)
token in String
internal char ** splitSmallJsonSSmallString(smallStringt *self, smallJsont *delim)
smallStringt * delElemSmallStringG(smallStringt *self, int64_t index)
smallStringt * setSmallJsonSmallStringG(smallStringt *self, smallJsont *p2)
ssize_t countCharSmallStringG(smallStringt *self, char c)
smallStringt * insertSmallJsonSmallStringG(smallStringt *self, int64_t index, smallJsont *toInsert)
#define isOSmallBool(obj)
test if obj type is smallBool
internal smallStringt * duplicateSmallString(smallStringt *self)
internal bool equalSmallStringBase(smallStringt *self, baset *p2)
smallStringt * findSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
internal smallStringt * replaceCharSmallStringSmallString(smallStringt *self, char olds, smallStringt *news, size_t max)
ssize_t icCountCharSmallStringG(smallStringt *self, char c)
smallArrayt * extractSmallStringG(smallStringt *self, const char *delim1, const char *delim2)
bool equalSmallStringSmallDoubleG(smallStringt *self, smallDoublet *p2)
internal char ** icSplitSSmallString(smallStringt *self, const char *delim)
smallStringt * insertNFreeSmallJsonSmallStringG(smallStringt *self, int64_t index, smallJsont *toInsert)
bool endsWithSSmallStringG(smallStringt *self, const char *string)
duplicateSmallStringFt duplicate
internal smallArrayt * icSplitSmallString(smallStringt *self, const char *delim)
internal bool equalSmallString(smallStringt *self, smallStringt *string)
smallArrayt * extractCharSmallJsonSmallStringG(smallStringt *self, char delim1, smallJsont *delim2)
smallStringt * icReplaceSmallStringSSmallStringG(smallStringt *self, smallStringt *olds, const char *news, size_t max)
smallStringt * icReplaceCharSmallStringSmallStringG(smallStringt *self, char olds, smallStringt *news, size_t max)
smallArrayt * extractSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *delim1, smallStringt *delim2)
internal smallArrayt * icExtractSmallStringSmallStringSmallString(smallStringt *self, smallStringt *delim1, smallStringt *delim2)
smallArrayt * extractSmallJsonSSmallStringG(smallStringt *self, smallJsont *delim1, const char *delim2)
internal smallStringt * insertNFreeSmallString(smallStringt *self, int64_t index, smallStringt *toInsert)
smallArrayt * icExtractSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *delim1, smallJsont *delim2)
#define delO(self, start, end)
internal smallStringt * setSmallDoubleSmallString(smallStringt *self, smallDoublet *p2)
internal int appendFileSmallString(smallStringt *self, const char *filePath)
smallStringt * icReplaceCharSmallJsonSmallStringG(smallStringt *self, char olds, smallJsont *news, size_t max)
smallArrayt * icExtractCharSmallJsonSmallStringG(smallStringt *self, char delim1, smallJsont *delim2)
smallStringt * replaceCharSmallJsonSmallStringG(smallStringt *self, char olds, smallJsont *news, size_t max)
internal smallStringt * icReplaceSSmallStringSmallString(smallStringt *self, const char *olds, smallStringt *news, size_t max)
smallStringt * prependSmallStringG(smallStringt *self, smallStringt *string)
internal char * icHasCharSmallString(smallStringt *self, char c)
smallArrayt * icSplitSmallStringG(smallStringt *self, const char *delim)
internal smallStringt * replaceSSmallJsonSmallString(smallStringt *self, const char *olds, smallJsont *news, size_t max)
smallStringt * replaceSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max)
bool equalSmallStringUint32G(smallStringt *self, uint32_t p2)
smallArrayt * icSplitSmallStringSmallStringG(smallStringt *self, smallStringt *delim)
bool icEndsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string)
smallArrayt * splitSmallJsonSmallStringG(smallStringt *self, smallJsont *delim)
internal bool equalSmallStringInt32(smallStringt *self, int32_t p2)
smallStringt * setInt64SmallStringG(smallStringt *self, int64_t p2)
smallStringt * icFindSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal smallStringt * icFindSmallString(smallStringt *self, const char *needle)
char * hasSmallStringG(smallStringt *self, const char *needle)
char ** splitSmallJsonSSmallStringG(smallStringt *self, smallJsont *delim)
smallStringt * icReplaceSmallStringG(smallStringt *self, const char *olds, const char *news, size_t max)
#define forEachCharP(list, element)
forEach - loop macro on list indexes to access the element in the loop, use *element ...
internal smallStringt * replaceCharCharSmallString(smallStringt *self, char olds, char news, size_t max)
smallStringt * allocSmallString(const char *string)
internal smallStringt * appendNSmashSmallString(smallStringt *self, smallStringt *string)
char ** split(const char *string, const char *delim)
split string with delim string when updating this function, also update splitS (identical to split) r...
internal smallStringt * prependNSmashSSmallString(smallStringt *self, char *string)
#define createAllocateSmallString(obj)
bool endsWithCharSmallStringG(smallStringt *self, char c)
char * icHasSmallStringG(smallStringt *self, const char *needle)
internal smallStringt * replaceSmallStringSSmallString(smallStringt *self, smallStringt *olds, const char *news, size_t max)
smallStringt * readStreamSmallStringG(smallStringt *self, FILE *fp)
internal bool icEndsWithSSmallString(smallStringt *self, const char *string)
internal smallStringt * prependNSmashSmallJsonSmallString(smallStringt *self, smallJsont *json)
smallArrayt * extractSCharSmallStringG(smallStringt *self, const char *delim1, char delim2)
internal bool icEqualSmallStringSmallJson(smallStringt *self, smallJsont *p2)
#define rangeFrom(index, from, maxCount)
range loop starting at value from ;size_t UNIQVAR needed to avoid: error: a label can only be part of...
char * sStringToStringTiny(sStringt *obj)
stringify string
internal smallStringt * intToSmallString(smallStringt *self, int64_t n)
bool equalSmallStringSmallBoolG(smallStringt *self, smallBoolt *p2)
bool equalSmallStringBaseG(smallStringt *self, baset *p2)
#define sjGet(obj)
get a pointer to the string in the smallJson object
smallStringt * icUniqSmallStringG(smallStringt *self, char c)
internal smallStringt * readFileSmallString(smallStringt *self, const char *filePath)
smallStringt * readFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath)
internal smallArrayt * extractCharSmallJsonSmallString(smallStringt *self, char delim1, smallJsont *delim2)
bool equalSmallStringSmallBytesG(smallStringt *self, smallBytest *p2)
void shEPrintfS(const char *fmt,...)
sheepy Error printf String print with logE
void finalizeRecycleSmallString(void *arg UNUSED)
internal smallStringt * appendSmallString(smallStringt *self, smallStringt *string)
internal bool icEqualSmallStringBase(smallStringt *self, baset *p2)
ssize_t indexOfCharS(const char *string, char c)
internal smallArrayt * extractSmallStringSmallStringSmallString(smallStringt *self, smallStringt *delim1, smallStringt *delim2)
internal bool icStartsWithSmallJsonSmallString(smallStringt *self, smallJsont *string)
void registerMethodsSmallString(smallStringFunctionst *f)
#define freeO(obj)
free buffers in obj
internal smallStringt * cropSmallString(smallStringt *self, int64_t start, int64_t end)
internal char getAtSmallString(smallStringt *self, int64_t index)
char ** splitCharPSSmallStringG(smallStringt *self, const char *delim)
smallStringt * insertNFreeSmallStringG(smallStringt *self, int64_t index, smallStringt *toInsert)
smallArrayt * icExtractSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *delim1, smallStringt *delim2)
void initiateSmallString(smallStringt *self)
bool isNumberSmallStringG(smallStringt *self)
char * hasSmallStringSmallStringG(smallStringt *self, smallStringt *needle)
internal bool isIntSmallString(smallStringt *self)
internal char * hasCharSmallString(smallStringt *self, char c)
bool icStartsWithCharSmallStringG(smallStringt *self, char c)
internal smallArrayt * extractSmallJsonCharSmallString(smallStringt *self, smallJsont *delim1, char delim2)
bool startsWithCharSmallStringG(smallStringt *self, char c)
internal smallStringt * injectSmallString(smallStringt *self, int64_t index, char toInject)
internal smallStringt * lTrimSmallString(smallStringt *self)
smallStringt * replaceSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max)
smallStringt * setSmallIntSmallStringG(smallStringt *self, smallIntt *p2)
internal smallStringt * trimSmallString(smallStringt *self)
internal smallArrayt * icSplitSmallJsonSmallString(smallStringt *self, smallJsont *delim)
internal bool equalSmallStringBool(smallStringt *self, bool p2)
smallArrayt * icExtractSmallJsonCharSmallStringG(smallStringt *self, smallJsont *delim1, char delim2)
size_t listLengthS(char **list)
list Length String return number of elements until the first NULL element
internal bool startsWithSmallStringSmallString(smallStringt *self, smallStringt *string)
char ** listPushS(char ***list, const char *s)
list Push String append s at the end of the list when list is NULL, a new list with one element is re...
void finalizeSmallString(void)
ssize_t fileSize(const char *filePath)
get file size
internal smallStringt * icReplaceSmallJsonCharSmallString(smallStringt *self, smallJsont *olds, char news, size_t max)
internal smallStringt * setNFreeSmallString(smallStringt *self, char *string)
ssize_t indexOfSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
internal bool equalCharSmallString(smallStringt *self, char c)
internal ssize_t icCountSSmallString(smallStringt *self, const char *string)
internal smallArrayt * icExtractSCharSmallString(smallStringt *self, const char *delim1, char delim2)
internal smallStringt * replaceCharSSmallString(smallStringt *self, char olds, const char *news, size_t max)
bool equalISSmallStringG(smallStringt *self, const char *string, int64_t index)
smallStringt * icReplaceSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max)
char * icHasSmallJsonSmallStringG(smallStringt *self, smallJsont *needle)
smallStringt * icReplaceSmallJsonSSmallStringG(smallStringt *self, smallJsont *olds, const char *news, size_t max)
bool startsWithSmallJsonSmallStringG(smallStringt *self, smallJsont *string)
internal int writeStreamSmallString(smallStringt *self, FILE *fp)
internal smallStringt * findSmallJsonSmallString(smallStringt *self, smallJsont *needle)
internal smallStringt * icReplaceCharSSmallString(smallStringt *self, char olds, const char *news, size_t max)
smallArrayt * extractSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *delim1, smallJsont *delim2)
internal smallStringt * doubleToSmallString(smallStringt *self, double n)
smallStringt * replaceCharSmallStringSmallStringG(smallStringt *self, char olds, smallStringt *news, size_t max)
smallStringt * setSmallStringG(smallStringt *self, const char *p2)
internal smallStringt * icReplaceSmallStringSmallStringSmallString(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max)
ssize_t indexOfSmallStringG(smallStringt *self, const char *needle)
internal smallArrayt * extractCharCharSmallString(smallStringt *self, char delim1, char delim2)
smallStringt * trimSmallStringG(smallStringt *self)
smallArrayt * extractSmallJsonCharSmallStringG(smallStringt *self, smallJsont *delim1, char delim2)
terminateSmallStringFt terminate
smallStringt * replaceSmallStringCharSmallStringG(smallStringt *self, smallStringt *olds, char news, size_t max)
internal int writeFileSmallJsonSmallString(smallStringt *self, smallJsont *filePath)
#define createAllocateSmallArray(obj)
internal void terminateSmallString(smallStringt **self)
bool startsWithSSmallStringG(smallStringt *self, const char *string)
#define finishO(obj)
free container only
#define isOSmallArray(obj)
test if obj type is smallArray
bool startsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string)
char ** icSplitCharPSSmallStringG(smallStringt *self, char *delim)
smallStringt * icReplaceCharCharSmallStringG(smallStringt *self, char olds, char news, size_t max)
internal smallStringt * replaceSmallJsonSSmallString(smallStringt *self, smallJsont *olds, const char *news, size_t max)
internal smallStringt * insertSmallJsonSmallString(smallStringt *self, int64_t index, smallJsont *toInsert)
internal smallStringt * replaceSmallStringSmallStringSmallString(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max)
smallStringt * icReplaceSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max)
smallStringt * replaceSCharSmallStringG(smallStringt *self, const char *olds, char news, size_t max)
smallJsont * cropSmallJsonSmallStringG(smallStringt *self, int64_t start, int64_t end)
internal bool equalSmallStringUint32(smallStringt *self, uint32_t p2)
internal ssize_t icIndexOfCharSmallString(smallStringt *self, char c)
internal bool icEqualSSmallString(smallStringt *self, const char *string)
internal smallStringt * setCharSmallString(smallStringt *self, char c)
internal smallArrayt * extractSSmallJsonSmallString(smallStringt *self, const char *delim1, smallJsont *delim2)
void freeSmallStringG(smallStringt *self)
bool equalSmallStringBoolG(smallStringt *self, bool p2)
smallArrayt * icExtractSCharSmallStringG(smallStringt *self, const char *delim1, char delim2)
internal char * hasSmallJsonSmallString(smallStringt *self, smallJsont *needle)
internal smallArrayt * icExtractSmallStringCharSmallString(smallStringt *self, smallStringt *delim1, char delim2)
char * hasCharSmallStringG(smallStringt *self, char c)
internal smallStringt * icReplaceSSmallJsonSmallString(smallStringt *self, const char *olds, smallJsont *news, size_t max)
#define getTopDictO(self)
internal bool isNumberSmallString(smallStringt *self)
internal smallStringt * setSmallString(smallStringt *self, const char *string)
smallArrayt * extractCharSmallStringSmallStringG(smallStringt *self, char delim1, smallStringt *delim2)
smallArrayt * icSplitCharSmallStringG(smallStringt *self, char c)
internal ssize_t countSSmallString(smallStringt *self, const char *string)
#define isOSmallString(obj)
test if obj type is smallString