23 #include "../libsheepyObject.h" 26 #include "../../release/libsheepy.h" 28 #define internal static 253 internal int sortSCmp(
const void *
a,
const void *
b);
255 #if (__APPLE__ || __FreeBSD__ || __DragonFly__) 256 internal int sortFCmp(
void *func,
const void *
a,
const void *
b);
258 internal int sortFCmp(
const void *
a,
const void *
b,
void *func);
260 internal int icSortSCmp(
const void *
a,
const void *
b);
262 #if (__APPLE__ || __FreeBSD__ || __DragonFly__) 933 self->type =
"smallArray";
941 self->f = smallArrayF;
944 self->iterIndex = -1;
946 self->iterElement = NULL;
947 self->iterElementDataType = 0;
1424 #if (recycleContainers) 1500 va_start(pl, paramType);
1501 paramType = va_arg(pl,
const char *);
1504 paramType = va_arg(pl,
const char *);
1512 #if (recycleContainers) 1543 return(strdup(
"[]"));
1554 dup->iterElementDataType =
self->iterElementDataType;
1562 dup->iterIndex =
self->iterIndex;
1563 dup->iterStep =
self->iterStep;
1564 if (dup->iterIndex != -1) {
1574 return(strdup(
"[]"));
1599 #if (NFreeStackCheck) 1604 register u64 rsp
asm(
"rsp");
1605 if ((
u64)*
self > rsp) {
1606 logW(
"Probably trying to free a smallArray on stack: "BLD PRIx64
RST" sp: "BLD PRIx64
RST, *
self, rsp);
1610 #if (recycleContainers) 1626 #if (recycleContainers) 1645 if (self->iterIndex != -1) {
1649 self->iterElement = NULL;
1650 self->iterIndex = -1;
1678 mirror->a =
self->a;
1680 mirror->iterElementDataType =
self->iterElementDataType;
1681 mirror->iterIndex =
self->iterIndex;
1682 mirror->iterStep =
self->iterStep;
1683 if (mirror->iterIndex != -1) {
1712 for (
size_t i = 0 ;
i < size ;
i++) {
1750 for (
size_t i = 0 ;
i < size ;
i++) {
1776 for (
size_t i = 0 ;
i < size ;
i++) {
1944 if (checkObjectTypes && value && !
isOSmallBool(value)) {
1952 if (!value->
value) {
1986 if (!value->
value) {
1995 if (checkObjectTypes && value && !
isOSmallInt(value)) {
2003 if (!value->
value) {
2012 if (checkObjectTypes && value && !
isOSmallJson(value)) {
2041 if (!string->
data) {
2058 if (!container->
data) {
2194 baset *paramType = NULL;
2198 paramType = va_arg(pl,
baset*);
2205 paramType = va_arg(pl,
baset*);
2213 char *paramType = NULL;
2217 paramType = va_arg(pl,
char*);
2224 paramType = va_arg(pl,
char*);
2232 baset *paramType = NULL;
2236 paramType = va_arg(pl,
baset*);
2243 paramType = va_arg(pl,
baset*);
2251 char *paramType = NULL;
2255 paramType = va_arg(pl,
char*);
2262 paramType = va_arg(pl,
char*);
2278 for (
size_t i = len ;
i != 0 ;
i--) {
2315 for (
size_t i = len ;
i != 0 ;
i--) {
2379 r = (int32_t)e->
f->get(e);
2391 r = (uint64_t)e->
f->get(e);
2403 r = (uint32_t)e->
f->get(e);
2430 for (
size_t i = len ;
i != 0 ;
i--) {
2460 for (
size_t i = len ;
i != 0 ;
i--) {
2490 for (
size_t i = len ;
i != 0 ;
i--) {
2520 for (
size_t i = len ;
i != 0 ;
i--) {
2550 for (
size_t i = len ;
i != 0 ;
i--) {
2580 for (
size_t i = len ;
i != 0 ;
i--) {
2610 for (
size_t i = len ;
i != 0 ;
i--) {
2648 for (
size_t i = len ;
i != 0 ;
i--) {
2690 for (
size_t i = len ;
i != 0 ;
i--) {
2724 for (
size_t i = len ;
i != 0 ;
i--) {
2914 if (checkObjectTypes && value && !
isOSmallBool(value)) {
2922 if (!value->
value) {
2956 if (!value->
value) {
2965 if (checkObjectTypes && value && !
isOSmallInt(value)) {
2973 if (!value->
value) {
3011 if (!string->
data) {
3028 if (!container->
data) {
3172 for (
size_t i = len ;
i != 0 ;
i--) {
3210 for (i = 0 ; i <
len ; i++) {
3226 smallt **arr = &(
self->a->data);
3228 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3229 arr[j-i-1] = arr[j];
3231 self->a->count -= (uint32_t)i+1;
3279 r = (int32_t)e->
f->get(e);
3291 r = (uint64_t)e->
f->get(e);
3303 r = (uint32_t)e->
f->get(e);
3331 for (i = 0 ; i <
len ; i++) {
3347 smallt **arr = &(
self->a->data);
3349 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3350 arr[j-i-1] = arr[j];
3352 self->a->count -= (uint32_t)i+1;
3367 for (i = 0 ; i <
len ; i++) {
3383 smallt **arr = &(
self->a->data);
3385 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3386 arr[j-i-1] = arr[j];
3388 self->a->count -= (uint32_t)i+1;
3403 for (i = 0 ; i <
len ; i++) {
3419 smallt **arr = &(
self->a->data);
3421 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3422 arr[j-i-1] = arr[j];
3424 self->a->count -= (uint32_t)i+1;
3439 for (i = 0 ; i <
len ; i++) {
3455 smallt **arr = &(
self->a->data);
3457 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3458 arr[j-i-1] = arr[j];
3460 self->a->count -= (uint32_t)i+1;
3475 for (i = 0 ; i <
len ; i++) {
3491 smallt **arr = &(
self->a->data);
3493 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3494 arr[j-i-1] = arr[j];
3496 self->a->count -= (uint32_t)i+1;
3511 for (i = 0 ; i <
len ; i++) {
3527 smallt **arr = &(
self->a->data);
3529 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3530 arr[j-i-1] = arr[j];
3532 self->a->count -= (uint32_t)i+1;
3547 for (i = 0 ; i <
len ; i++) {
3563 smallt **arr = &(
self->a->data);
3565 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3566 arr[j-i-1] = arr[j];
3568 self->a->count -= (uint32_t)i+1;
3590 for (i = 0 ; i <
len ; i++) {
3606 smallt **arr = &(
self->a->data);
3608 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3609 arr[j-i-1] = arr[j];
3611 self->a->count -= (uint32_t)i+1;
3638 for (i = 0 ; i <
len ; i++) {
3658 smallt **arr = &(
self->a->data);
3660 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3661 arr[j-i-1] = arr[j];
3663 self->a->count -= (uint32_t)i+1;
3678 for (i = 0 ; i <
len ; i++) {
3694 smallt **arr = &(
self->a->data);
3696 for (uint32_t j = (uint32_t)i+1 ; j <
self->a->count ; j++) {
3697 arr[j-i-1] = arr[j];
3699 self->a->count -= (uint32_t)i+1;
3760 if (!array->
f->len(array)) {
3765 if (self->a == array->
a) {
3792 if (!
eqS(type,
"array")) {
3796 if (!json->
f->len(json)) {
3801 if (self->a == json->
topA) {
3932 if (!array->
f->len(array)) {
3936 if (self->a == array->
a) {
3961 if (start > (int64_t)len) {
3965 if (end > (int64_t)len) {
3968 if (start <= -(int64_t)
len) {
3969 start = -(int64_t)len;
3971 if (end <= -(int64_t)
len) {
3976 start = (int64_t)len + start;
3979 end = (int64_t)len + end;
4011 if (start > (int64_t)len) {
4014 if (end > (int64_t)len) {
4017 if (start <= -(int64_t)
len) {
4018 start = -(int64_t)len;
4020 if (end <= -(int64_t)
len) {
4024 start = (int64_t)len + start;
4027 end = (int64_t)len + end;
4043 for (int64_t
i=0;
i < n;
i++) {
4049 smallt **arr = &(
self->a->data);
4051 for (uint32_t
i = 0 ;
i < (
self->a->count - end) ;
i ++) {
4052 arr[start+
i] = arr[end +
i];
4055 self->a->count -= (uint32_t)(end - start);
4099 smallt **arr = &(
self->a->data);
4101 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4102 arr[index+
i] = arr[index+1 +
i];
4135 smallt **arr = &(
self->a->data);
4137 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4138 arr[index+
i] = arr[index+1 +
i];
4177 smallt **arr = &(
self->a->data);
4179 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4180 arr[index+
i] = arr[index+1 +
i];
4219 smallt **arr = &(
self->a->data);
4221 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4222 arr[index+
i] = arr[index+1 +
i];
4261 smallt **arr = &(
self->a->data);
4263 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4264 arr[index+
i] = arr[index+1 +
i];
4300 r = (int32_t)e->
f->get(e);
4304 smallt **arr = &(
self->a->data);
4306 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4307 arr[index+
i] = arr[index+1 +
i];
4342 r = (uint64_t)e->
f->get(e);
4346 smallt **arr = &(
self->a->data);
4348 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4349 arr[index+
i] = arr[index+1 +
i];
4384 r = (uint32_t)e->
f->get(e);
4388 smallt **arr = &(
self->a->data);
4390 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4391 arr[index+
i] = arr[index+1 +
i];
4426 r =
dupS(e->
f->get(e));
4430 smallt **arr = &(
self->a->data);
4432 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4433 arr[index+
i] = arr[index+1 +
i];
4468 smallt **arr = &(
self->a->data);
4470 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4471 arr[index+
i] = arr[index+1 +
i];
4505 smallt **arr = &(
self->a->data);
4507 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4508 arr[index+
i] = arr[index+1 +
i];
4542 smallt **arr = &(
self->a->data);
4544 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4545 arr[index+
i] = arr[index+1 +
i];
4579 smallt **arr = &(
self->a->data);
4581 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4582 arr[index+
i] = arr[index+1 +
i];
4616 smallt **arr = &(
self->a->data);
4618 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4619 arr[index+
i] = arr[index+1 +
i];
4653 smallt **arr = &(
self->a->data);
4655 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4656 arr[index+
i] = arr[index+1 +
i];
4696 smallt **arr = &(
self->a->data);
4698 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4699 arr[index+
i] = arr[index+1 +
i];
4733 smallt **arr = &(
self->a->data);
4735 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4736 arr[index+
i] = arr[index+1 +
i];
4774 smallt **arr = &(
self->a->data);
4776 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4777 arr[index+
i] = arr[index+1 +
i];
4812 smallt **arr = &(
self->a->data);
4814 for (uint32_t
i = 0 ;
i < (
self->a->count - (index+1)) ;
i ++) {
4815 arr[index+
i] = arr[index+1 +
i];
4833 if (start >= (int64_t)len) {
4836 if (end > (int64_t)len) {
4839 if (start <= -(int64_t)
len) {
4840 start = -(int64_t)len;
4842 if (end <= -(int64_t)
len) {
4846 start = (int64_t)len + start;
4849 end = (int64_t)len + end;
4869 for (int64_t
i=0;
i < n;
i++) {
4882 if (checkObjectTypes && toInsert && !
isOSmallArray(toInsert)) {
4890 if (self->a == toInsert->
a) {
4896 if (!len && index == -1) {
4905 if (index > (int64_t)len) {
4911 if (index < -(int64_t)len) {
4915 index = (int64_t)len + index;
4919 if (!toInsert->
f->len(toInsert)) {
4931 for (int64_t
i=0;
i < (int64_t)toInsert->
f->len(toInsert);
i++) {
4935 for (int64_t
i=0;
i < (int64_t)len;
i++) {
4942 for (int64_t
i=0;
i < index;
i++) {
4946 for (int64_t
i=0;
i < (int64_t)toInsert->
f->len(toInsert);
i++) {
4950 for (int64_t
i=index;
i < (int64_t)len;
i++) {
4973 if (!
eqS(type,
"array")) {
4977 if (!
lenO(toInsert)) {
5019 if (!len && index == -1) {
5028 if (index > (int64_t)len) {
5034 if (index < -(int64_t)len) {
5038 index = (int64_t)len + index;
5056 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5064 for (int64_t
i=0;
i < index;
i++) {
5069 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5085 if (!len && index == -1) {
5094 if (index > (int64_t)len) {
5100 if (index < -(int64_t)len) {
5104 index = (int64_t)len + index;
5118 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5126 for (int64_t
i=0;
i < index;
i++) {
5131 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5147 if (!len && index == -1) {
5156 if (index > (int64_t)len) {
5162 if (index < -(int64_t)len) {
5166 index = (int64_t)len + index;
5181 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5189 for (int64_t
i=0;
i < index;
i++) {
5194 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5210 if (!len && index == -1) {
5219 if (index > (int64_t)len) {
5225 if (index < -(int64_t)len) {
5229 index = (int64_t)len + index;
5244 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5252 for (int64_t
i=0;
i < index;
i++) {
5257 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5273 if (!len && index == -1) {
5282 if (index > (int64_t)len) {
5288 if (index < -(int64_t)len) {
5292 index = (int64_t)len + index;
5307 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5315 for (int64_t
i=0;
i < index;
i++) {
5320 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5340 if (!len && index == -1) {
5349 if (index > (int64_t)len) {
5355 if (index < -(int64_t)len) {
5359 index = (int64_t)len + index;
5373 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5381 for (int64_t
i=0;
i < index;
i++) {
5386 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5410 if (checkObjectTypes && toInject && !
isOSmallDict(toInject)) {
5416 if (!len && index == -1) {
5425 if (index > (int64_t)len) {
5431 if (index < -(int64_t)len) {
5435 index = (int64_t)len + index;
5453 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5461 for (int64_t
i=0;
i < index;
i++) {
5466 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5484 if (checkObjectTypes && toInject && !
isOSmallArray(toInject)) {
5490 if (!len && index == -1) {
5499 if (index > (int64_t)len) {
5505 if (index < -(int64_t)len) {
5509 index = (int64_t)len + index;
5527 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5535 for (int64_t
i=0;
i < index;
i++) {
5540 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5560 if (!len && index == -1) {
5569 if (index > (int64_t)len) {
5575 if (index < -(int64_t)len) {
5579 index = (int64_t)len + index;
5609 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5617 for (int64_t
i=0;
i < index;
i++) {
5622 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5642 if (!len && index == -1) {
5651 if (index > (int64_t)len) {
5657 if (index < -(int64_t)len) {
5661 index = (int64_t)len + index;
5691 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5699 for (int64_t
i=0;
i < index;
i++) {
5704 for (int64_t
i=index;
i < (int64_t)len;
i++) {
5721 if (checkObjectTypes && toInject && !
isOSmallBool(toInject)) {
5725 if (!toInject->
value) {
5738 if (checkObjectTypes && toInject && !
isOSmallBytes(toInject)) {
5759 if (!toInject->
value) {
5772 if (checkObjectTypes && toInject && !
isOSmallInt(toInject)) {
5776 if (!toInject->
value) {
5789 if (checkObjectTypes && toInject && !
isOSmallJson(toInject)) {
5817 if (!toInject->
data) {
5834 if (!toInject->
data) {
5850 if (!len && index == -1) {
5859 if (index > (int64_t)len) {
5865 if (index < -(int64_t)len) {
5869 index = (int64_t)len + index;
5891 for (int64_t
i=0;
i < (int64_t)len;
i++) {
5899 for (int64_t
i=0;
i < index;
i++) {
5904 for (int64_t
i=index;
i < (int64_t)len;
i++) {
6034 if (start >= (int64_t)len) {
6035 start = (int64_t)len;
6037 if (end > (int64_t)
len) {
6040 if (start <= -(int64_t)
len) {
6041 start = -(int64_t)len;
6043 if (end <= -(int64_t)
len) {
6044 end = -(int64_t)len;
6047 start = (int64_t)len + start;
6050 end = (int64_t)len + end;
6071 if (index >= (int64_t)len) {
6074 if (index < -(int64_t)len) {
6078 index = (int64_t)len + index;
6095 if (start >= (int64_t)len) {
6096 start = (int64_t)len;
6098 if (end > (int64_t)
len) {
6101 if (start <= -(int64_t)
len) {
6102 start = -(int64_t)len;
6104 if (end <= -(int64_t)
len) {
6105 end = -(int64_t)len;
6108 start = (int64_t)len + start;
6111 end = (int64_t)len + end;
6122 for (uint32_t
i = (uint32_t)start ;
i < end ;
i++) {
6134 if (index >= (int64_t)len) {
6137 if (index < -(int64_t)len) {
6141 index = (int64_t)len + index;
6252 smallt **arr = &(
self->a->data);
6257 #if (__APPLE__ || __FreeBSD__ || __DragonFly__) 6258 internal int sortFCmp(
void *func,
const void *
a,
const void *
b) {
6268 int r = cmp(aO, bO);
6279 internal int sortFCmp(
const void *
a,
const void *
b,
void *func) {
6289 int r = cmp(aO, bO);
6336 r = strcasecmp(As,Bs);;
6373 r = strcasecmp(As,Bs);;
6405 smallt **arr = &(
self->a->data);
6410 #if (__APPLE__ || __FreeBSD__ || __DragonFly__) 6417 if (!len || !compareFunction) {
6421 smallt **arr = &(
self->a->data);
6431 if (!len || !compareFunction) {
6435 smallt **arr = &(
self->a->data);
6436 #if (__TERMUX__ || __OpenBSD__ || MUSL_LIBC || __sun__ || __HAIKU__) 6496 if (!
strEq(es, as)) {
6522 if (!
strEq(es, as)) {
6556 if (checkObjectTypes && array && !
isOSmallJson(array)) {
6560 return(array->
f->equalSmallArray(array,
self));
6629 if (!
isOType(p2,
"smallArray")) {
6688 if (!
icEqS(es, as)) {
6714 if (!
icEqS(es, as)) {
6754 if (!
eqS(type,
"array")) {
6758 return(array->
f->icEqualSmallArray(array,
self));
6827 if (!
isOType(p2,
"smallArray")) {
6843 return(self->a->count);
6988 r = (int32_t)e->
f->get(e);
7000 r = (int32_t *)e->
f->getP(e);
7012 r = (uint64_t)e->
f->get(e);
7024 r = (uint64_t *)e->
f->getP(e);
7036 r = (uint32_t)e->
f->get(e);
7048 r = (uint32_t *)e->
f->getP(e);
7379 r = (int32_t)e->
f->get(e);
7391 r = (uint64_t)e->
f->get(e);
7403 r = (uint32_t)e->
f->get(e);
7910 if (checkObjectTypes && value && !
isOSmallBool(value)) {
7924 if (!value->
value) {
7978 if (!value->
value) {
7991 if (checkObjectTypes && value && !
isOSmallInt(value)) {
8005 if (!value->
value) {
8018 if (checkObjectTypes && value && !
isOSmallJson(value)) {
8063 if (!string->
data) {
8090 if (!container->
data) {
8342 if (!string->
data) {
8464 if (!string->
data) {
8825 if (e->type ==
BOOL && ((
sBoolt*)e)->value == value) {
8863 if (e->type ==
INT && ((
sIntt*)e)->value == value) {
8916 if (e->type ==
DICT) {
8949 if (e->type ==
ARRAY) {
8978 if (e->type ==
ARRAY) {
9007 if (e->type ==
ARRAY) {
9033 bool b = value->
f->get(value);
9039 if (e->type ==
BOOL && ((
sBoolt*)e)->value == b) {
9059 uint32_t count = value->
B->
count;
9084 double v = value->
f->get(value);
9109 int64_t v = value->
f->get(value);
9115 if (e->type ==
INT && ((
sIntt*)e)->value == v) {
9141 if (
eqS(type,
"undefined")) {
9146 else if (
eqS(type,
"bool")) {
9151 else if (
eqS(type,
"double")) {
9156 else if (
eqS(type,
"int")) {
9161 else if (
eqS(type,
"string")) {
9166 else if (
eqS(type,
"dict")) {
9171 else if (
eqS(type,
"array")) {
9187 if (!
string || !string->
data) {
9216 ssize_t first = 0, middle, last;;
9227 while (first <= last) {
9228 middle = (first+last)/2;
9235 if (strcmp(m, s) < 0) {
9238 else if (strcmp(m, s) == 0) {
9290 ssize_t first = 0, middle, last;;
9300 while (first <= last) {
9301 middle = (first+last)/2;
9325 ssize_t first = 0, middle, last;;
9335 while (first <= last) {
9336 middle = (first+last)/2;
9359 ssize_t first = 0, middle, last;;
9369 while (first <= last) {
9370 middle = (first+last)/2;
9393 ssize_t first = 0, middle, last;;
9402 while (first <= last) {
9403 middle = (first+last)/2;
9414 else if ((e->
type ==
STRING) && (strcmp(m,
string) == 0)) {
9431 ssize_t first = 0, middle, last;;
9447 while (first <= last) {
9448 middle = (first+last)/2;
9464 else if ((e->
type ==
DICT) && strcmp(m, s) == 0) {
9482 ssize_t first = 0, middle, last;;
9498 while (first <= last) {
9499 middle = (first+last)/2;
9515 else if ((e->
type ==
ARRAY) && strcmp(m, s) == 0) {
9533 ssize_t first = 0, middle, last;;
9545 while (first <= last) {
9546 middle = (first+last)/2;
9562 else if ((e->
type ==
ARRAY) && strcmp(m, s) == 0) {
9580 ssize_t first = 0, middle, last;;
9592 while (first <= last) {
9593 middle = (first+last)/2;
9609 else if ((e->
type ==
ARRAY) && strcmp(m, s) == 0) {
9627 ssize_t first = 0, middle, last;;
9637 bool b = value->
f->get(value);
9642 while (first <= last) {
9643 middle = (first+last)/2;
9666 ssize_t first = 0, middle, last;;
9677 uint32_t count = value->
B->
count;
9682 while (first <= last) {
9683 middle = (first+last)/2;
9706 ssize_t first = 0, middle, last;;
9716 double v = value->
f->get(value);
9721 while (first <= last) {
9722 middle = (first+last)/2;
9745 ssize_t first = 0, middle, last;;
9755 int64_t v = value->
f->get(value);
9760 while (first <= last) {
9761 middle = (first+last)/2;
9802 if (
eqS(type,
"undefined")) {
9808 else if (
eqS(type,
"bool")) {
9813 else if (
eqS(type,
"double")) {
9818 else if (
eqS(type,
"int")) {
9823 else if (
eqS(type,
"string")) {
9828 else if (
eqS(type,
"dict")) {
9833 else if (
eqS(type,
"array")) {
9842 ssize_t first = 0, middle, last;;
9856 while (first <= last) {
9857 middle = (first+last)/2;
9868 else if ((e->
type ==
STRING) && (strcmp(m, s) == 0)) {
9924 bool foundUndefined =
false;
9929 if (!foundUndefined) {
9931 foundUndefined =
true;
9938 if (
r->f->indexOfBool(
r, ((
sBoolt*)e)->value) == -1) {
9948 if (
r->f->indexOfDict(
r,
d) == -1) {
9956 if (
r->f->indexOfDouble(
r, ((
sDoublet*)e)->value) == -1) {
9964 if (
r->f->indexOfInt(
r, ((
sIntt*)e)->value) == -1) {
9981 if (
r->f->indexOfArray(
r,
a) == -1) {
9990 if (
r->f->indexOfSmallBytes(
r,
B) == -1) {
9998 logC(
"Unsupported object type!");
10142 if (
icEqS(es, s)) {
10145 return((ssize_t)
i);
10168 return((ssize_t)
i);
10199 if (e->type ==
DICT) {
10201 if (
icEqS(es, s)) {
10204 return((ssize_t)
i);
10232 if (e->type ==
ARRAY) {
10234 if (
icEqS(es, s)) {
10237 return((ssize_t)
i);
10261 if (e->type ==
ARRAY) {
10263 if (
icEqS(es, s)) {
10266 return((ssize_t)
i);
10290 if (e->type ==
ARRAY) {
10292 if (
icEqS(es, s)) {
10295 return((ssize_t)
i);
10323 if (
eqS(type,
"undefined")) {
10328 else if (
eqS(type,
"bool")) {
10333 else if (
eqS(type,
"double")) {
10338 else if (
eqS(type,
"int")) {
10343 else if (
eqS(type,
"string")) {
10348 else if (
eqS(type,
"dict")) {
10353 else if (
eqS(type,
"array")) {
10368 if (!
string || !string->
data) {
10384 return((ssize_t)
i);
10391 ssize_t first = 0, middle, last;;
10402 while (first <= last) {
10403 middle = (first+last)/2;
10410 if (strcasecmp(m, s) < 0) {
10411 first = middle + 1;
10413 else if (strcasecmp(m, s) == 0) {
10429 ssize_t first = 0, middle, last;;
10438 while (first <= last) {
10439 middle = (first+last)/2;
10448 first = middle + 1;
10450 else if ((e->
type ==
STRING) && (strcasecmp(m,
string) == 0)) {
10467 ssize_t first = 0, middle, last;;
10483 while (first <= last) {
10484 middle = (first+last)/2;
10498 first = middle + 1;
10500 else if ((e->
type ==
DICT) && strcasecmp(m, s) == 0) {
10518 ssize_t first = 0, middle, last;;
10534 while (first <= last) {
10535 middle = (first+last)/2;
10549 first = middle + 1;
10551 else if ((e->
type ==
ARRAY) && strcasecmp(m, s) == 0) {
10569 ssize_t first = 0, middle, last;;
10581 while (first <= last) {
10582 middle = (first+last)/2;
10596 first = middle + 1;
10598 else if ((e->
type ==
ARRAY) && strcasecmp(m, s) == 0) {
10616 ssize_t first = 0, middle, last;;
10628 while (first <= last) {
10629 middle = (first+last)/2;
10643 first = middle + 1;
10645 else if ((e->
type ==
ARRAY) && strcasecmp(m, s) == 0) {
10681 if (
eqS(type,
"undefined")) {
10687 else if (
eqS(type,
"bool")) {
10692 else if (
eqS(type,
"double")) {
10697 else if (
eqS(type,
"int")) {
10702 else if (
eqS(type,
"string")) {
10707 else if (
eqS(type,
"dict")) {
10712 else if (
eqS(type,
"array")) {
10721 ssize_t first = 0, middle, last;;
10735 while (first <= last) {
10736 middle = (first+last)/2;
10745 first = middle + 1;
10747 else if ((e->
type ==
STRING) && (strcasecmp(m, s) == 0)) {
10796 bool pushE =
false;
10797 bool foundUndefined =
false;
10802 if (!foundUndefined) {
10804 foundUndefined =
true;
10811 if (
r->f->indexOfBool(
r, ((
sBoolt*)e)->value) == -1) {
10821 if (
r->f->icIndexOfDict(
r,
d) == -1) {
10829 if (
r->f->indexOfDouble(
r, ((
sDoublet*)e)->value) == -1) {
10837 if (
r->f->indexOfInt(
r, ((
sIntt*)e)->value) == -1) {
10854 if (
r->f->icIndexOfArray(
r,
a) == -1) {
10863 if (
r->f->indexOfSmallBytes(
r,
B) == -1) {
10871 logC(
"Unsupported object type!");
10917 if (((
sDictt*)e)->count > 0) {
10941 if (((
sArrayt*)e)->count > 0) {
10949 if (((
sBytest*)e)->count > 0) {
10957 logC(
"Unsupported object type!");
10997 for (
size_t i=0;
i <
len;
i++) {
11022 if (((
sDictt*)e)->count > 0) {
11036 if (((
sArrayt*)e)->count > 0) {
11041 if (((
sBytest*)e)->count > 0) {
11046 logC(
"Unsupported object type!");
11065 if (!funcElem(closure, E)) {
11092 if (!funcElem(closure,
i, E)) {
11110 self->iterIndex = -1;
11118 range(
i, self->a->count)
11120 self->iterIndex = (ssize_t)i;
11123 self->iterStep = 1;
11135 self->iterElement =
toBaset(o);
11136 return(self->iterElement);
11142 self->iterIndex = -1;
11152 self->iterIndex =
i;
11155 self->iterStep = -1;
11167 self->iterElement =
toBaset(o);
11168 return(self->iterElement);
11174 self->iterIndex = -1;
11194 self->iterIndex = (ssize_t)i;
11197 if (self->iterIndex == -1) {
11201 self->iterStep = 1;
11213 self->iterElement =
toBaset(o);
11214 return(self->iterElement);
11220 self->iterIndex = -1;
11245 self->iterIndex = (ssize_t)i;
11248 if (self->iterIndex == -1) {
11252 self->iterStep = step;
11264 self->iterElement =
toBaset(o);
11265 return(self->iterElement);
11270 if (self->iterIndex == -1) {
11279 self->iterElement = NULL;
11282 while (!self->iterElement) {
11284 self->iterIndex +=
self->iterStep;
11285 if ((self->iterIndex >= (ssize_t)
lenSmallArray(
self) || self->iterIndex < 0)) {
11287 self->iterIndex = -1;
11300 self->iterElement =
toBaset(o);
11302 return(self->iterElement);
11307 return(self->iterElement);
11312 return(self->iterIndex);
11317 return(self->iterStep);
11338 r->
f->appendS(r, delim);
11348 r->
f->appendS(r, delim);
11349 r->
f->appendS(r, s);
11376 if (!
eqS(type,
"string")) {
11452 if (!
eqS(type,
"string")) {
11471 if (!array1 || !array2) {
11479 if (!array1->
f->len(array1) || !array2->
f->len(array2)) {
11483 len =
MIN(array1->
f->len(array1), array2->
f->len(array2));
11497 if (count == len) {
11507 if (!array1 || !array2) {
11521 if (!
eqS(type,
"array")) {
11535 if (!array1 || !array2) {
11549 if (!
eqS(type,
"array")) {
11563 if (!array1 || !array2) {
11577 if (!
eqS(type,
"array")) {
11583 if (!
eqS(type,
"array")) {
11602 if (!array1 || !array2) {
11612 if (!
eqS(type,
"array")) {
11626 if (!array1 || !array2) {
11636 if (!
eqS(type,
"array")) {
11652 if (!array1 || !array2) {
11660 if (!
listLengthS(array1) || !array2->
f->len(array2)) {
11673 a->
f->pushNFreeS(
a, E1);
11677 if (count == len) {
11689 if (!array1 || !array2) {
11710 a->
f->pushS(
a, E1);
11714 if (count == len) {
11724 if (!array1 || !array2) {
11734 if (!
eqS(type,
"array")) {
11748 if (!array1 || !array2) {
11758 if (!
eqS(type,
"array")) {
11774 if (!array1 || !array2) {
11782 if (!array1->
f->len(array1) || !
listLengthS(array2)) {
11797 a->
f->pushNFreeS(
a, array2[
i]);
11800 if (count == len) {
11812 if (!array1 || !array2) {
11835 a->
f->pushS(
a, array2[
i]);
11838 if (count == len) {
11850 if (!array1 || !array2) {
11867 a->
f->pushNFreeS(
a, E1);
11868 a->
f->pushNFreeS(
a, array2[
i]);
11871 if (count == len) {
11883 if (!array1 || !array2) {
11900 a->
f->pushS(
a, E1);
11901 a->
f->pushNFreeS(
a, array2[
i]);
11904 if (count == len) {
11916 if (!array1 || !array2) {
11933 a->
f->pushNFreeS(
a, E1);
11934 a->
f->pushS(
a, array2[
i]);
11937 if (count == len) {
11949 if (!array1 || !array2) {
11966 a->
f->pushS(
a, E1);
11967 a->
f->pushS(
a, array2[
i]);
11970 if (count == len) {
12006 if (!filePath ||
isBlankS(filePath)) {
12009 fp = fopen(filePath,
"r");
12012 shEPrintfS(
"The path was: \"%s\"\n", filePath);
12017 read = getline(&line, &len, fp);
12018 while (read != -1) {
12021 pos = strchr(line,
'\n');
12026 read = getline(&line, &len, fp);
12045 if (!
eqS(type,
"string")) {
12075 read = getline(&line, &len, (FILE*)fp);
12076 while (read != -1) {
12079 pos = strchr(line,
'\n');
12084 read = getline(&line, &len, (FILE*)fp);
12094 if (!filePath ||
isBlankS(filePath)) {
12098 fp = fopen(filePath,
"w");
12101 shEPrintfS(
"The path was: \"%s\"\n", filePath);
12130 if (!
eqS(type,
"string")) {
12169 if (!filePath ||
isBlankS(filePath)) {
12173 fp = fopen(filePath,
"a");
12225 if (index >= (int64_t)len) {
12228 if (index < -(int64_t)len) {
12232 index = (int64_t)len + index;
12291 return(
eqS(SMALL_TYPE_NAMES[(
size_t)
typeSmallArray(
self, index)],
"undefined"));
12301 return(
eqS(SMALL_TYPE_NAMES[(
size_t)
typeSmallArray(
self, index)],
"container"));
12326 return(
eqS(SMALL_TYPE_NAMES[(
size_t)
typeSmallArray(
self, index)],
"faststring"));
12420 return(self->f->duplicate(
self));
12427 return(self->f->fromArray(
self, array, size));
12432 return(self->f->fromCArray(
self, array, size));
12437 return(self->f->fromArray(
self, array, 0));
12442 return(self->f->fromCArray(
self, array, 0));
12447 return(self->f->push(
self, value));
12452 return(self->f->pushUndefined(
self));
12457 return(self->f->pushBool(
self,value));
12462 return(self->f->pushDouble(
self,value));
12467 return(self->f->pushInt(
self,value));
12472 return(self->f->pushS(
self,
string));
12477 return(self->f->pushChar(
self,c));
12482 return(self->f->pushDict(
self,dict));
12487 return(self->f->pushArray(
self,array));
12492 return(self->f->pushArrayc(
self,array));
12497 return(self->f->pushCArrayc(
self,array));
12507 return(self->f->pushNFreeSmallContainer(
self, c));
12509 return(self->f->pushUndefined(
self));
12514 return(self->f->pushSmallBool(
self,value));
12519 return(self->f->pushSmallBytes(
self,value));
12524 return(self->f->pushSmallDouble(
self,value));
12529 return(self->f->pushSmallInt(
self,value));
12534 return(self->f->pushSmallJson(
self,value));
12539 return(self->f->pushSmallString(
self,
string));
12544 return(self->f->pushSmallContainer(
self,container));
12550 return(self->f->pushNFree(
self,value));
12555 return(self->f->pushNFreeUndefined(
self,value));
12560 return(self->f->pushNFreeS(
self,
string));
12565 return(self->f->pushNFreeDict(
self,dict));
12570 return(self->f->pushNFreeArray(
self,array));
12575 return(self->f->pushNFreeArrayc(
self,array));
12580 return(self->f->pushNFreeSmallBool(
self,value));
12585 return(self->f->pushNFreeSmallBytes(
self,value));
12590 return(self->f->pushNFreeSmallDouble(
self,value));
12595 return(self->f->pushNFreeSmallInt(
self,value));
12600 return(self->f->pushNFreeSmallJson(
self,value));
12605 return(self->f->pushNFreeSmallString(
self,
string));
12610 return(self->f->pushNFreeSmallContainer(
self,container));
12617 return(self->f->pop(
self));
12622 return(self->f->popUndefined(
self));
12627 return(self->f->popBool(
self));
12632 return(self->f->popDouble(
self));
12637 return(self->f->popInt(
self));
12642 return(self->f->popInt32(
self));
12647 return(self->f->popUint(
self));
12652 return(self->f->popUint32(
self));
12657 return(self->f->popS(
self));
12662 return(self->f->popDict(
self));
12667 return(self->f->popArray(
self));
12672 return(self->f->popSmallBool(
self));
12677 return(self->f->popSmallBytes(
self));
12682 return(self->f->popSmallDouble(
self));
12687 return(self->f->popSmallInt(
self));
12692 return(self->f->popSmallJson(
self));
12697 return(self->f->popSmallString(
self));
12702 return(self->f->popVoid(
self));
12707 return(self->f->popSmallContainer(
self));
12713 return(self->f->prepend(
self, value));
12718 return(self->f->prependUndefined(
self));
12723 return(self->f->prependBool(
self,value));
12728 return(self->f->prependDouble(
self,value));
12733 return(self->f->prependInt(
self,value));
12738 return(self->f->prependS(
self,
string));
12743 return(self->f->prependChar(
self,c));
12748 return(self->f->prependDict(
self,dict));
12753 return(self->f->prependArray(
self,array));
12758 return(self->f->prependArrayc(
self,array));
12763 return(self->f->prependCArrayc(
self,array));
12773 return(self->f->prependNFreeSmallContainer(
self, c));
12775 return(self->f->prependUndefined(
self));
12780 return(self->f->prependSmallBool(
self,value));
12785 return(self->f->prependSmallBytes(
self,value));
12790 return(self->f->prependSmallDouble(
self,value));
12795 return(self->f->prependSmallInt(
self,value));
12800 return(self->f->prependSmallJson(
self,json));
12805 return(self->f->prependSmallString(
self,
string));
12810 return(self->f->prependSmallContainer(
self,container));
12816 return(self->f->prependNFree(
self,value));
12821 return(self->f->prependNFreeUndefined(
self,value));
12826 return(self->f->prependNFreeS(
self,
string));
12831 return(self->f->prependNFreeDict(
self,dict));
12836 return(self->f->prependNFreeArray(
self,array));
12841 return(self->f->prependNFreeArrayc(
self,array));
12846 return(self->f->prependNFreeSmallBool(
self,value));
12851 return(self->f->prependNFreeSmallBytes(
self,value));
12856 return(self->f->prependNFreeSmallDouble(
self,value));
12861 return(self->f->prependNFreeSmallInt(
self,value));
12866 return(self->f->prependNFreeSmallJson(
self,json));
12871 return(self->f->prependNFreeSmallString(
self,
string));
12876 return(self->f->prependNFreeSmallContainer(
self,container));
12883 return(self->f->dequeue(
self));
12888 return(self->f->dequeueUndefined(
self));
12893 return(self->f->dequeueBool(
self));
12898 return(self->f->dequeueDouble(
self));
12903 return(self->f->dequeueInt(
self));
12908 return(self->f->dequeueInt32(
self));
12913 return(self->f->dequeueUint(
self));
12918 return(self->f->dequeueUint32(
self));
12923 return(self->f->dequeueS(
self));
12928 return(self->f->dequeueDict(
self));
12933 return(self->f->dequeueArray(
self));
12938 return(self->f->dequeueSmallBool(
self));
12943 return(self->f->dequeueSmallBytes(
self));
12948 return(self->f->dequeueSmallDouble(
self));
12953 return(self->f->dequeueSmallInt(
self));
12958 return(self->f->dequeueSmallJson(
self));
12963 return(self->f->dequeueSmallString(
self));
12968 return(self->f->dequeueVoid(
self));
12973 return(self->f->dequeueSmallContainer(
self));
12981 return(self->f->getAt(
self,index));
12986 return(self->f->getAtUndefined(
self,index));
12991 return(self->f->getAtBool(
self,index));
12996 return(self->f->getAtBoolP(
self,index));
13001 return(self->f->getAtDouble(
self,index));
13006 return(self->f->getAtDoubleP(
self,index));
13011 return(self->f->getAtInt(
self,index));
13016 return(self->f->getAtIntP(
self,index));
13021 return(self->f->getAtInt32(
self,index));
13026 return(self->f->getAtInt32P(
self,index));
13031 return(self->f->getAtUint(
self,index));
13036 return(self->f->getAtUintP(
self,index));
13041 return(self->f->getAtUint32(
self,index));
13046 return(self->f->getAtUint32P(
self,index));
13051 return(self->f->getAtS(
self,index));
13056 return(self->f->getAtDict(
self,index));
13061 return(self->f->getAtArray(
self,index));
13066 return(self->f->getAtSmallBool(
self,index));
13071 return(self->f->getAtSmallBytes(
self,index));
13076 return(self->f->getAtSmallDouble(
self,index));
13081 return(self->f->getAtSmallInt(
self,index));
13086 return(self->f->getAtSmallJson(
self,index));
13091 return(self->f->getAtSmallString(
self,index));
13096 return(self->f->getAtVoid(
self,index));
13101 return(self->f->getAtSmallContainer(
self,index));
13107 return(self->f->getAtNDup(
self,index));
13112 return(self->f->getAtNDupUndefined(
self,index));
13117 return(self->f->getAtNDupBool(
self,index));
13122 return(self->f->getAtNDupDouble(
self,index));
13127 return(self->f->getAtNDupInt(
self,index));
13132 return(self->f->getAtNDupInt32(
self,index));
13137 return(self->f->getAtNDupUint(
self,index));
13142 return(self->f->getAtNDupUint32(
self,index));
13147 return(self->f->getAtNDupS(
self,index));
13152 return(self->f->getAtNDupDict(
self,index));
13157 return(self->f->getAtNDupArray(
self,index));
13162 return(self->f->getAtNDupSmallBool(
self,index));
13167 return(self->f->getAtNDupSmallBytes(
self,index));
13172 return(self->f->getAtNDupSmallDouble(
self,index));
13177 return(self->f->getAtNDupSmallInt(
self,index));
13182 return(self->f->getAtNDupSmallJson(
self,index));
13187 return(self->f->getAtNDupSmallString(
self,index));
13192 return(self->f->getAtNDupVoid(
self,index));
13197 return(self->f->getAtNDupSmallContainer(
self,index));
13202 return(self->f->setAt(
self, index, value));
13207 return(self->f->setAtUndefined(
self,index));
13212 return(self->f->setAtBool(
self,index,value));
13217 return(self->f->setAtDouble(
self,index,value));
13222 return(self->f->setAtInt(
self,index,value));
13227 return(self->f->setAtS(
self,index,
string));
13232 return(self->f->setAtChar(
self,index,c));
13237 return(self->f->setAtDict(
self,index,dict));
13242 return(self->f->setAtArray(
self,index,array));
13247 return(self->f->setAtArrayc(
self,index,array));
13252 return(self->f->setAtCArrayc(
self,index,array));
13262 return(self->f->setAtNFreeSmallContainer(
self, index, c));
13264 return(self->f->setAtUndefined(
self,index));
13269 return(self->f->setAtSmallBool(
self,index,value));
13274 return(self->f->setAtSmallBytes(
self,index,value));
13279 return(self->f->setAtSmallDouble(
self,index,value));
13284 return(self->f->setAtSmallInt(
self,index,value));
13289 return(self->f->setAtSmallJson(
self,index,value));
13294 return(self->f->setAtSmallString(
self,index,
string));
13299 return(self->f->setAtSmallContainer(
self,index,container));
13305 return(self->f->setAtNFree(
self,index,value));
13310 return(self->f->setAtNFreeUndefined(
self,index,value));
13315 return(self->f->setAtNFreeS(
self,index,
string));
13320 return(self->f->setAtNFreeDict(
self,index,dict));
13325 return(self->f->setAtNFreeArray(
self,index,array));
13330 return(self->f->setAtNFreeArrayc(
self,index,array));
13335 return(self->f->setAtNFreeSmallBool(
self,index,value));
13340 return(self->f->setAtNFreeSmallBytes(
self,index,value));
13345 return(self->f->setAtNFreeSmallDouble(
self,index,value));
13350 return(self->f->setAtNFreeSmallInt(
self,index,value));
13355 return(self->f->setAtNFreeSmallJson(
self,index,value));
13360 return(self->f->setAtNFreeSmallString(
self,index,
string));
13365 return(self->f->setAtNFreeSmallContainer(
self,index,container));
13371 return(self->f->setPAtDict(
self,index,dict));
13376 return(self->f->setPAtArray(
self,index,array));
13381 return(self->f->setPAtSmallJson(
self,index,json));
13386 return(self->f->setPAtSmallString(
self,index,
string));
13391 return(self->f->setPAtNFreeDict(
self,index,dict));
13396 return(self->f->setPAtNFreeArray(
self,index,array));
13401 return(self->f->setPAtNFreeSmallJson(
self,index,json));
13406 return(self->f->setPAtNFreeSmallString(
self,index,
string));
13411 return(self->f->getNum(
self, index));
13416 return(self->f->reverse(
self));
13421 return(self->f->append(
self, array));
13426 return(self->f->appendSmallJson(
self, json));
13431 return(self->f->appendNSmash(
self,array));
13436 return(self->f->appendNSmashSmallJson(
self,json));
13441 return(self->f->appendArray(
self, array));
13446 return(self->f->appendNSmashArray(
self,array));
13451 return(self->f->appendCArray(
self, array));
13456 return(self->f->shift(
self, array)); {
13463 return(self->f->shiftSmallJson(
self, json)); {
13470 return(self->f->shiftNSmash(
self,array)); {
13477 return(self->f->shiftNSmashSmallJson(
self,json)); {
13484 return(self->f->add(
self, array));
13489 return(self->f->slice(
self, start, end));
13494 return(self->f->crop(
self, start, end));
13499 return(self->f->cropElem(
self, index));
13504 return(self->f->cropElemUndefined(
self, index));
13509 return(self->f->cropElemBool(
self, index));
13514 return(self->f->cropElemDouble(
self, index));
13519 return(self->f->cropElemInt(
self, index));
13524 return(self->f->cropElemInt32(
self, index));
13529 return(self->f->cropElemUint(
self, index));
13534 return(self->f->cropElemUint32(
self, index));
13539 return(self->f->cropElemS(
self, index));
13544 return(self->f->cropElemDict(
self, index));
13549 return(self->f->cropElemArray(
self, index));
13554 return(self->f->cropElemSmallBool(
self, index));
13559 return(self->f->cropElemSmallBytes(
self, index));
13564 return(self->f->cropElemSmallDouble(
self, index));
13569 return(self->f->cropElemSmallInt(
self, index));
13574 return(self->f->cropElemSmallJson(
self, index));
13579 return(self->f->cropElemSmallString(
self, index));
13584 return(self->f->cropElemVoid(
self, index));
13589 return(self->f->cropElemSmallContainer(
self, index));
13594 return(self->f->copy(
self, start, end));
13599 return(self->f->insert(
self, index, toInsert));
13604 return(self->f->insertSmallJson(
self, index, toInsert));
13609 return(self->f->insertNSmash(
self, index, toInsert));
13614 return(self->f->insertNSmashSmallJson(
self, index, toInsert));
13619 return(self->f->inject(
self, index, value));
13624 return(self->f->injectUndefined(
self,index));
13629 return(self->f->injectBool(
self,index,value));
13634 return(self->f->injectDouble(
self,index,value));
13639 return(self->f->injectInt(
self,index,value));
13644 return(self->f->injectS(
self,index,
string));
13649 return(self->f->injectChar(
self,index,c));
13654 return(self->f->injectDict(
self,index,dict));
13659 return(self->f->injectArray(
self,index,array));
13664 return(self->f->injectArrayc(
self,index,array));
13669 return(self->f->injectCArrayc(
self,index,array));
13679 return(self->f->injectNFreeSmallContainer(
self, index, c));
13681 return(self->f->injectUndefined(
self,index));
13686 return(self->f->injectSmallBool(
self,index,value));
13691 return(self->f->injectSmallBytes(
self,index,value));
13696 return(self->f->injectSmallDouble(
self,index,value));
13701 return(self->f->injectSmallInt(
self,index,value));
13706 return(self->f->injectSmallJson(
self,index,
string));
13711 return(self->f->injectSmallString(
self,index,
string));
13716 return(self->f->injectSmallContainer(
self,index,container));
13722 return(self->f->injectNFree(
self,index,value));
13727 return(self->f->injectNFreeUndefined(
self,index,value));
13732 return(self->f->injectNFreeS(
self,index,
string));
13737 return(self->f->injectNFreeDict(
self,index,dict));
13742 return(self->f->injectNFreeArray(
self,index,array));
13747 return(self->f->injectNFreeArrayc(
self,index,array));
13752 return(self->f->injectNFreeSmallBool(
self,index,value));
13757 return(self->f->injectNFreeSmallBytes(
self,index,value));
13762 return(self->f->injectNFreeSmallDouble(
self,index,value));
13767 return(self->f->injectNFreeSmallInt(
self,index,value));
13772 return(self->f->injectNFreeSmallJson(
self,index,
string));
13777 return(self->f->injectNFreeSmallString(
self,index,
string));
13782 return(self->f->injectNFreeSmallContainer(
self,index,container));
13787 return(self->f->del(
self, start, end));
13792 return(self->f->delElem(
self, index));
13797 return(self->f->remove(
self, start, end));
13802 return(self->f->removeElem(
self, index));
13807 return(self->f->sort(
self));
13812 return(self->f->sortF(
self,compareFunction));
13817 return(self->f->icSort(
self));
13822 return(self->f->equal(
self, array));
13827 return(self->f->equalSmallJson(
self, array));
13832 return(self->f->equalArray(
self, p2));
13837 return(self->f->equalCArray(
self, p2));
13842 return(self->f->equalBase(
self, p2));
13847 return(self->f->icEqual(
self, array));
13852 return(self->f->icEqualSmallJson(
self, array));
13857 return(self->f->icEqualArray(
self, p2));
13862 return(self->f->icEqualCArray(
self, p2));
13867 return(self->f->icEqualBase(
self, p2));
13872 return(self->f->len(
self));
13877 return(self->f->trim(
self));
13882 return(self->f->has(
self, value));
13887 return(self->f->hasUndefined(
self, value));
13892 return(self->f->hasBool(
self,value));
13897 return(self->f->hasDouble(
self,value));
13902 return(self->f->hasInt(
self,value));
13907 return(self->f->hasS(
self,
string));
13912 return(self->f->hasChar(
self,c));
13917 return(self->f->hasDict(
self,dict));
13922 return(self->f->hasArray(
self,array));
13927 return(self->f->hasArrayc(
self,array));
13932 return(self->f->hasCArrayc(
self,array));
13937 return(self->f->hasSmallBool(
self,value));
13942 return(self->f->hasSmallBytes(
self,value));
13947 return(self->f->hasSmallDouble(
self,value));
13952 return(self->f->hasSmallInt(
self,value));
13957 return(self->f->hasSmallJson(
self,
string));
13962 return(self->f->hasSmallString(
self,
string));
13967 return(self->f->hasSmallContainer(
self,container));
13972 return(self->f->indexOf(
self, value));
13977 return(self->f->indexOfUndefined(
self, value));
13982 return(self->f->indexOfBool(
self,value));
13987 return(self->f->indexOfDouble(
self,value));
13992 return(self->f->indexOfInt(
self,value));
13997 return(self->f->indexOfS(
self,
string));
14002 return(self->f->indexOfChar(
self,c));
14007 return(self->f->indexOfDict(
self,dict));
14012 return(self->f->indexOfArray(
self,array));
14017 return(self->f->indexOfArrayc(
self,array));
14022 return(self->f->indexOfCArrayc(
self,array));
14027 return(self->f->indexOfSmallBool(
self,value));
14032 return(self->f->indexOfSmallBytes(
self,value));
14037 return(self->f->indexOfSmallDouble(
self,value));
14042 return(self->f->indexOfSmallInt(
self,value));
14047 return(self->f->indexOfSmallJson(
self,
string));
14052 return(self->f->indexOfSmallString(
self,
string));
14057 return(self->f->indexOfSmallContainer(
self,container));
14062 return(self->f->binarySearch(
self, value));
14067 return(self->f->binarySearchUndefined(
self, value));
14072 return(self->f->binarySearchBool(
self,value));
14077 return(self->f->binarySearchDouble(
self,value));
14082 return(self->f->binarySearchInt(
self,value));
14087 return(self->f->binarySearchS(
self,
string));
14092 return(self->f->binarySearchChar(
self,c));
14097 return(self->f->binarySearchDict(
self,dict));
14102 return(self->f->binarySearchArray(
self,array));
14107 return(self->f->binarySearchArrayc(
self,array));
14112 return(self->f->binarySearchCArrayc(
self,array));
14117 return(self->f->binarySearchSmallBool(
self,value));
14122 return(self->f->binarySearchSmallBytes(
self,value));
14127 return(self->f->binarySearchSmallDouble(
self,value));
14132 return(self->f->binarySearchSmallInt(
self,value));
14137 return(self->f->binarySearchSmallJson(
self,
string));
14142 return(self->f->binarySearchSmallString(
self,
string));
14147 return(self->f->binarySearchSmallContainer(
self,container));
14152 return(self->f->uniq(
self));
14157 return(self->f->icHas(
self, value));
14162 return(self->f->icHasS(
self,
string));
14167 return(self->f->icHasChar(
self,c));
14172 return(self->f->icHasDict(
self,dict));
14177 return(self->f->icHasArray(
self,array));
14182 return(self->f->icHasArrayc(
self,array));
14187 return(self->f->icHasCArrayc(
self,array));
14192 return(self->f->icHasSmallJson(
self,
string));
14197 return(self->f->icHasSmallString(
self,
string));
14202 return(self->f->icIndexOf(
self, value));
14207 return(self->f->icIndexOfS(
self,
string));
14212 return(self->f->icIndexOfChar(
self,c));
14217 return(self->f->icIndexOfDict(
self,dict));
14222 return(self->f->icIndexOfArray(
self,array));
14227 return(self->f->icIndexOfArrayc(
self,array));
14232 return(self->f->icIndexOfCArrayc(
self,array));
14237 return(self->f->icIndexOfSmallJson(
self,
string));
14242 return(self->f->icIndexOfSmallString(
self,
string));
14247 return(self->f->icBinarySearch(
self, value));
14252 return(self->f->icBinarySearchS(
self,
string));
14257 return(self->f->icBinarySearchChar(
self,c));
14262 return(self->f->icBinarySearchDict(
self,dict));
14267 return(self->f->icBinarySearchArray(
self,array));
14272 return(self->f->icBinarySearchArrayc(
self,array));
14277 return(self->f->icBinarySearchCArrayc(
self,array));
14282 return(self->f->icBinarySearchSmallJson(
self,
string));
14287 return(self->f->icBinarySearchSmallString(
self,
string));
14292 return(self->f->icUniq(
self));
14297 return(self->f->compact(
self));
14302 return(self->f->empty(
self));
14307 return(self->f->isEmpty(
self));
14312 return(self->f->isBlank(
self));
14317 return(self->f->join(
self, delim));
14322 return(self->f->joinChar(
self,c));
14327 return(self->f->joinSmallJson(
self,delim));
14332 return(self->f->joinSmallString(
self,delim));
14337 return(self->f->joinS(
self,delim));
14342 return(self->f->joinCharS(
self,c));
14347 return(self->f->joinSmallJsonS(
self,delim));
14352 return(self->f->joinSmallStringS(
self,delim));
14357 return(self->f->zip(
self,array1,array2));
14362 return(self->f->zipSmallJson(
self,array1,array2));
14367 return(self->f->zipSmallJsonSmallArray(
self,array1,array2));
14372 return(self->f->zipSmallJsonSmallJson(
self,array1,array2));
14377 return(self->f->zipSmallJsonChar(
self,array1,array2));
14382 return(self->f->zipSmallJsonCChar(
self,array1,array2));
14387 return(self->f->zipArray(
self,array1,array2));
14392 return(self->f->zipCArray(
self,array1,array2));
14397 return(self->f->zipArraySmallJson(
self,array1,array2));
14402 return(self->f->zipCArraySmallJson(
self,array1,array2));
14407 return(self->f->zipChar(
self,array1,array2));
14412 return(self->f->zipCChar(
self,array1,array2));
14417 return(self->f->zipArrayChar(
self,array1,array2));
14422 return(self->f->zipArrayCChar(
self,array1,array2));
14427 return(self->f->zipCArrayChar(
self,array1,array2));
14432 return(self->f->zipCArrayCChar(
self,array1,array2));
14437 self->f->log(
self);
14442 return(self->f->readText(
self, filePath));
14447 return(self->f->readTextSmallJson(
self,filePath));
14452 return(self->f->readTextSmallString(
self,filePath));
14457 return(self->f->readStream(
self, fp));
14462 return(self->f->writeText(
self, filePath));
14467 return(self->f->writeTextSmallJson(
self,filePath));
14472 return(self->f->writeTextSmallString(
self,filePath));
14477 return(self->f->writeStream(
self, fp));
14482 return(self->f->appendText(
self,filePath));
14487 return(self->f->appendTextSmallString(
self,filePath));
14492 return(self->f->typeSmallString(
self,index));
14497 return(self->f->typeSmallStrings(
self));
uint64_t getAtUintSmallArrayG(smallArrayt *self, uint64_t retType UNUSED, int64_t index)
internal bool writeTextSmallJsonSmallArray(smallArrayt *self, smallJsont *filePath)
internal smallArrayt * addSmallArray(smallArrayt *self, smallArrayt *array)
smallDictt * cropElemDictSmallArrayG(smallArrayt *self, int64_t index)
internal undefinedt * getAtUndefinedSmallArray(smallArrayt *self, int64_t index)
uint32_t dequeueUint32SmallArrayG(smallArrayt *self, uint32_t retType UNUSED)
void listFreeS(char **list)
list Free String
internal bool icHasCharSmallArray(smallArrayt *self, char c)
internal smallArrayt * pushNFreeDictSmallArray(smallArrayt *self, smallDictt *dict)
void cleanUpSmallArrayDisposeG(smallArrayt *val)
internal ssize_t icIndexOfArraycSmallArray(smallArrayt *self, char **array)
internal bool icHasSSmallArray(smallArrayt *self, const char *string)
internal smallArrayt * prependNFreeSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
internal smallArrayt * injectArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *toInject)
internal smallArrayt * dequeueArraySmallArray(smallArrayt *self)
smallArrayt * prependSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
bool hasSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
int32_t getAtNDupInt32SmallArrayG(smallArrayt *self, int32_t retType UNUSED, int64_t index)
bool getAtBoolSmallArrayG(smallArrayt *self, bool retType UNUSED, int64_t index)
smallArrayt * injectNFreeArraycSmallArrayG(smallArrayt *self, int64_t index, char **array)
internal smallArrayt * appendCArraySmallArray(smallArrayt *self, const char **array)
internal smallArrayt * prependNFreeSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
smallArrayt * setAtSmallDoubleSmallArrayG(smallArrayt *self, int64_t index, smallDoublet *value)
bool icHasArraycSmallArrayG(smallArrayt *self, char **array)
internal double cropElemDoubleSmallArray(smallArrayt *self, int64_t index)
internal ssize_t indexOfSmallContainerSmallArray(smallArrayt *self UNUSED, smallContainert *container UNUSED)
uint64_t getAtNDupUintSmallArrayG(smallArrayt *self, uint64_t retType UNUSED, int64_t index)
int sArrayReverseTiny(sArrayt *array)
reverse element order
internal smallArrayt * prependSSmallArray(smallArrayt *self, const char *string)
#define O(obj, method)
O calls an object method without parameters O(obj,toString) calls the toString method in the obj obje...
internal ssize_t icIndexOfCharSmallArray(smallArrayt *self, char c)
char * getAtSSmallArrayG(smallArrayt *self, char *retType UNUSED, int64_t index)
smallArrayt * cropSmallArrayG(smallArrayt *self, int64_t start, int64_t end)
smallArrayt * insertSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *toInsert)
internal smallArrayt * mirrorSmallArray(smallArrayt *self)
bool eqS(const char *string1, const char *string2)
string Equal compare string1 to string2
internal char * dequeueSSmallArray(smallArrayt *self)
ssize_t icBinarySearchArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal bool icHasSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
internal smallDictt * cropElemDictSmallArray(smallArrayt *self, int64_t index)
bool isBlankS(const char *string)
is Blank String
smallArrayt * injectSmallBytesSmallArrayG(smallArrayt *self, int64_t index, smallBytest *value)
internal smallArrayt * sliceSmallArray(smallArrayt *self, int64_t start, int64_t end)
baset * cropElemSmallArrayG(smallArrayt *self, int64_t index)
internal bool hasSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
void initiateSmallArray(smallArrayt *self)
smallArrayt * zipCArrayCharSmallArrayG(smallArrayt *self, const char **array1, char **array2)
internal smallArrayt * injectSmallBoolSmallArray(smallArrayt *self, int64_t index, smallBoolt *toInject)
internal smallBytest * getAtNDupSmallBytesSmallArray(smallArrayt *self, int64_t index)
internal smallIntt * getAtNDupSmallIntSmallArray(smallArrayt *self, int64_t index)
smallArrayt * prependBoolSmallArrayG(smallArrayt *self, bool value)
char * sToString(smallt *obj)
stringify object
smallArrayt * prependSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
smallArrayt * allocSmallArrayG(smallArrayt *self UNUSED)
internal smallArrayt * insertSmallArray(smallArrayt *self, int64_t index, smallArrayt *toInsert)
ssize_t icBinarySearchSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
smallArrayt * sortFSmallArrayG(smallArrayt *self, shCmpt compareFunction)
internal smallBytest * getAtSmallBytesSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushNFreeSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal smallArrayt * zipArrayCCharSmallArray(smallArrayt *self, char **array1, const char **array2)
bool hasArraycSmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * setAtSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *value)
internal smallArrayt * pushSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
internal smallArrayt * prependNFreeUndefinedSmallArray(smallArrayt *self, undefinedt *u)
smallArrayt * pushNFreeSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
smallBytest * popSmallBytesSmallArrayG(smallArrayt *self, smallBytest *retType UNUSED)
internal smallDictt * popDictSmallArray(smallArrayt *self)
void finalizeSmallArray(void)
smallArrayt * prependNFreeSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
sStringt * allocSStringTiny(const char *data)
allocate a small string
internal smallArrayt * injectIntSmallArray(smallArrayt *self, int64_t index, int64_t toInject)
#define ssGet(obj)
get a pointer to the string in the smallString object
smallArrayt * injectNFreeUndefinedSmallArrayG(smallArrayt *self, int64_t index, undefinedt *value)
internal ssize_t indexOfSmallStringSmallArray(smallArrayt *self, smallStringt *string)
smallArrayt * fromArraySmallArrayG(smallArrayt *self, char **array, size_t size)
smallStringt * dequeueSmallStringSmallArrayG(smallArrayt *self, smallStringt *retType UNUSED)
void cleanUpSmallArrayFreeG(smallArrayt **val)
smallArrayt * prependSmallArrayG(smallArrayt *self, baset *value)
void sArraySetP(sArrayt *array, uint32_t index, smallt *value)
set value at index
smallArrayt * pushBoolSmallArrayG(smallArrayt *self, bool value)
internal smallArrayt * pushNFreeSmallStringSmallArray(smallArrayt *self, smallStringt *string)
undefinedt * popUndefinedSmallArrayG(smallArrayt *self, undefinedt *retType UNUSED)
#define rangeDown(index, maxCount)
range down loop, index is ssize_t
char * toStringListCSGF(const char **object)
internal smallStringt * joinSmallStringSmallArray(smallArrayt *self, smallStringt *delim)
internal void * getAtNDupVoidSmallArray(smallArrayt *self, int64_t index)
sIntt * allocSInt(int64_t value)
allocate a small int
char * joinSmallStringSSmallArrayG(smallArrayt *self, smallStringt *delim)
bool hasSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
smallArrayt * zipSmallJsonSmallArrayG(smallArrayt *self, smallArrayt *array1, smallJsont *array2)
internal ssize_t indexOfDictSmallArray(smallArrayt *self, smallDictt *dict)
internal ssize_t indexOfSmallIntSmallArray(smallArrayt *self, smallIntt *value)
bool equalSmallArrayArrayG(smallArrayt *self, char **p2)
smallArrayt * removeElemSmallArrayG(smallArrayt *self, int64_t index)
internal ssize_t binarySearchSmallStringSmallArray(smallArrayt *self, smallStringt *string)
internal smallArrayt * prependSmallArray(smallArrayt *self, baset *value)
internal int icSortSCmp(const void *a, const void *b)
#define enumerateSmallArray(array, element, index)
enumerate non NULL elements in list skip deleted elements
internal smallArrayt * zipCArraySmallArray(smallArrayt *self, const char **array1, smallArrayt *array2)
internal bool hasDictSmallArray(smallArrayt *self, smallDictt *dict)
internal bool isEDictSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * readTextSmallStringSmallArray(smallArrayt *self, smallStringt *filePath)
ssize_t binarySearchArraycSmallArrayG(smallArrayt *self, char **array)
#define RST
reset for color function
internal int64_t * getAtIntPSmallArray(smallArrayt *self, int64_t index)
smallArrayt * addSmallArrayG(smallArrayt *self, smallArrayt *array)
internal bool getAtNDupBoolSmallArray(smallArrayt *self, int64_t index)
smallDoublet * getAtNDupSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *retType UNUSED, int64_t index)
internal const char ** typeStringsSmallArray(smallArrayt *self)
internal smallArrayt * setAtNFreeSmallArray(smallArrayt *self, int64_t index, baset *value)
internal ssize_t icBinarySearchSSmallArray(smallArrayt *self, const char *string)
baset * getAtNDupSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * injectSmallContainerSmallArray(smallArrayt *self, int64_t index, smallContainert *toInject)
smallt * sArrayDequeueTiny(sArrayt *array)
dequeue object from array
internal smallArrayt * zipCArraySmallJsonSmallArray(smallArrayt *self, const char **array1, smallJsont *array2)
smallArrayt * emptySmallArrayG(smallArrayt *self)
smallArrayt * appendNSmashArraySmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * pushUndefinedSmallArray(smallArrayt *self)
void sArraySetShortTiny(sArrayt *array, uint32_t index, smallt *value)
set value at index
internal bool areAllEDictSmallArray(smallArrayt *self)
internal smallArrayt * pushDictSmallArray(smallArrayt *self, smallDictt *dict)
void freeSmallArrayG(smallArrayt *self)
internal ssize_t binarySearchDoubleSmallArray(smallArrayt *self, double value)
smallArrayt * prependNFreeSSmallArrayG(smallArrayt *self, char *string)
smallContainert * allocSmallContainer(void *data)
ssize_t indexOfIntSmallArrayG(smallArrayt *self, int64_t value)
smallArrayt * injectUndefinedSmallArrayG(smallArrayt *self, int64_t index, void *value UNUSED)
internal smallArrayt * reverseSmallArray(smallArrayt *self)
smallBoolt * getAtSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *retType UNUSED, int64_t index)
internal smallArrayt * setAtDictSmallArray(smallArrayt *self, int64_t index, smallDictt *dict)
internal int64_t cropElemIntSmallArray(smallArrayt *self, int64_t index)
internal sArrayt * getsoSmallArray(smallArrayt *self)
smallArrayt * prependSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
internal smallArrayt * setAtSmallBoolSmallArray(smallArrayt *self, int64_t index, smallBoolt *value)
smallBytest * getAtNDupSmallBytesSmallArrayG(smallArrayt *self, smallBytest *retType UNUSED, int64_t index)
smallArrayt * setAtSmallBoolSmallArrayG(smallArrayt *self, int64_t index, smallBoolt *value)
internal bool equalSmallArrayCArray(smallArrayt *self, const char **p2)
internal smallArrayt * zipSmallJsonSmallArray(smallArrayt *self, smallArrayt *array1, smallJsont *array2)
char * joinSmallJsonSSmallArrayG(smallArrayt *self, smallJsont *delim)
smallArrayt * setPAtNFreeSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *json)
internal ssize_t icBinarySearchArraySmallArray(smallArrayt *self, smallArrayt *array)
internal smallDoublet * popSmallDoubleSmallArray(smallArrayt *self)
smallArrayt * setAtArraycSmallArrayG(smallArrayt *self, int64_t index, char **array)
internal smallArrayt * zipSmallJsonCharSmallArray(smallArrayt *self, smallJsont *array1, char **array2)
int64_t getAtIntSmallArrayG(smallArrayt *self, int64_t retType UNUSED, int64_t index)
smallArrayt * injectNFreeSmallDoubleSmallArrayG(smallArrayt *self, int64_t index, smallDoublet *value)
smallArrayt * pushNFreeArraySmallArrayG(smallArrayt *self, smallArrayt *array)
undefinedt * getAtNDupUndefinedSmallArrayG(smallArrayt *self, undefinedt *retType UNUSED, int64_t index)
smallArrayt * injectSmallDoubleSmallArrayG(smallArrayt *self, int64_t index, smallDoublet *value)
smallArrayt * injectCharSmallArrayG(smallArrayt *self, int64_t index, char c)
int64_t getAtNDupIntSmallArrayG(smallArrayt *self, int64_t retType UNUSED, int64_t index)
internal bool hasSmallIntSmallArray(smallArrayt *self, smallIntt *value)
smallJsont * getAtSmallJsonSmallArrayG(smallArrayt *self, smallJsont *retType UNUSED, int64_t index)
void sArrayDelRangeTiny(sArrayt *array, uint32_t start, uint32_t end)
delete range and shift elements
void sArrayDelTiny(sArrayt *array, uint32_t index)
delete element at index
internal ssize_t binarySearchSSmallArray(smallArrayt *self, const char *string)
smallArrayt * setAtNFreeSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
smallJsont * cropElemSmallJsonSmallArrayG(smallArrayt *self, int64_t index)
internal smallArrayt * setAtNFreeSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *value)
#define isOSmallInt(obj)
test if obj type is smallInt
bool isEmptySmallArrayG(smallArrayt *self)
internal smallStringt * joinCharSmallArray(smallArrayt *self, char c)
bool hasSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
void * getAtVoidSmallArrayG(smallArrayt *self, void *retType UNUSED, int64_t index)
smallArrayt * appendSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
smallArrayt * createSAF(const char *paramType,...)
create String Array Function
internal smallArrayt * pushSmallArray(smallArrayt *self, baset *value)
internal smallArrayt * setPAtSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *json)
internal int64_t iterStepSmallArray(smallArrayt *self)
createAllocateSmallBytes(obj2)
smallJsont * getAtNDupSmallJsonSmallArrayG(smallArrayt *self, smallJsont *retType UNUSED, int64_t index)
bool icEqS(const char *string1, const char *string2)
ignore case string Equal compare string1 to string2
char * trimS(const char *string)
trim String duplicate string
internal smallArrayt * prependSmallIntSmallArray(smallArrayt *self, smallIntt *value)
internal smallArrayt * pushIntSmallArray(smallArrayt *self, int64_t value)
internal int32_t dequeueInt32SmallArray(smallArrayt *self)
smallContainert * cropElemSmallContainerSmallArrayG(smallArrayt *self, int64_t index)
internal bool equalSmallArrayArray(smallArrayt *self, char **p2)
internal smallStringt * popSmallStringSmallArray(smallArrayt *self)
internal ssize_t indexOfCharSmallArray(smallArrayt *self, char c)
internal bool areAllEContainerSmallArray(smallArrayt *self)
internal void freeSmallArray(smallArrayt *self)
internal smallArrayt * pushCharSmallArray(smallArrayt *self, char c)
internal ssize_t binarySearchSmallContainerSmallArray(smallArrayt *self UNUSED, smallContainert *container UNUSED)
internal smallArrayt * injectSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *toInject)
bool icEqualSmallArrayBaseG(smallArrayt *self, baset *p2)
internal smallArrayt * injectNFreeSmallBoolSmallArray(smallArrayt *self, int64_t index, smallBoolt *toInject)
smallArrayt * prependSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
internal smallArrayt * catSmallArray(smallArrayt *self,...)
internal ssize_t binarySearchSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
internal smallArrayt * pushSSmallArray(smallArrayt *self, const char *string)
smallArrayt * typeSmallStringsSmallArrayG(smallArrayt *self)
internal smallArrayt * injectNFreeArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *toInject)
#define pFuncError
print function name and system error
internal bool writeTextSmallStringSmallArray(smallArrayt *self, smallStringt *filePath)
smallArrayt * setPAtDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
internal ssize_t iterIndexSmallArray(smallArrayt *self)
internal bool isEIntSmallArray(smallArrayt *self, int64_t index)
bool hasSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
internal smallArrayt * popArraySmallArray(smallArrayt *self)
internal smallArrayt * injectNFreeDictSmallArray(smallArrayt *self, int64_t index, smallDictt *toInject)
internal bool writeTextSmallArray(smallArrayt *self, const char *filePath)
internal bool areAllEUndefinedSmallArray(smallArrayt *self)
internal smallArrayt * prependSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
internal smallArrayt * emptySmallArray(smallArrayt *self)
bool getAtNDupBoolSmallArrayG(smallArrayt *self, bool retType UNUSED, int64_t index)
int32_t dequeueInt32SmallArrayG(smallArrayt *self, int32_t retType UNUSED)
internal bool dequeueBoolSmallArray(smallArrayt *self)
internal smallArrayt * zipCharSmallArray(smallArrayt *self, smallArrayt *array1, char **array2)
smallArrayt * injectNFreeDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
base class for the small objects all small objects have a type
ssize_t indexOfCArraycSmallArrayG(smallArrayt *self, const char **array)
smallArrayt * reverseSmallArrayG(smallArrayt *self)
internal smallArrayt * prependSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
internal char * joinCharSSmallArray(smallArrayt *self, char c)
internal smallArrayt * injectNFreeSmallContainerSmallArray(smallArrayt *self, int64_t index, smallContainert *toInject)
smallArrayt * readTextSmallStringSmallArrayG(smallArrayt *self, smallStringt *filePath)
internal void enumerateSmallArrayF(smallArrayt *self, void *closure, enumerateElementSmallArrayFt funcElem)
ssize_t indexOfSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
double getAtDoubleSmallArrayG(smallArrayt *self, double retType UNUSED, int64_t index)
bool hasSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
smallDoublet * getAtSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *retType UNUSED, int64_t index)
bool hasArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal smallArrayt * zipArrayCharSmallArray(smallArrayt *self, char **array1, char **array2)
internal bool isEStringSmallArray(smallArrayt *self, int64_t index)
smallArrayt * zipCCharSmallArrayG(smallArrayt *self, smallArrayt *array1, const char **array2)
internal smallArrayt * setAtSmallBytesSmallArray(smallArrayt *self, int64_t index, smallBytest *value)
#define forEachSArray(array, element)
#define createAllocateSmallDict(obj)
smallArrayt * prependNFreeSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
sBytest * allocSBytes(void)
allocate a small bytes object
internal smallArrayt * appendArraySmallArray(smallArrayt *self, char **array)
smallArrayt * appendArraySmallArrayG(smallArrayt *self, char **array)
internal smallDictt * getAtDictSmallArray(smallArrayt *self, int64_t index)
internal ssize_t binarySearchArraycSmallArray(smallArrayt *self, char **array)
internal ssize_t icBinarySearchSmallArray(smallArrayt *self, baset *value)
#define forEachCCharP(list, element)
forEach for const char** lists
internal smallDoublet * getAtNDupSmallDoubleSmallArray(smallArrayt *self, int64_t index)
smallDoublet * cropElemSmallDoubleSmallArrayG(smallArrayt *self, int64_t index)
internal const char * typeStringSmallArray(smallArrayt *self, int64_t index)
void cleanUpSmallArrayTerminateG(smallArrayt **val)
internal smallDictt * getAtNDupDictSmallArray(smallArrayt *self, int64_t index)
ssize_t indexOfSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
internal bool hasSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
uint64_t cropElemUintSmallArrayG(smallArrayt *self, int64_t index)
internal smallIntt * cropElemSmallIntSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushNFreeSSmallArrayG(smallArrayt *self, char *string)
smallArrayt * pushSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
uint64_t dequeueUintSmallArrayG(smallArrayt *self, uint64_t retType UNUSED)
internal uint64_t getAtNDupUintSmallArray(smallArrayt *self, int64_t index)
smallStringt * joinCharSmallArrayG(smallArrayt *self, char c)
internal ssize_t indexOfSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
internal smallArrayt * insertSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *toInsert)
internal smallArrayt * setAtCharSmallArray(smallArrayt *self, int64_t index, char c)
#define isError(assigned, left)
is Assigment Error catch error when assigned is false, 0 or NULL after being assigned with left ...
bool cropElemBoolSmallArrayG(smallArrayt *self, int64_t index)
internal smallArrayt * injectCharSmallArray(smallArrayt *self, int64_t index, char c)
internal ssize_t binarySearchSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
ssize_t binarySearchUndefinedSmallArrayG(smallArrayt *self, undefinedt *value)
smallArrayt * setPAtNFreeSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
smallArrayt * setAtNFreeSmallDoubleSmallArrayG(smallArrayt *self, int64_t index, smallDoublet *value)
internal smallArrayt * setAtNFreeArraycSmallArray(smallArrayt *self, int64_t index, char **array)
internal char typeSmallArray(smallArrayt *self, int64_t index)
internal bool hasSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
internal bool icHasCArraycSmallArray(smallArrayt *self, const char **array)
smallStringt * getAtNDupSmallStringSmallArrayG(smallArrayt *self, smallStringt *retType UNUSED, int64_t index)
internal smallArrayt * setAtDoubleSmallArray(smallArrayt *self, int64_t index, double value)
internal void terminateSmallArray(smallArrayt **self)
internal ssize_t indexOfIntSmallArray(smallArrayt *self, int64_t value)
internal smallDoublet * cropElemSmallDoubleSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * prependNFreeSmallIntSmallArray(smallArrayt *self, smallIntt *value)
smallArrayt * shiftNSmashSmallArrayG(smallArrayt *self, smallArrayt *array)
smallArrayt * allocSmallArray(void)
undefinedt * cropElemUndefinedSmallArrayG(smallArrayt *self, int64_t index)
smallArrayt * pushArraycSmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * injectSmallBytesSmallArray(smallArrayt *self, int64_t index, smallBytest *toInject)
char * sStringGetTiny(sStringt *string)
get string in a small string object
const char ** sArrayTypeStrings(sArrayt *obj)
list first level of array types in a list of strings
smallArrayt * duplicateSmallArrayG(smallArrayt *self)
internal smallDoublet * dequeueSmallDoubleSmallArray(smallArrayt *self)
smallArrayt * zipArraySmallArrayG(smallArrayt *self, char **array1, smallArrayt *array2)
internal smallArrayt * injectNFreeSmallArray(smallArrayt *self, int64_t index, baset *toInject)
internal smallArrayt * prependArraySmallArray(smallArrayt *self, smallArrayt *array)
internal smallArrayt * sortSmallArray(smallArrayt *self)
internal ssize_t icBinarySearchSmallStringSmallArray(smallArrayt *self, smallStringt *string)
char * joinSSmallArrayG(smallArrayt *self, const char *delim)
void finalizeRecycleSmallArray(void *arg UNUSED)
void * popVoidSmallArrayG(smallArrayt *self, void *retType UNUSED)
internal char * getAtNDupSSmallArray(smallArrayt *self, int64_t index)
smallArrayt * setAtNFreeSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *value)
int64_t cropElemIntSmallArrayG(smallArrayt *self, int64_t index)
internal smallIntt * getAtSmallIntSmallArray(smallArrayt *self, int64_t index)
smallArrayt * injectNFreeSmallArrayG(smallArrayt *self, int64_t index, baset *value)
smallArrayt * pushVoidSmallArrayG(smallArrayt *self, void *value)
internal smallArrayt * injectDictSmallArray(smallArrayt *self, int64_t index, smallDictt *toInject)
ssize_t icIndexOfSSmallArrayG(smallArrayt *self, const char *string)
bool icHasDictSmallArrayG(smallArrayt *self, smallDictt *dict)
internal bool isEContainerSmallArray(smallArrayt *self, int64_t index)
#define pStrError(str)
print string and system error
internal smallArrayt * compactSmallArray(smallArrayt *self)
internal baset * cropElemSmallArray(smallArrayt *self, int64_t index)
smallArrayt * readTextSmallJsonSmallArrayG(smallArrayt *self, smallJsont *filePath)
ssize_t indexOfDoubleSmallArrayG(smallArrayt *self, double value)
ssize_t icBinarySearchCArraycSmallArrayG(smallArrayt *self, const char **array)
#define getTopTypeO(self)
internal bool popBoolSmallArray(smallArrayt *self)
#define enumerateS(list, element, index)
enumerateS list to acess the element in the loop, use element ;size_t needed to avoid: error: a label...
internal smallArrayt * pushNFreeManySSmallArray(smallArrayt *self,...)
internal smallArrayt * injectDoubleSmallArray(smallArrayt *self, int64_t index, double toInject)
internal ssize_t icIndexOfSmallStringSmallArray(smallArrayt *self, smallStringt *string)
internal ssize_t indexOfCArraycSmallArray(smallArrayt *self, const char **array)
internal smallArrayt * pushNFreeSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
internal smallArrayt * shiftNSmashSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
#define isOSmallJson(obj)
test if obj type is smallJson
void sArrayPushTiny(sArrayt **array, smallt *data)
push data to array
internal bool hasSSmallArray(smallArrayt *self, const char *string)
bool hasCArraycSmallArrayG(smallArrayt *self, const char **array)
internal ssize_t binarySearchCArraycSmallArray(smallArrayt *self, const char **array)
internal smallArrayt * duplicateSmallArray(smallArrayt *self)
bool icEqualSmallArrayG(smallArrayt *self, smallArrayt *array)
internal void disposeSmallArray(smallArrayt *self)
bool hasUndefinedSmallArrayG(smallArrayt *self, undefinedt *value)
#define isOType(obj, className)
test obj type
internal uint64_t * getAtUintPSmallArray(smallArrayt *self, int64_t index)
smallStringFunctionst * f
smallArrayt * popArraySmallArrayG(smallArrayt *self, smallArrayt *retType UNUSED)
#define isOSmallContainer(obj)
test if obj type is smallContainer
ssize_t indexOfSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
smallBytest * dequeueSmallBytesSmallArrayG(smallArrayt *self, smallBytest *retType UNUSED)
smallArrayt * prependNFreeDictSmallArrayG(smallArrayt *self, smallDictt *dict)
internal bool isEDoubleSmallArray(smallArrayt *self, int64_t index)
#define elif
elif definition as alternative to else if
bool icEqualSmallArrayArrayG(smallArrayt *self, char **p2)
internal smallContainert * getAtNDupSmallContainerSmallArray(smallArrayt *self, int64_t index)
ssize_t binarySearchSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
#define isOUndefined(obj)
test if obj type is undefined
internal smallArrayt * zipArraySmallArray(smallArrayt *self, char **array1, smallArrayt *array2)
internal smallArrayt * prependNFreeSmallContainerSmallArray(smallArrayt *self, smallContainert *container)
smallt * sDuplicateTiny(smallt *obj)
duplicate small object
internal smallArrayt * zipSmallJsonSmallArraySmallArray(smallArrayt *self, smallJsont *array1, smallArrayt *array2)
internal void smashSmallArray(smallArrayt **self)
internal ssize_t indexOfArraycSmallArray(smallArrayt *self, char **array)
#define createAllocateSmallJson(obj)
size_t lenSmallArrayG(smallArrayt *self)
smallStringt * typeSmallStringSmallArrayG(smallArrayt *self, int64_t index)
#define terminateO(obj)
free buffers and obj itself
internal smallArrayt * injectNFreeSmallBytesSmallArray(smallArrayt *self, int64_t index, smallBytest *toInject)
internal smallArrayt * appendNSmashSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
smallArrayt * setAtDoubleSmallArrayG(smallArrayt *self, int64_t index, double value)
smallArrayt * injectSSmallArrayG(smallArrayt *self, int64_t index, const char *string)
smallArrayt * prependSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
internal char * escapeSmallArray(smallArrayt *self)
smallArrayt * sliceSmallArrayG(smallArrayt *self, int64_t start, int64_t end)
internal smallArrayt * setAtSmallDoubleSmallArray(smallArrayt *self, int64_t index, smallDoublet *value)
bool icHasSmallArrayG(smallArrayt *self, baset *value)
internal uint32_t getAtNDupUint32SmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * prependNFreeSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
double * getAtDoublePSmallArrayG(smallArrayt *self, double *retType UNUSED, int64_t index)
int32_t getAtInt32SmallArrayG(smallArrayt *self, int32_t retType UNUSED, int64_t index)
bool * getAtBoolPSmallArrayG(smallArrayt *self, bool *retType UNUSED, int64_t index)
#define range(index, maxCount)
range loop ;size_t UNIQVAR needed to avoid: error: a label can only be part of a statement and a decl...
internal smallArrayt * setAtArraycSmallArray(smallArrayt *self, int64_t index, char **array)
ssize_t binarySearchDictSmallArrayG(smallArrayt *self, smallDictt *dict)
ssize_t indexOfSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
smallContainert * getAtNDupSmallContainerSmallArrayG(smallArrayt *self, smallContainert *retType UNUSED, int64_t index)
pErrorNULL(iPrependS(&ks, "[1]"))
smallDoublet * popSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *retType UNUSED)
smallArrayt * getAtArraySmallArrayG(smallArrayt *self, smallArrayt *retType UNUSED, int64_t index)
smallArrayt * fromCArraySmallArrayG(smallArrayt *self, const char **array, size_t size)
internal smallArrayt * pushSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
internal smallDoublet * getAtSmallDoubleSmallArray(smallArrayt *self, int64_t index)
char * cropElemSSmallArrayG(smallArrayt *self, int64_t index)
internal double dequeueNumSmallArray(smallArrayt *self)
internal bool isEBytesSmallArray(smallArrayt *self, int64_t index)
ssize_t icBinarySearchCharSmallArrayG(smallArrayt *self, char c)
#define isOSmallBytes(obj)
test if obj type is smallBytes
smallArrayt * injectNFreeSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *string)
internal smallBytest * typesSmallArray(smallArrayt *self)
smallArrayt * injectNFreeSmallBytesSmallArrayG(smallArrayt *self, int64_t index, smallBytest *value)
internal smallArrayt * injectNFreeSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *toInject)
sContainert * allocSContainer(void *data)
allocate a small container The container holds a pointer to a user buffer
internal smallArrayt * injectSmallDoubleSmallArray(smallArrayt *self, int64_t index, smallDoublet *toInject)
smallArrayt * pushCArraycSmallArrayG(smallArrayt *self, const char **array)
smallBoolt * getAtNDupSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *retType UNUSED, int64_t index)
internal bool areAllEArraySmallArray(smallArrayt *self)
smallArrayt * setAtDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
int64_t dequeueIntSmallArrayG(smallArrayt *self, int64_t retType UNUSED)
internal smallBoolt * dequeueSmallBoolSmallArray(smallArrayt *self)
internal smallArrayt * prependSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
bool appendTextSmallArrayG(smallArrayt *self, const char *filePath)
internal smallArrayt * zipSmallJsonCCharSmallArray(smallArrayt *self, smallJsont *array1, const char **array2)
smallArrayt * insertNSmashSmallArrayG(smallArrayt *self, int64_t index, smallArrayt *toInsert)
internal smallArrayt * injectNFreeSSmallArray(smallArrayt *self, int64_t index, char *toInject)
bool isBlankSmallArrayG(smallArrayt *self)
int32_t cropElemInt32SmallArrayG(smallArrayt *self, int64_t index)
internal smallArrayt * injectCArraycSmallArray(smallArrayt *self, int64_t index, const char **toInject)
internal smallArrayt * fromArraySmallArray(smallArrayt *self, char **array, size_t size)
sUndefinedt * allocSUndefined(void)
allocate a small undefined object
internal smallArrayt * prependCharSmallArray(smallArrayt *self, char c)
smallArrayt * injectNFreeArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
internal char * joinSmallStringSSmallArray(smallArrayt *self, smallStringt *delim)
internal smallArrayt * setPAtDictSmallArray(smallArrayt *self, int64_t index, smallDictt *dict)
internal smallArrayt * setAtArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *array)
internal smallArrayt * setAtSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *string)
internal bool areAllEIntSmallArray(smallArrayt *self)
#define setTopNFreeO(self, value)
ssize_t binarySearchSmallArrayG(smallArrayt *self, baset *value)
ssize_t binarySearchSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal smallStringt * dequeueSmallStringSmallArray(smallArrayt *self)
bool writeStreamSmallArrayG(smallArrayt *self, FILE *fp)
internal smallArrayt * pushSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
smallContainert * dequeueSmallContainerSmallArrayG(smallArrayt *self, smallContainert *retType UNUSED)
internal bool icHasArraySmallArray(smallArrayt *self, smallArrayt *array)
smallArrayt * appendNSmashSmallArrayG(smallArrayt *self, smallArrayt *array)
internal uint64_t dequeueUintSmallArray(smallArrayt *self)
internal baset * iterNextSmallArray(smallArrayt *self)
internal smallArrayt * insertNSmashSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *toInsert)
smallArrayt * pushArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal smallArrayt * prependSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
smallArrayt * injectNFreeSmallBoolSmallArrayG(smallArrayt *self, int64_t index, smallBoolt *value)
internal void forEachSmallArrayF(smallArrayt *self, void *closure, forEachElementSmallArrayFt funcElem)
internal ssize_t indexOfUndefinedSmallArray(smallArrayt *self, undefinedt *u)
bool dequeueBoolSmallArrayG(smallArrayt *self, bool retType UNUSED)
double popDoubleSmallArrayG(smallArrayt *self, double retType UNUSED)
smallArrayt * pushSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
smallArrayt * setAtIntSmallArrayG(smallArrayt *self, int64_t index, int64_t value)
internal smallJsont * cropElemSmallJsonSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushNFreeSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
smallArrayt * icSortSmallArrayG(smallArrayt *self)
internal smallArrayt * removeSmallArray(smallArrayt *self, int64_t start, int64_t end)
internal smallArrayt * readTextSmallArray(smallArrayt *self, const char *filePath)
bool(* forEachElementSmallArrayFt)(void *closure, baset *element)
user defined function called in the forEach loop this fucntion is a parameter to the forEach function...
internal uint64_t cropElemUintSmallArray(smallArrayt *self, int64_t index)
smallArrayt * prependIntSmallArrayG(smallArrayt *self, int64_t value)
smallIntt * dequeueSmallIntSmallArrayG(smallArrayt *self, smallIntt *retType UNUSED)
internal smallArrayt * pushNFreeArraySmallArray(smallArrayt *self, smallArrayt *array)
internal bool isEBoolSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * setAtNFreeSmallDoubleSmallArray(smallArrayt *self, int64_t index, smallDoublet *value)
smallArrayt * injectSmallArrayG(smallArrayt *self, int64_t index, baset *value)
internal ssize_t icIndexOfArraySmallArray(smallArrayt *self, smallArrayt *array)
bool writeTextSmallArrayG(smallArrayt *self, const char *filePath)
smallArrayt * prependUndefinedSmallArrayG(smallArrayt *self, void *value UNUSED)
internal smallStringt * cropElemSmallStringSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * setAtUndefinedSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushIntSmallArrayG(smallArrayt *self, int64_t value)
smallArrayt * pushUndefinedSmallArrayG(smallArrayt *self, void *value UNUSED)
toStringSmallStringFt toString
smallArrayt * setFromSmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * setAtNFreeUndefinedSmallArray(smallArrayt *self, int64_t index, undefinedt *u)
bool hasSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
smallArrayt * setAtUndefinedSmallArrayG(smallArrayt *self, int64_t index, void *value UNUSED)
internal smallArrayt * prependIntSmallArray(smallArrayt *self, int64_t value)
smallArrayt * setAtCArraycSmallArrayG(smallArrayt *self, int64_t index, const char **array)
smallArrayt * setPAtNFreeDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
bool hasSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
ssize_t binarySearchSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
smallArrayt * prependCArraycSmallArrayG(smallArrayt *self, const char **array)
void registerMethodsSmallArray(smallArrayFunctionst *f)
ssize_t icIndexOfDictSmallArrayG(smallArrayt *self, smallDictt *dict)
bool hasDictSmallArrayG(smallArrayt *self, smallDictt *dict)
smallArrayt * allocCArraySmallArray(const char **array)
internal smallArrayt * setAtSSmallArray(smallArrayt *self, int64_t index, const char *string)
smallArrayt * prependNFreeArraycSmallArrayG(smallArrayt *self, char **array)
internal baset * iterElementSmallArray(smallArrayt *self)
internal smallArrayt * setAtSmallContainerSmallArray(smallArrayt *self, int64_t index, smallContainert *container)
uint32_t getAtUint32SmallArrayG(smallArrayt *self, uint32_t retType UNUSED, int64_t index)
internal smallArrayt * pushNFreeArraycSmallArray(smallArrayt *self, char **array)
internal smallArrayt * prependBoolSmallArray(smallArrayt *self, bool value)
int(* shCmpt)(const void *a, const void *b)
smallArrayt * setAtNFreeSmallBoolSmallArrayG(smallArrayt *self, int64_t index, smallBoolt *value)
#define cast(type, casted, toCast)
define variable and cast pointer
smallArrayt * prependDictSmallArrayG(smallArrayt *self, smallDictt *dict)
ssize_t binarySearchBoolSmallArrayG(smallArrayt *self, bool value)
smallArrayt * pushNFreeArraycSmallArrayG(smallArrayt *self, char **array)
smallArrayt * injectCArraycSmallArrayG(smallArrayt *self, int64_t index, const char **array)
internal smallArrayt * prependNFreeArraySmallArray(smallArrayt *self, smallArrayt *array)
internal ssize_t indexOfBoolSmallArray(smallArrayt *self, bool value)
char * joinCharSSmallArrayG(smallArrayt *self, char c)
ssize_t indexOfSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
ssize_t icIndexOfArraycSmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * appendNSmashSmallArray(smallArrayt *self, smallArrayt *array)
internal smallArrayt * pushNFreeSmallIntSmallArray(smallArrayt *self, smallIntt *value)
smallArrayt * setAtSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *value)
smallArrayt * setAtNFreeSmallArrayG(smallArrayt *self, int64_t index, baset *value)
double getNumSmallArrayG(smallArrayt *self, int64_t index)
smallArrayt * prependArraySmallArrayG(smallArrayt *self, smallArrayt *array)
ssize_t icBinarySearchDictSmallArrayG(smallArrayt *self, smallDictt *dict)
bool icEqualSmallArrayArray(smallArrayt *self, char **p2)
internal smallArrayt * pushNFreeSmallJsonSmallArray(smallArrayt *self, smallJsont *value)
internal smallArrayt * setPAtSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *string)
ssize_t indexOfArraycSmallArrayG(smallArrayt *self, char **array)
internal smallArrayt * pushSmallContainerSmallArray(smallArrayt *self, smallContainert *container)
smallArrayt * injectSmallContainerSmallArrayG(smallArrayt *self, int64_t index, smallContainert *container)
internal smallStringt * typeSmallStringSmallArray(smallArrayt *self, int64_t index)
smallArrayt * setAtSmallContainerSmallArrayG(smallArrayt *self, int64_t index, smallContainert *container)
internal smallArrayt * injectNFreeSmallDoubleSmallArray(smallArrayt *self, int64_t index, smallDoublet *toInject)
internal char * cropElemSSmallArray(smallArrayt *self, int64_t index)
smallArrayt * setAtSSmallArrayG(smallArrayt *self, int64_t index, const char *string)
bool hasCharSmallArrayG(smallArrayt *self, char c)
#define toStringO(obj)
convert data in obj to string
bool icEqualSmallArrayCArrayG(smallArrayt *self, const char **p2)
internal ssize_t icBinarySearchSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
internal smallStringt * getAtSmallStringSmallArray(smallArrayt *self, int64_t index)
smallContainert * popSmallContainerSmallArrayG(smallArrayt *self, smallContainert *retType UNUSED)
ssize_t icIndexOfSmallArrayG(smallArrayt *self, baset *value)
internal smallArrayt * prependSmallStringSmallArray(smallArrayt *self, smallStringt *string)
internal int sortFCmp(const void *a, const void *b, void *func)
internal smallArrayt * pushNFreeManySmallArray(smallArrayt *self,...)
internal smallArrayt * icSortSmallArray(smallArrayt *self)
smallArrayt * zipSmallArrayG(smallArrayt *self, smallArrayt *array1, smallArrayt *array2)
internal ssize_t icBinarySearchDictSmallArray(smallArrayt *self, smallDictt *dict)
internal smallArrayt * prependNFreeSSmallArray(smallArrayt *self, char *string)
smallArrayt * setPAtArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
internal void resetSmallArray(smallArrayt *self)
internal smallArrayt * insertNSmashSmallArray(smallArrayt *self, int64_t index, smallArrayt *toInsert)
void initiateAllocateSmallArray(smallArrayt **self)
internal ssize_t binarySearchSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
smallArrayt * setAtNFreeArraycSmallArrayG(smallArrayt *self, int64_t index, char **array)
smallArrayt * injectArraycSmallArrayG(smallArrayt *self, int64_t index, char **array)
internal smallArrayt * fromArrayNFreeSmallArray(smallArrayt *self, char **array, size_t size)
internal smallBytest * popSmallBytesSmallArray(smallArrayt *self)
smallStringt * popSmallStringSmallArrayG(smallArrayt *self, smallStringt *retType UNUSED)
internal bool icHasSmallStringSmallArray(smallArrayt *self, smallStringt *string)
smallArrayt * prependNFreeSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
smallArrayt * zipArrayCharSmallArrayG(smallArrayt *self, char **array1, char **array2)
internal smallArrayt * readTextSmallJsonSmallArray(smallArrayt *self, smallJsont *filePath)
bool appendTextSmallStringSmallArrayG(smallArrayt *self, smallStringt *filePath)
sDictt * allocSDict(void)
allocate a small dict
ssize_t icIndexOfCharSmallArrayG(smallArrayt *self, char c)
sContainert * data
pointer to data in smallContainer
smallArrayt * zipCharSmallArrayG(smallArrayt *self, smallArrayt *array1, char **array2)
uint32_t * getAtUint32PSmallArrayG(smallArrayt *self, uint32_t *retType UNUSED, int64_t index)
internal smallArrayt * delSmallArray(smallArrayt *self, int64_t start, int64_t end)
internal smallArrayt * setAtNFreeSmallBytesSmallArray(smallArrayt *self, int64_t index, smallBytest *value)
internal smallJsont * getAtNDupSmallJsonSmallArray(smallArrayt *self, int64_t index)
internal bool areAllEStringSmallArray(smallArrayt *self)
internal bool isEFaststringSmallArray(smallArrayt *self, int64_t index)
internal ssize_t icIndexOfCArraycSmallArray(smallArrayt *self, const char **array)
internal smallArrayt * zipSmallJsonSmallJsonSmallArray(smallArrayt *self, smallJsont *array1, smallJsont *array2)
smallArrayt * injectSmallIntSmallArrayG(smallArrayt *self, int64_t index, smallIntt *value)
internal smallArrayt * appendSmallArray(smallArrayt *self, smallArrayt *array)
ssize_t binarySearchCArraycSmallArrayG(smallArrayt *self, const char **array)
internal smallArrayt * injectSmallIntSmallArray(smallArrayt *self, int64_t index, smallIntt *toInject)
internal ssize_t indexOfArraySmallArray(smallArrayt *self, smallArrayt *array)
smallArrayt * setAtNFreeSmallContainerSmallArrayG(smallArrayt *self, int64_t index, smallContainert *container)
smallIntt * getAtSmallIntSmallArrayG(smallArrayt *self, smallIntt *retType UNUSED, int64_t index)
smallStringt * joinSmallStringSmallArrayG(smallArrayt *self, smallStringt *delim)
internal int32_t popInt32SmallArray(smallArrayt *self)
internal smallArrayt * zipArraySmallJsonSmallArray(smallArrayt *self, char **array1, smallJsont *array2)
internal baset * iterStartFromSmallArray(smallArrayt *self, int64_t index)
smallArrayt * shiftNSmashSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
internal ssize_t icBinarySearchCharSmallArray(smallArrayt *self, char c)
internal smallArrayt * setAtIntSmallArray(smallArrayt *self, int64_t index, int64_t value)
internal smallArrayt * prependNFreeDictSmallArray(smallArrayt *self, smallDictt *dict)
smallArrayt * prependDoubleSmallArrayG(smallArrayt *self, double value)
internal ssize_t icIndexOfSmallArray(smallArrayt *self, baset *value)
bool icEqualSmallArrayBase(smallArrayt *self, baset *p2)
smallArrayt * pushDoubleSmallArrayG(smallArrayt *self, double value)
smallArrayt * setAtSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
smallContainerFunctionst * f
internal smallDictt * dequeueDictSmallArray(smallArrayt *self)
smallArrayt * readStreamSmallArrayG(smallArrayt *self, FILE *fp)
void sArrayPrependTiny(sArrayt **array, smallt *data)
prepend data in array
internal ssize_t icIndexOfSSmallArray(smallArrayt *self, const char *string)
internal smallArrayt * pushManySmallArray(smallArrayt *self,...)
char * toStringListSGF(char **object)
smallArrayt * setAtNFreeSmallIntSmallArrayG(smallArrayt *self, int64_t index, smallIntt *value)
internal ssize_t binarySearchCharSmallArray(smallArrayt *self, char c)
smallBoolt * dequeueSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *retType UNUSED)
internal smallArrayt * pushArraySmallArray(smallArrayt *self, smallArrayt *array)
ssize_t icIndexOfSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
baset * toBaset(smallt *obj)
convert smallt object to baset
smallDictt * dequeueDictSmallArrayG(smallArrayt *self, smallDictt *retType UNUSED)
internal ssize_t binarySearchUndefinedSmallArray(smallArrayt *self UNUSED, undefinedt *u UNUSED)
internal double getAtNDupDoubleSmallArray(smallArrayt *self, int64_t index)
internal smallBytest * cropElemSmallBytesSmallArray(smallArrayt *self, int64_t index)
internal undefinedt * getAtNDupUndefinedSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushNFreeSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
smallArrayt * trimSmallArrayG(smallArrayt *self)
internal smallIntt * dequeueSmallIntSmallArray(smallArrayt *self)
double cropElemDoubleSmallArrayG(smallArrayt *self, int64_t index)
ssize_t indexOfDictSmallArrayG(smallArrayt *self, smallDictt *dict)
smallArrayt * prependNFreeSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal ssize_t binarySearchSmallIntSmallArray(smallArrayt *self, smallIntt *value)
#define isOSmallDouble(obj)
test if obj type is smallDouble
void sArraySetTiny(sArrayt *array, uint32_t index, smallt *value)
set value at index
smallArrayt * pushSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
internal int32_t * getAtInt32PSmallArray(smallArrayt *self, int64_t index)
void * sBytesGet(sBytest *bytes)
get buffer in small bytes
internal smallArrayt * appendSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
smallStringt * cropElemSmallStringSmallArrayG(smallArrayt *self, int64_t index)
smallArrayt * pushNFreeSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
smallArrayt * prependNFreeSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
smallArrayt * setAtNFreeUndefinedSmallArrayG(smallArrayt *self, int64_t index, void *value)
bool hasSmallArrayG(smallArrayt *self, baset *value)
baset * dequeueSmallArrayG(smallArrayt *self, baset *retType UNUSED)
ssize_t binarySearchIntSmallArrayG(smallArrayt *self, int64_t value)
internal bool areAllEBytesSmallArray(smallArrayt *self)
internal int64_t popIntSmallArray(smallArrayt *self)
bool icHasArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal smallArrayt * injectNFreeUndefinedSmallArray(smallArrayt *self, int64_t index, undefinedt *u)
internal ssize_t indexOfSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
smallArrayt * zipCArraySmallArrayG(smallArrayt *self, const char **array1, smallArrayt *array2)
smallArrayt * setPAtSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
smallArrayt * pushNFreeSmallJsonSmallArrayG(smallArrayt *self, smallJsont *value)
internal bool equalSmallArray(smallArrayt *self, smallArrayt *array)
internal smallArrayt * removeElemSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * prependDoubleSmallArray(smallArrayt *self, double value)
internal double * getAtDoublePSmallArray(smallArrayt *self, int64_t index)
smallArrayt * icUniqSmallArrayG(smallArrayt *self, int dum UNUSED)
smallArrayt * setAtNFreeArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
internal smallArrayt * injectSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *toInject)
sDoublet * allocSDouble(double value)
allocate a small double
int32_t popInt32SmallArrayG(smallArrayt *self, int32_t retType UNUSED)
#define isOSmallDict(obj)
test if obj type is smallDictt
smallArrayt * zipArrayCCharSmallArrayG(smallArrayt *self, char **array1, const char **array2)
smallArrayt * dequeueArraySmallArrayG(smallArrayt *self, smallArrayt *retType UNUSED)
ssize_t indexOfUndefinedSmallArrayG(smallArrayt *self, undefinedt *value)
smallArrayt * shiftSmallArrayG(smallArrayt *self, smallArrayt *array)
smallContainert * getAtSmallContainerSmallArrayG(smallArrayt *self, smallContainert *retType UNUSED, int64_t index)
#define BLD
bold for color function
smallArrayt * injectSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *string)
smallArrayt * prependNFreeUndefinedSmallArrayG(smallArrayt *self, undefinedt *value)
smallArrayt * setAtCharSmallArrayG(smallArrayt *self, int64_t index, char c)
internal baset * popSmallArray(smallArrayt *self)
undefinedt * getAtUndefinedSmallArrayG(smallArrayt *self, undefinedt *retType UNUSED, int64_t index)
internal bool hasArraySmallArray(smallArrayt *self, smallArrayt *array)
#define enumerateCS(list, element, index)
enumerateCS const list to acess the element in the loop, use element ;size_t needed to avoid: error: ...
internal ssize_t indexOfDoubleSmallArray(smallArrayt *self, double value)
char * dupS(const char *string)
duplicate string
smallArrayt * prependCharSmallArrayG(smallArrayt *self, char c)
internal smallBoolt * getAtSmallBoolSmallArray(smallArrayt *self, int64_t index)
smallStringt * joinSmallJsonSmallArrayG(smallArrayt *self, smallJsont *delim)
internal smallArrayt * getAtNDupArraySmallArray(smallArrayt *self, int64_t index)
smallDoublet * dequeueSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *retType UNUSED)
internal smallArrayt * zipCArrayCharSmallArray(smallArrayt *self, const char **array1, char **array2)
smallArrayt * getAtNDupArraySmallArrayG(smallArrayt *self, smallArrayt *retType UNUSED, int64_t index)
smallArrayt * zipCArrayCCharSmallArrayG(smallArrayt *self, const char **array1, const char **array2)
internal char * joinSSmallArray(smallArrayt *self, const char *delim)
ssize_t indexOfCharSmallArrayG(smallArrayt *self, char c)
toStringSmallArrayFt toString
internal int64_t getAtIntSmallArray(smallArrayt *self, int64_t index)
END_TEST createSmallArray(obj)
internal smallArrayt * pushSmallJsonSmallArray(smallArrayt *self, smallJsont *value)
char * popSSmallArrayG(smallArrayt *self, char *retType UNUSED)
internal void setsoSmallArray(smallArrayt *self, sArrayt *so)
size_t listLengthCS(const char **list)
const list Length String return number of elements until the first NULL element
smallArrayt * injectBoolSmallArrayG(smallArrayt *self, int64_t index, bool value)
internal double dequeueDoubleSmallArray(smallArrayt *self)
internal smallArrayt * appendNSmashArraySmallArray(smallArrayt *self, char **array)
internal smallArrayt * pushArraycSmallArray(smallArrayt *self, char **array)
smallArrayt * pushSmallJsonSmallArrayG(smallArrayt *self, smallJsont *value)
bool icHasCArraycSmallArrayG(smallArrayt *self, const char **array)
initiateAllocateSmallJson & json
internal bool areAllEFaststringSmallArray(smallArrayt *self)
internal smallArrayt * pushNFreeSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
ssize_t indexOfSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
internal smallArrayt * setPAtNFreeArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *array)
bool writeTextSmallJsonSmallArrayG(smallArrayt *self, smallJsont *filePath)
internal smallArrayt * injectSSmallArray(smallArrayt *self, int64_t index, const char *toInject)
internal smallArrayt * setAtSmallIntSmallArray(smallArrayt *self, int64_t index, smallIntt *value)
uint32_t cropElemUint32SmallArrayG(smallArrayt *self, int64_t index)
internal int64_t dequeueIntSmallArray(smallArrayt *self)
smallArrayt * zipArraySmallJsonSmallArrayG(smallArrayt *self, char **array1, smallJsont *array2)
#define isOSmallBool(obj)
test if obj type is smallBool
internal ssize_t indexOfSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
smallArrayt * prependSSmallArrayG(smallArrayt *self, const char *string)
internal void * popVoidSmallArray(smallArrayt *self)
char * iAppendS(char **string1, const char *string2)
append strings
smallArrayt * injectNFreeSmallContainerSmallArrayG(smallArrayt *self, int64_t index, smallContainert *container)
bool popBoolSmallArrayG(smallArrayt *self, bool retType UNUSED)
internal bool hasSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
internal smallArrayt * prependSmallContainerSmallArray(smallArrayt *self, smallContainert *container)
smallArrayt * pushNFreeDictSmallArrayG(smallArrayt *self, smallDictt *dict)
smallArrayt * setAtArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
internal void finishSmallArray(smallArrayt **self)
internal smallArrayt * injectNFreeSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *toInject)
internal bool hasUndefinedSmallArray(smallArrayt *self, undefinedt *u)
bool equalSmallArraySmallJsonG(smallArrayt *self, smallJsont *array)
smallArrayt * copySmallArrayG(smallArrayt *self, int64_t start, int64_t end)
internal smallArrayt * cropSmallArray(smallArrayt *self, int64_t start, int64_t end)
smallBoolt * cropElemSmallBoolSmallArrayG(smallArrayt *self, int64_t index)
ssize_t icIndexOfCArraycSmallArrayG(smallArrayt *self, const char **array)
smallArrayt * injectIntSmallArrayG(smallArrayt *self, int64_t index, int64_t value)
internal smallArrayt * setPAtNFreeDictSmallArray(smallArrayt *self, int64_t index, smallDictt *dict)
bool hasSSmallArrayG(smallArrayt *self, const char *string)
internal double getAtDoubleSmallArray(smallArrayt *self, int64_t index)
internal void * dequeueVoidSmallArray(smallArrayt *self)
internal smallArrayt * delElemSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * shiftNSmashSmallArray(smallArrayt *self, smallArrayt *array)
smallIntt * cropElemSmallIntSmallArrayG(smallArrayt *self, int64_t index)
internal smallArrayt * cropElemArraySmallArray(smallArrayt *self, int64_t index)
bool icEqualSmallArraySmallJsonG(smallArrayt *self, smallJsont *array)
smallIntt * popSmallIntSmallArrayG(smallArrayt *self, smallIntt *retType UNUSED)
ssize_t icIndexOfSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
smallArrayt * pushDictSmallArrayG(smallArrayt *self, smallDictt *dict)
smallArrayt * zipSmallJsonSmallArraySmallArrayG(smallArrayt *self, smallJsont *array1, smallArrayt *array2)
internal uint32_t * getAtUint32PSmallArray(smallArrayt *self, int64_t index)
smallArrayt * pushSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal smallArrayt * setAtNFreeSmallBoolSmallArray(smallArrayt *self, int64_t index, smallBoolt *value)
internal smallArrayt * prependCArraycSmallArray(smallArrayt *self, const char **array)
smallArrayt * setAtBoolSmallArrayG(smallArrayt *self, int64_t index, bool value)
internal uint32_t popUint32SmallArray(smallArrayt *self)
internal double getNumSmallArray(smallArrayt *self, int64_t index)
ssize_t binarySearchSSmallArrayG(smallArrayt *self, const char *string)
bool icHasCharSmallArrayG(smallArrayt *self, char c)
internal smallArrayt * prependNFreeArraycSmallArray(smallArrayt *self, char **array)
char * sEscape(smallt *obj)
stringify object
internal void logSmallArray(smallArrayt *self)
internal smallArrayt * injectBoolSmallArray(smallArrayt *self, int64_t index, bool toInject)
undefinedt * dequeueUndefinedSmallArrayG(smallArrayt *self, undefinedt *retType UNUSED)
smallArrayt * pushCharSmallArrayG(smallArrayt *self, char c)
bool equalSmallArrayCArrayG(smallArrayt *self, const char **p2)
internal smallStringt * joinSmallJsonSmallArray(smallArrayt *self, smallJsont *delim)
smallArrayt * zipSmallJsonSmallJsonSmallArrayG(smallArrayt *self, smallJsont *array1, smallJsont *array2)
smallArrayt * compactSmallArrayG(smallArrayt *self)
double getAtNDupDoubleSmallArrayG(smallArrayt *self, double retType UNUSED, int64_t index)
internal bool areAllEDoubleSmallArray(smallArrayt *self)
smallArrayt * readTextSmallArrayG(smallArrayt *self, const char *filePath)
internal uint64_t popUintSmallArray(smallArrayt *self)
uint32_t getAtNDupUint32SmallArrayG(smallArrayt *self, uint32_t retType UNUSED, int64_t index)
ssize_t binarySearchCharSmallArrayG(smallArrayt *self, char c)
undefinedt * allocUndefined(void)
smallArrayt * removeSmallArrayG(smallArrayt *self, int64_t start, int64_t end)
smallArrayt * setAtSmallIntSmallArrayG(smallArrayt *self, int64_t index, smallIntt *value)
internal smallArrayt * zipSmallArray(smallArrayt *self, smallArrayt *array1, smallArrayt *array2)
internal ssize_t binarySearchDictSmallArray(smallArrayt *self, smallDictt *dict)
smallArrayt * setAtSmallArrayG(smallArrayt *self, int64_t index, baset *value)
internal bool equalSmallArrayBase(smallArrayt *self, baset *p2)
internal char * getAtSSmallArray(smallArrayt *self, int64_t index)
internal bool icHasSmallArray(smallArrayt *self, baset *value)
internal bool icHasDictSmallArray(smallArrayt *self, smallDictt *dict)
internal uint32_t getAtUint32SmallArray(smallArrayt *self, int64_t index)
void cleanUpSmallArrayFinishG(smallArrayt **val)
smallArrayt * prependNFreeSmallArrayG(smallArrayt *self, baset *value)
smallArrayt * injectVoidSmallArrayG(smallArrayt *self, int64_t index, void *value)
internal smallBoolt * cropElemSmallBoolSmallArray(smallArrayt *self, int64_t index)
internal void * getAtVoidSmallArray(smallArrayt *self, int64_t index)
smallJsont * popSmallJsonSmallArrayG(smallArrayt *self, smallJsont *retType UNUSED)
smallArrayt * insertSmallArrayG(smallArrayt *self, int64_t index, smallArrayt *toInsert)
smallArrayt * prependNFreeSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
void * dequeueVoidSmallArrayG(smallArrayt *self, void *retType UNUSED)
internal bool areAllEBoolSmallArray(smallArrayt *self)
terminateSmallArrayFt terminate
internal int64_t getAtNDupIntSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * fromCArraySmallArray(smallArrayt *self, const char **array, size_t size)
ssize_t indexOfSmallArrayG(smallArrayt *self, baset *value)
smallt * toSmallt(baset *obj)
convert baset object to smallt
internal smallArrayt * getAtArraySmallArray(smallArrayt *self, int64_t index)
int64_t * getAtIntPSmallArrayG(smallArrayt *self, int64_t *retType UNUSED, int64_t index)
internal ssize_t indexOfSmallArray(smallArrayt *self, baset *value)
internal bool isETypeSmallArray(smallArrayt *self, int64_t index, const char *type)
bool writeTextSmallStringSmallArrayG(smallArrayt *self, smallStringt *filePath)
internal smallArrayt * pushNFreeSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
internal bool appendTextSmallStringSmallArray(smallArrayt *self, smallStringt *filePath)
internal smallArrayt * setAtNFreeSmallIntSmallArray(smallArrayt *self, int64_t index, smallIntt *value)
#define QSORT(Q_N, Q_LESS, Q_SWAP)
internal smallArrayt * uniqSmallArray(smallArrayt *self)
sBoolt * allocSBool(bool value)
allocate a small bool
internal smallContainert * dequeueSmallContainerSmallArray(smallArrayt *self)
smallArrayt * allocArraySmallArray(char **array)
internal smallArrayt * pushNFreeSSmallArray(smallArrayt *self, char *string)
bool equalSmallArrayG(smallArrayt *self, smallArrayt *array)
smallArrayt * zipSmallJsonCharSmallArrayG(smallArrayt *self, smallJsont *array1, char **array2)
ssize_t icIndexOfArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal smallArrayt * pushNFreeUndefinedSmallArray(smallArrayt *self, undefinedt *u)
void sArrayFreeTiny(sArrayt *array)
free array elements and array object
bool equalSmallArrayBaseG(smallArrayt *self, baset *p2)
smallArrayt * injectSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
smallDictt * getAtNDupDictSmallArrayG(smallArrayt *self, smallDictt *retType UNUSED, int64_t index)
smallArrayt * uniqSmallArrayG(smallArrayt *self, int dum UNUSED)
smallArrayt * injectNFreeSmallStringSmallArrayG(smallArrayt *self, int64_t index, smallStringt *string)
internal int32_t getAtInt32SmallArray(smallArrayt *self, int64_t index)
internal bool hasSmallContainerSmallArray(smallArrayt *self, smallContainert *container)
bool icHasSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal uint32_t dequeueUint32SmallArray(smallArrayt *self)
#define forEachCharP(list, element)
forEach - loop macro on list indexes to access the element in the loop, use *element ...
internal ssize_t binarySearchSmallArray(smallArrayt *self, baset *value)
void * cropElemVoidSmallArrayG(smallArrayt *self, int64_t index)
smallArrayt * delElemSmallArrayG(smallArrayt *self, int64_t index)
smallArrayt * setAtNFreeSSmallArrayG(smallArrayt *self, int64_t index, char *string)
internal bool icHasArraycSmallArray(smallArrayt *self, char **array)
smallStringt * allocSmallString(const char *string)
internal smallArrayt * prependNFreeSmallDoubleSmallArray(smallArrayt *self, smallDoublet *value)
internal smallArrayt * setAtCArraycSmallArray(smallArrayt *self, int64_t index, const char **array)
internal undefinedt * dequeueUndefinedSmallArray(smallArrayt *self)
baset * popSmallArrayG(smallArrayt *self, baset *retType UNUSED)
internal ssize_t indexOfSmallBytesSmallArray(smallArrayt *self, smallBytest *value)
uint64_t popUintSmallArrayG(smallArrayt *self, uint64_t retType UNUSED)
bool icHasSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
smallDictt * popDictSmallArrayG(smallArrayt *self, smallDictt *retType UNUSED)
internal bool cropElemBoolSmallArray(smallArrayt *self, int64_t index)
internal smallStringt * getAtNDupSmallStringSmallArray(smallArrayt *self, int64_t index)
#define getValO(self)
get value in smallBool, smallBytes, smallDouble, smallInt, smallString
smallArrayt * setAtSmallBytesSmallArrayG(smallArrayt *self, int64_t index, smallBytest *value)
internal baset * iterStartFromStepSmallArray(smallArrayt *self, int64_t index, int64_t step)
smallJsont * dequeueSmallJsonSmallArrayG(smallArrayt *self, smallJsont *retType UNUSED)
smallIntt * getAtNDupSmallIntSmallArrayG(smallArrayt *self, smallIntt *retType UNUSED, int64_t index)
char * dequeueSSmallArrayG(smallArrayt *self, char *retType UNUSED)
internal bool isEArraySmallArray(smallArrayt *self, int64_t index)
smallArrayt * setPAtNFreeArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
internal char * joinSmallJsonSSmallArray(smallArrayt *self, smallJsont *delim)
internal smallBytest * dequeueSmallBytesSmallArray(smallArrayt *self)
#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...
internal bool hasArraycSmallArray(smallArrayt *self, char **array)
internal bool equalSmallArraySmallJson(smallArrayt *self, smallJsont *array)
smallArrayt * injectNFreeSmallIntSmallArrayG(smallArrayt *self, int64_t index, smallIntt *value)
internal int sortSCmp(const void *a, const void *b)
internal smallArrayt * pushSmallIntSmallArray(smallArrayt *self, smallIntt *value)
internal void * cropElemVoidSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * trimSmallArray(smallArrayt *self)
smallArrayt * setAtNFreeSmallBytesSmallArrayG(smallArrayt *self, int64_t index, smallBytest *value)
internal smallArrayt * setAtNFreeSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *string)
internal smallArrayt * prependUndefinedSmallArray(smallArrayt *self)
#define sjGet(obj)
get a pointer to the string in the smallJson object
internal smallArrayt * injectArraycSmallArray(smallArrayt *self, int64_t index, char **toInject)
char * getAtNDupSSmallArrayG(smallArrayt *self, char *retType UNUSED, int64_t index)
smallArrayt * prependVoidSmallArrayG(smallArrayt *self, void *value)
internal char * toStringSmallArray(smallArrayt *self)
internal ssize_t indexOfSSmallArray(smallArrayt *self, const char *string)
internal smallArrayt * copySmallArray(smallArrayt *self, int64_t start, int64_t end)
void shEPrintfS(const char *fmt,...)
sheepy Error printf String print with logE
uint64_t * getAtUintPSmallArrayG(smallArrayt *self, uint64_t *retType UNUSED, int64_t index)
internal smallArrayt * setAtNFreeSSmallArray(smallArrayt *self, int64_t index, char *string)
ssize_t indexOfBoolSmallArrayG(smallArrayt *self, bool value)
internal smallBoolt * getAtNDupSmallBoolSmallArray(smallArrayt *self, int64_t index)
internal smallContainert * popSmallContainerSmallArray(smallArrayt *self)
internal smallArrayt * icUniqSmallArray(smallArrayt *self)
smallt * sArrayGetTiny(sArrayt *array, uint32_t index)
get object at index
#define freeO(obj)
free buffers in obj
smallArrayt * zipSmallJsonCCharSmallArrayG(smallArrayt *self, smallJsont *array1, const char **array2)
smallArrayt * prependNFreeArraySmallArrayG(smallArrayt *self, smallArrayt *array)
smallStringt * getAtSmallStringSmallArrayG(smallArrayt *self, smallStringt *retType UNUSED, int64_t index)
smallArrayt * insertNSmashSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *toInsert)
internal smallArrayt * setAtNFreeSmallContainerSmallArray(smallArrayt *self, int64_t index, smallContainert *container)
internal smallArrayt * setPAtNFreeSmallStringSmallArray(smallArrayt *self, int64_t index, smallStringt *string)
internal smallArrayt * injectNFreeSmallIntSmallArray(smallArrayt *self, int64_t index, smallIntt *toInject)
smallArrayt * injectNFreeSSmallArrayG(smallArrayt *self, int64_t index, char *string)
internal bool getAtBoolSmallArray(smallArrayt *self, int64_t index)
internal int32_t getAtNDupInt32SmallArray(smallArrayt *self, int64_t index)
internal bool hasBoolSmallArray(smallArrayt *self, bool value)
internal smallArrayt * zipCArrayCCharSmallArray(smallArrayt *self, const char **array1, const char **array2)
ssize_t icBinarySearchSSmallArrayG(smallArrayt *self, const char *string)
internal undefinedt * cropElemUndefinedSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * pushNFreeSmallArray(smallArrayt *self, baset *value)
smallArrayt * pushNFreeSmallArrayG(smallArrayt *self, baset *value)
internal bool hasCArraycSmallArray(smallArrayt *self, const char **array)
#define rangeFromStep(index, from, maxCount, step)
range step loop starting at value from ;size_t UNIQVAR needed to avoid: error: a label can only be pa...
internal bool hasSmallStringSmallArray(smallArrayt *self, smallStringt *string)
#define enumerateSArray(array, element, index)
void sFree(smallt *obj)
free non null objects
smallArrayt * appendCArraySmallArrayG(smallArrayt *self, const char **array)
smallArrayt * setAtNFreeDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
smallArrayt * cropElemArraySmallArrayG(smallArrayt *self, int64_t index)
internal size_t lenSmallArray(smallArrayt *self)
smallArrayt * sortSmallArrayG(smallArrayt *self)
internal undefinedt * popUndefinedSmallArray(smallArrayt *self)
smallBytest * cropElemSmallBytesSmallArrayG(smallArrayt *self, int64_t index)
bool(* enumerateElementSmallArrayFt)(void *closure, size_t index, baset *element)
user defined function called in the enumerate loop this fucntion is a parameter to the enumerate func...
internal ssize_t icBinarySearchCArraycSmallArray(smallArrayt *self, const char **array)
double dequeueDoubleSmallArrayG(smallArrayt *self, double retType UNUSED)
internal bool appendTextSmallArray(smallArrayt *self, const char *filePath)
internal ssize_t icBinarySearchArraycSmallArray(smallArrayt *self, char **array)
internal smallArrayt * injectSmallArray(smallArrayt *self, int64_t index, baset *toInject)
internal bool isEmptySmallArray(smallArrayt *self)
ssize_t binarySearchSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
smallArrayt * appendNSmashSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
internal smallArrayt * setAtNFreeArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *array)
size_t listLengthS(char **list)
list Length String return number of elements until the first NULL element
internal smallJsont * getAtSmallJsonSmallArray(smallArrayt *self, int64_t index)
internal smallContainert * cropElemSmallContainerSmallArray(smallArrayt *self, int64_t index)
internal ssize_t icIndexOfSmallJsonSmallArray(smallArrayt *self, smallJsont *string)
internal smallArrayt * sortFSmallArray(smallArrayt *self, shCmpt compareFunction)
smallArrayt * injectDictSmallArrayG(smallArrayt *self, int64_t index, smallDictt *dict)
internal smallIntt * popSmallIntSmallArray(smallArrayt *self)
void cleanUpSmallArraySmashG(smallArrayt **val)
ssize_t icBinarySearchSmallArrayG(smallArrayt *self, baset *value)
internal bool icEqualSmallArraySmallJson(smallArrayt *self, smallJsont *array)
duplicateSmallArrayFt duplicate
internal const char * helpSmallArray(smallArrayt UNUSED *self)
smallDictt * getAtDictSmallArrayG(smallArrayt *self, smallDictt *retType UNUSED, int64_t index)
smallArrayt * pushNFreeSmallBytesSmallArrayG(smallArrayt *self, smallBytest *value)
internal ssize_t binarySearchSmallBoolSmallArray(smallArrayt *self, smallBoolt *value)
internal uint64_t getAtUintSmallArray(smallArrayt *self, int64_t index)
internal char * popSSmallArray(smallArrayt *self)
ssize_t binarySearchArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal smallContainert * getAtSmallContainerSmallArray(smallArrayt *self, int64_t index)
internal smallJsont * popSmallJsonSmallArray(smallArrayt *self)
smallArrayt * setAtVoidSmallArrayG(smallArrayt *self, int64_t index, void *value)
internal smallArrayt * pushDoubleSmallArray(smallArrayt *self, double value)
sArrayt * allocSArray(void)
allocate a small array
internal bool hasIntSmallArray(smallArrayt *self, int64_t value)
internal baset * dequeueSmallArray(smallArrayt *self)
#define pushNFreeO(self, value)
baset * getAtSmallArrayG(smallArrayt *self, baset *retType UNUSED, int64_t index)
internal smallArrayt * shiftSmallArray(smallArrayt *self, smallArrayt *array)
smallArrayt * injectArraySmallArrayG(smallArrayt *self, int64_t index, smallArrayt *array)
ssize_t icBinarySearchArraycSmallArrayG(smallArrayt *self, char **array)
smallArrayt * pushNFreeUndefinedSmallArrayG(smallArrayt *self, undefinedt *value)
internal smallBoolt * popSmallBoolSmallArray(smallArrayt *self)
void logSmallArrayG(smallArrayt *self)
baset * getAtSmallArray(smallArrayt *self, int64_t index)
internal ssize_t binarySearchBoolSmallArray(smallArrayt *self, bool value)
bool hasBoolSmallArrayG(smallArrayt *self, bool value)
internal smallArrayt * pushManySSmallArray(smallArrayt *self,...)
internal smallArrayt * prependNFreeSmallStringSmallArray(smallArrayt *self, smallStringt *string)
internal smallArrayt * setPAtArraySmallArray(smallArrayt *self, int64_t index, smallArrayt *array)
smallArrayt * setPAtSmallJsonSmallArrayG(smallArrayt *self, int64_t index, smallJsont *json)
ssize_t binarySearchSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
smallBytest * getAtSmallBytesSmallArrayG(smallArrayt *self, smallBytest *retType UNUSED, int64_t index)
internal smallArrayt * pushSmallStringSmallArray(smallArrayt *self, smallStringt *string)
internal double popDoubleSmallArray(smallArrayt *self)
internal smallArrayt * injectNFreeArraycSmallArray(smallArrayt *self, int64_t index, char **toInject)
internal double popNumSmallArray(smallArrayt *self)
internal smallArrayt * typeSmallStringsSmallArray(smallArrayt *self)
smallArrayt * prependSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
internal smallArrayt * zipCCharSmallArray(smallArrayt *self, smallArrayt *array1, const char **array2)
internal baset * iterStartSmallArray(smallArrayt *self)
smallArrayt * prependSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
internal smallArrayt * pushCArraycSmallArray(smallArrayt *self, const char **array)
#define helpTextSmallArray
help text for this class It is public declaration so that child classes can add their help text easil...
sBytest * sArrayTypes(sArrayt *obj)
list first level of object types in array
internal smallArrayt * pushNFreeSmallContainerSmallArray(smallArrayt *self, smallContainert *container)
ssize_t binarySearchSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
smallArrayt * pushSmallContainerSmallArrayG(smallArrayt *self, smallContainert *container)
internal smallStringt * joinSmallArray(smallArrayt *self, const char *delim)
smallArrayt * pushSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *value)
internal smallArrayt * setAtNFreeDictSmallArray(smallArrayt *self, int64_t index, smallDictt *dict)
void * getAtNDupVoidSmallArrayG(smallArrayt *self, void *retType UNUSED, int64_t index)
ssize_t indexOfSSmallArrayG(smallArrayt *self, const char *string)
#define createAllocateSmallArray(obj)
internal smallJsont * dequeueSmallJsonSmallArray(smallArrayt *self)
smallArrayt * prependNFreeSmallDoubleSmallArrayG(smallArrayt *self, smallDoublet *value)
internal smallArrayt * prependDictSmallArray(smallArrayt *self, smallDictt *dict)
smallArrayt * prependArraycSmallArrayG(smallArrayt *self, char **array)
internal bool icEqualSmallArray(smallArrayt *self, smallArrayt *array)
internal baset * iterStartLastSmallArray(smallArrayt *self)
internal bool hasCharSmallArray(smallArrayt *self, char c)
smallArrayt * setFromCSmallArrayG(smallArrayt *self, const char **array)
bool hasDoubleSmallArrayG(smallArrayt *self, double value)
internal bool areAllETypeSmallArray(smallArrayt *self, const char *type)
#define finishO(obj)
free container only
#define isOSmallArray(obj)
test if obj type is smallArray
smallt * sArrayPopTiny(sArrayt *array)
pop object from array
internal uint32_t cropElemUint32SmallArray(smallArrayt *self, int64_t index)
smallStringt * joinSmallArrayG(smallArrayt *self, const char *delim)
int64_t popIntSmallArrayG(smallArrayt *self, int64_t retType UNUSED)
internal smallArrayt * shiftSmallJsonSmallArray(smallArrayt *self, smallJsont *json)
internal bool isEUndefinedSmallArray(smallArrayt *self, int64_t index)
internal ssize_t binarySearchArraySmallArray(smallArrayt *self, smallArrayt *array)
smallArrayt * delSmallArrayG(smallArrayt *self, int64_t start, int64_t end)
smallArrayt * pushSmallArrayG(smallArrayt *self, baset *value)
ssize_t icBinarySearchSmallStringSmallArrayG(smallArrayt *self, smallStringt *string)
ssize_t binarySearchSmallIntSmallArrayG(smallArrayt *self, smallIntt *value)
#define smashO(obj)
free object and keep data
internal smallArrayt * injectUndefinedSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * setAtBoolSmallArray(smallArrayt *self, int64_t index, bool value)
finishSmallArrayFt finish
bool icEqualSmallArrayCArray(smallArrayt *self, const char **p2)
internal bool writeStreamSmallArray(smallArrayt *self, FILE *fp)
smallDoubleFunctionst * f
internal smallArrayt * prependArraycSmallArray(smallArrayt *self, char **array)
internal ssize_t icIndexOfDictSmallArray(smallArrayt *self, smallDictt *dict)
ssize_t indexOfArraySmallArrayG(smallArrayt *self, smallArrayt *array)
internal bool * getAtBoolPSmallArray(smallArrayt *self, int64_t index)
internal smallArrayt * setAtSmallArray(smallArrayt *self, int64_t index, baset *value)
smallArrayt * shiftSmallJsonSmallArrayG(smallArrayt *self, smallJsont *json)
smallArrayt * appendSmallArrayG(smallArrayt *self, smallArrayt *array)
ssize_t binarySearchDoubleSmallArrayG(smallArrayt *self, double value)
smallBoolt * popSmallBoolSmallArrayG(smallArrayt *self, smallBoolt *retType UNUSED)
internal smallArrayt * prependNFreeSmallArray(smallArrayt *self, baset *value)
smallt * sDuplicate(smallt *o)
duplicate small object
bool hasIntSmallArrayG(smallArrayt *self, int64_t value)
bool icHasSSmallArrayG(smallArrayt *self, const char *string)
internal smallArrayt * setPAtNFreeSmallJsonSmallArray(smallArrayt *self, int64_t index, smallJsont *json)
smallArrayt * pushSSmallArrayG(smallArrayt *self, const char *string)
smallArrayt * zipCArraySmallJsonSmallArrayG(smallArrayt *self, const char **array1, smallJsont *array2)
smallArrayt * injectDoubleSmallArrayG(smallArrayt *self, int64_t index, double value)
internal bool hasSmallArray(smallArrayt *self, baset *value)
smallArrayt * injectSmallBoolSmallArrayG(smallArrayt *self, int64_t index, smallBoolt *value)
void cleanUpSmallArrayFreeLocalG(smallArrayt *val)
internal bool hasDoubleSmallArray(smallArrayt *self, double value)
baset * getAtNDupSmallArrayG(smallArrayt *self, baset *retType UNUSED, int64_t index)
internal ssize_t binarySearchIntSmallArray(smallArrayt *self, int64_t value)
internal smallArrayt * readStreamSmallArray(smallArrayt *self, FILE *fp)
uint32_t popUint32SmallArrayG(smallArrayt *self, uint32_t retType UNUSED)
internal bool isBlankSmallArray(smallArrayt *self)
internal int32_t cropElemInt32SmallArray(smallArrayt *self, int64_t index)
ssize_t indexOfSmallJsonSmallArrayG(smallArrayt *self, smallJsont *string)
#define duplicateO(obj)
create a copy of obj
int32_t * getAtInt32PSmallArrayG(smallArrayt *self, int32_t *retType UNUSED, int64_t index)
#define isOSmallString(obj)
test if obj type is smallString
internal smallArrayt * pushBoolSmallArray(smallArrayt *self, bool value)