libsheepyObject.h (399844B)
1 // MIT License 2 // 3 // Copyright (c) 2026 Remy Noulin 4 // 5 // Permission is hereby granted, free of charge, to any person obtaining a copy 6 // of this software and associated documentation files (the "Software"), to deal 7 // in the Software without restriction, including without limitation the rights 8 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 // copies of the Software, and to permit persons to whom the Software is 10 // furnished to do so, subject to the following conditions: 11 // 12 // The above copyright notice and this permission notice shall be included in all 13 // copies or substantial portions of the Software. 14 // 15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 // SOFTWARE. 22 #pragma once 23 24 /** \file 25 * This file is the API for the classes in libsheepy 26 * 27 * The includes below have the API for each class 28 * 29 * All classes inherit from 'baset' declared below 30 * 31 * The generics helpers make it easier to handle the objects. 32 * 33 * Each class has create and initialize functions that have to called before 34 * using the object. 35 * 36 * libsheepyCClassTemplate is a template for new classes. The base functions in 37 * libsheepyCClassTemplate.c need to be filled with relevant code. 38 * 39 * <b>Generics</b> 40 * 41 * Macros ('abcO' freeO) for functions in the base class. They can be used on all libsheepy objects 42 * 43 * The macros ending with G (abcG) are c11 generics. 44 * 45 * For more information, the documentation is located at http://spartatek.se/libsheepy/ 46 */ 47 48 // indicate that this is libsheepy object 49 #define __libsheepyObject 1 50 51 #include "libsheepy.h" 52 #include "libsheepySmall.h" 53 #include "libsheepyBt.h" 54 #if (!__OpenBSD__) && ! defined(__TINYC__) && (__GNUC__ > 4) 55 #include "stdatomic.h" 56 #endif 57 58 // Libsheepy configuration 59 // check smallObject types in parameters and returns values in the small Classe methods 60 static const bool checkObjectTypes = true; 61 62 // recycleContainers stores the containers in a thread local list when finishO is called 63 // the containers are recycled when initiateAllocate is called after a finishO 64 // 65 // When debugging container leaks, disable recycleContainers to make to easier to the 66 // source of the leak by defining recycleContainers to 0 67 // 68 // 180814 the performance gain is about 14% for a program using the iter iterator 69 // (debian stretch kaby lake linux 4.9, gcc 6.3, glibc 2.24) 70 // 71 // In each class, the finalizeRecycle function frees the unused containers at program 72 // or thread exit 73 // 74 // The unused containers are stored in a list of size recycleContainersAmount in the 75 // thread local storage 76 // 77 // New classes have to register their finalizeRecycle functions with 78 // registerFinalizeRecycleContainersInThreadPool before the program exits 79 // to avoid memory leaks 80 #ifndef recycleContainers 81 #define recycleContainers 1 82 #endif 83 #define recycleContainersAmount 8 84 85 // debug option: stack check in finish functions (for *NFree functions) 86 // adds a check in all *NFree function to figure out if the given object is on stack 87 // if so, the object is not recycled or freed and a warning message is printed 88 // 89 // NFreeStackCheck prevents freeing stack objects 90 // 91 // The check is done by comparing the stack pointer to the object address, when 92 // stack pointer < &object, the object is on stack 93 #if !(__sun__ || __FreeBSD__) 94 #if __amd64__ 95 #define NFreeStackCheck 1 96 #endif 97 #if !__amd64__ 98 #warning "NFreeStackCheck is available on x64/gcc/linux and BSD." 99 #endif 100 #endif 101 // End libsheepy configuration 102 103 // Generics 104 105 /** 106 * initialize object (on stack or on heap) 107 * 108 * Example: 109 * // on stack 110 * smallArrayt array; 111 * initiateG(&array); 112 * // heap 113 * smallArrayt *array; 114 * initiateG(&array); 115 */ 116 #define initiateG(self) _Generic((self), \ 117 smallArrayt*: initiateSmallArray, \ 118 smallBoolt*: initiateSmallBool, \ 119 smallBytest*: initiateSmallBytes, \ 120 smallContainert*: initiateSmallContainer, \ 121 smallDictt*: initiateSmallDict, \ 122 smallDoublet*: initiateSmallDouble, \ 123 smallIntt*: initiateSmallInt, \ 124 smallJsont*: initiateSmallJson, \ 125 smallStringt*: initiateSmallString, \ 126 undefinedt*: initiateUndefined, \ 127 smallArrayt**: initiateAllocateSmallArray, \ 128 smallBoolt**: initiateAllocateSmallBool, \ 129 smallBytest**: initiateAllocateSmallBytes, \ 130 smallContainert**: initiateAllocateSmallContainer, \ 131 smallDictt**: initiateAllocateSmallDict, \ 132 smallDoublet**: initiateAllocateSmallDouble, \ 133 smallIntt**: initiateAllocateSmallInt, \ 134 smallJsont**: initiateAllocateSmallJson, \ 135 smallStringt**: initiateAllocateSmallString, \ 136 undefinedt**: initiateAllocateUndefined \ 137 )(self) 138 139 /** 140 * use rtSmallArrayt and rtSmallDictt for arrays and dictionaries 141 * 142 * note: this generic doesn't support smallBytes 143 * because allocSmallBytes(void *data, uint32_t size) takes 144 * 2 parameters. 145 */ 146 #define allocG(value) _Generic((value), \ 147 smallArrayt*: allocSmallArrayG, \ 148 bool: allocSmallBool, \ 149 void *: allocSmallContainer, \ 150 smallDictt*: allocSmallDictG, \ 151 double: allocSmallDouble, \ 152 int64_t: allocSmallInt, \ 153 int32_t: allocSmallInt, \ 154 uint32_t: allocSmallInt, \ 155 uint64_t: allocSmallInt, \ 156 smallJsont*: allocSmallJsonG, \ 157 char *: allocSmallString, \ 158 const char *: allocSmallString, \ 159 char **: allocArraySmallArray, \ 160 const char **: allocCArraySmallArray, \ 161 btt: allocB, \ 162 const btt: allocB, \ 163 btt*: allocPB, \ 164 const btt*: allocPB \ 165 )(value) 166 167 168 /** 169 * free buffers in obj 170 */ 171 #define freeO(obj) MACRO(\ 172 var p = obj;\ 173 if (p) {\ 174 p->f->free(p);\ 175 }) 176 177 #define freeG(self) _Generic((self), \ 178 smallArrayt*: freeSmallArrayG, \ 179 smallBoolt*: freeSmallBoolG, \ 180 smallBytest*: freeSmallBytesG, \ 181 smallContainert*: freeSmallContainerG, \ 182 smallDictt*: freeSmallDictG, \ 183 smallDoublet*: freeSmallDoubleG, \ 184 smallIntt*: freeSmallIntG, \ 185 smallJsont*: freeSmallJsonG, \ 186 smallStringt*: freeSmallStringG, \ 187 undefinedt*: freeUndefinedG, \ 188 char **: listFreeS,\ 189 default: free\ 190 )(self) 191 192 /** 193 * free many buffers in baset objects 194 */ 195 void freeManyOF(void *paramType, ...); 196 #define freeManyO(paramType, ...) freeManyOF(paramType, __VA_ARGS__, NULL) 197 #define freeManyG freeManyO 198 199 /** 200 * free buffers and obj itself 201 */ 202 #define terminateO(obj) MACRO (\ 203 var p = obj;\ 204 if (p) {\ 205 p->f->terminate(&(obj));\ 206 }) 207 #define terminateG terminateO 208 209 /** 210 * terminate many baset objects 211 */ 212 void terminateManyOF(void *paramType, ...); 213 #define terminateManyO(paramType, ...) terminateManyOF(paramType, __VA_ARGS__, NULL) 214 #define terminateManyG terminateManyO 215 216 /** 217 * test obj type 218 * 219 * className is the class in a string 220 */ 221 #define isOType(obj, className) (obj ? eqS(((baset *) (obj))->type, className) : 0) 222 #define isOTypeG isOType 223 224 /** 225 * test if obj type is smallArray 226 */ 227 #define isOSmallArray(obj) isOType(obj, "smallArray") 228 #define isOSmallArrayG isOSmallArray 229 230 /** 231 * test if obj type is smallBool 232 */ 233 #define isOSmallBool(obj) isOType(obj, "smallBool") 234 #define isOSmallBoolG isOSmallBool 235 236 /** 237 * test if obj type is smallBytes 238 */ 239 #define isOSmallBytes(obj) isOType(obj, "smallBytes") 240 #define isOSmallBytesG isOSmallBytes 241 242 /** 243 * test if obj type is smallContainer 244 */ 245 #define isOSmallContainer(obj) isOType(obj, "smallContainer") 246 #define isOSmallContainerG isOSmallContainer 247 248 /** 249 * test if obj type is smallDictt 250 */ 251 #define isOSmallDict(obj) isOType(obj, "smallDict") 252 #define isOSmallDictG isOSmallDict 253 254 /** 255 * test if obj type is smallDouble 256 */ 257 #define isOSmallDouble(obj) isOType(obj, "smallDouble") 258 #define isOSmallDoubleG isOSmallDouble 259 260 /** 261 * test if obj type is smallInt 262 */ 263 #define isOSmallInt(obj) isOType(obj, "smallInt") 264 #define isOSmallIntG isOSmallInt 265 266 /** 267 * test if obj type is smallJson 268 */ 269 #define isOSmallJson(obj) isOType(obj, "smallJson") 270 #define isOSmallJsonG isOSmallJson 271 272 /** 273 * test if obj type is smallString 274 */ 275 #define isOSmallString(obj) isOType(obj, "smallString") 276 #define isOSmallStringG isOSmallString 277 278 /** 279 * test if obj type is undefined 280 */ 281 #define isOUndefined(obj) isOType(obj, "undefined") 282 #define isOUndefinedG isOUndefined 283 284 285 /** 286 * return obj type in a string 287 */ 288 #define getOType(obj) ((baset *) (obj))->type 289 290 /** 291 * return C type for obj 292 * mostly for debugging 293 */ 294 #define getOTypeG(obj) _Generic(obj, \ 295 baset*: "baset*",\ 296 smallArrayt*: "smallArrayt*", \ 297 smallBoolt*: "smallBoolt*", \ 298 smallBytest*: "smallBytest*", \ 299 smallDictt*: "smallDictt*", \ 300 smallDoublet*: "smallDoublet*", \ 301 smallIntt*: "smallIntt*", \ 302 smallJsont*: "smallJsont*", \ 303 smallStringt*: "smallStringt*", \ 304 smallContainert*: "smallContainert*", \ 305 undefinedt*: "undefinedt*", \ 306 bool: "bool", \ 307 bool*: "bool*", \ 308 double: "double", \ 309 double*: "double*", \ 310 float: "float", \ 311 float*: "float*", \ 312 int64_t: "int64_t", \ 313 int64_t*: "int64_t*", \ 314 int32_t: "int32_t", \ 315 int32_t*: "int32_t*", \ 316 int16_t: "int16_t", \ 317 int16_t*: "int16_t*", \ 318 int8_t: "int8_t", \ 319 int8_t*: "int8_t*", \ 320 uint64_t: "uint64_t", \ 321 uint64_t*: "uint64_t*", \ 322 uint32_t: "uint32_t", \ 323 uint32_t*: "uint32_t*", \ 324 uint16_t: "uint16_t", \ 325 uint16_t*: "uint16_t*", \ 326 uint8_t: "uint8_t", \ 327 uint8_t*: "uint8_t*", \ 328 char: "char", \ 329 char*: "char*", \ 330 const char*: "const char*", \ 331 char**: "char**", \ 332 const char**: "const char**", \ 333 char***: "char***", \ 334 void*: "void*", \ 335 FILE*: "FILE*", \ 336 btt: "btt", \ 337 btt*: "btt*", \ 338 const btt: "const btt", \ 339 const btt*: "const btt*", \ 340 default: NULL \ 341 ) 342 343 /** 344 * convert data in obj to string 345 */ 346 #define toStringO(obj) (obj)->f->toString(obj) 347 348 /** 349 * create a copy of obj 350 */ 351 #define duplicateO(obj) (obj)->f->duplicate(obj) 352 #define duplicateG duplicateO 353 354 /** 355 * free object and keep data 356 */ 357 #define smashO(obj) MACRO(\ 358 var p = obj;\ 359 if (p) {\ 360 p->f->smash(&obj);\ 361 }) 362 #define smashG smashO 363 364 /** 365 * smash many baset objects 366 */ 367 void smashManyOF(void *paramType, ...); 368 #define smashManyO(paramType, ...) smashManyOF(paramType, __VA_ARGS__, NULL) 369 370 /** 371 * free container only 372 */ 373 #define finishO(obj) MACRO(\ 374 var p = obj;\ 375 if (p) {\ 376 p->f->finish(&(obj));\ 377 }) 378 #define finishG finishO 379 380 /** 381 * finish many baset objects 382 */ 383 void finishManyOF(void *paramType, ...); 384 #define finishManyO(paramType, ...) finishManyOF(paramType, __VA_ARGS__, NULL) 385 #define finishManyG finishManyO 386 387 /** 388 * O calls an object method without parameters 389 * O(obj,toString) calls the toString method 390 * in the obj object 391 * The O macro simplies the creation of new classes 392 * inheriting from the base class removing the need 393 * to create macros to access the methods 394 */ 395 #define O(obj, method) (obj)->f->method(obj) 396 397 /** 398 * o calls an object method with parameters 399 * o(obj,stringify,2) calls the stringify method 400 * in the obj smallJson object 401 * The o macro simplies the creation of new classes 402 * inheriting from the base class removing the need 403 * to create macros to access the methods 404 * Note: With GCC, the preprocessor eliminates the comma in 405 * , ## __VA_ARGS__ 406 * if __VA_ARGS__ is empty. (https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html) 407 */ 408 #define o(obj, method, ...) (obj)->f->method(obj, ## __VA_ARGS__) 409 410 /** 411 * iterators 412 * for arrays or dictionaries 413 * 414 * use iterIndex method to get current index 415 * use iterKey method to get current key 416 * 417 * index and step can be negative (python index) 418 * 419 * Example: 420 * iter(array, e) { 421 * logVarG(e); 422 * } 423 */ 424 #define iter(obj, element)\ 425 for (baset *element = (obj)->f->iterStart(obj); element ; element = (obj)->f->iterNext(obj)) 426 427 #define iterLast(obj, element)\ 428 for (baset *element = (obj)->f->iterStartLast(obj); element ; element = (obj)->f->iterNext(obj)) 429 430 #define iterFrom(obj, index, element)\ 431 for (baset *element = (obj)->f->iterStartFrom(obj, index); element ; element = (obj)->f->iterNext(obj)) 432 433 #define iterFromStep(obj, index, step, element)\ 434 for (baset *element = (obj)->f->iterStartFromStep(obj, index, step); element ; element = (obj)->f->iterNext(obj)) 435 436 /** 437 * iterators returning the specified type 438 * type must be either baset*, or small object pointer 439 */ 440 #define iterType(type, obj, element)\ 441 for (type element = (type)(obj)->f->iterStart(obj); element ; element = (type)(obj)->f->iterNext(obj)) 442 443 #define iterTypeLast(type, obj, element)\ 444 for (type element = (type)(obj)->f->iterStartLast(obj); element ; element = (type)(obj)->f->iterNext(obj)) 445 446 #define iterTypeFrom(type, obj, index, element)\ 447 for (type element = (type)(obj)->f->iterStartFrom(obj, index); element ; element = (type)(obj)->f->iterNext(obj)) 448 449 #define iterTypeFromStep(type, obj, index, step, element)\ 450 for (type element = (type)(obj)->f->iterStartFromStep(obj, index, step); element ; element = (type)(obj)->f->iterNext(obj)) 451 452 /** 453 * iterators on dictionary keys 454 * 455 * use iterElement to get the current element 456 */ 457 #define iterK(obj, key)\ 458 for (const char *key = (obj)->f->iterStartKey(obj); key ; key = (obj)->f->iterNextKey(obj)) 459 460 /** 461 * reallocate the container without freeing the sObject inside 462 */ 463 #define rallocG(obj, value) do {\ 464 finishO(obj);\ 465 (obj) = allocG(value);\ 466 } while(0) 467 468 469 /** 470 * get value in smallBool, smallBytes, smallDouble, smallInt, smallString 471 * 472 * use setValG or setFromG to set a value 473 */ 474 #define getValO(self) (self)->f->get(self) 475 #define getValG getValO 476 477 #define setValO setFromO 478 #define setValG setFromG 479 480 /** 481 * get pointer to value in smallBool, smallDouble, smallInt 482 */ 483 #define getPO(self) (self)->f->getP(self) 484 #define getPG getPO 485 486 487 #define setTopO(self, value) (self)->f->setTop(self, value) 488 #define setFromO(self, value) (self)->f->set(self, value) 489 #define setFromG setTopG 490 #define setTopG(self, value) _Generic((self), \ 491 smallArrayt*: _Generic(value, \ 492 char **: setFromSmallArrayG, \ 493 const char **: setFromCSmallArrayG, \ 494 default: setFromSmallArrayG), \ 495 smallBoolt*: _Generic((value), \ 496 bool: setSmallBoolG, \ 497 double: setDoubleSmallBoolG, \ 498 int64_t: setInt64SmallBoolG, \ 499 int32_t: setInt32SmallBoolG, \ 500 uint32_t: setUint32SmallBoolG, \ 501 uint64_t: setUint64SmallBoolG, \ 502 char*: setSSmallBoolG, \ 503 const char*: setSSmallBoolG, \ 504 smallBoolt*: setSmallBoolSmallBoolG, \ 505 smallDoublet*: setSmallDoubleSmallBoolG, \ 506 smallIntt*: setSmallIntSmallBoolG, \ 507 smallJsont*: setSmallJsonSmallBoolG, \ 508 smallStringt*: setSmallStringSmallBoolG, \ 509 default: setSmallBoolG), \ 510 smallContainert*: setSmallContainerG, \ 511 smallDoublet*: _Generic((value), \ 512 bool: setBoolSmallDoubleG, \ 513 double: setSmallDoubleG, \ 514 int64_t: setInt64SmallDoubleG, \ 515 int32_t: setInt32SmallDoubleG, \ 516 uint32_t: setUint32SmallDoubleG, \ 517 uint64_t: setUint64SmallDoubleG, \ 518 char*: setSSmallDoubleG, \ 519 const char*: setSSmallDoubleG, \ 520 smallBoolt*: setSmallBoolSmallDoubleG, \ 521 smallDoublet*: setSmallDoubleSmallDoubleG, \ 522 smallIntt*: setSmallIntSmallDoubleG, \ 523 smallJsont*: setSmallJsonSmallDoubleG,\ 524 smallStringt*: setSmallStringSmallDoubleG, \ 525 default: setBoolSmallDoubleG), \ 526 smallIntt*: _Generic((value), \ 527 bool: setBoolSmallIntG, \ 528 double: setDoubleSmallIntG, \ 529 int64_t: setSmallIntG, \ 530 int32_t: setInt32SmallIntG, \ 531 uint32_t: setUint32SmallIntG, \ 532 uint64_t: setUint64SmallIntG, \ 533 char*: setSSmallIntG, \ 534 const char*: setSSmallIntG, \ 535 smallBoolt*: setSmallBoolSmallIntG, \ 536 smallDoublet*: setSmallDoubleSmallIntG, \ 537 smallIntt*: setSmallIntSmallIntG, \ 538 smallJsont*: setSmallJsonSmallIntG, \ 539 smallStringt*: setSmallStringSmallIntG, \ 540 default: setBoolSmallIntG), \ 541 smallStringt*: _Generic((value), \ 542 bool: setBoolSmallStringG, \ 543 double: setDoubleSmallStringG, \ 544 int64_t: setInt64SmallStringG, \ 545 int32_t: setInt32SmallStringG, \ 546 uint32_t: setUint32SmallStringG, \ 547 uint64_t: setUint64SmallStringG, \ 548 char*: setSmallStringG, \ 549 char: setCharSmallStringG, \ 550 const char*: setSmallStringG, \ 551 smallArrayt*: setSmallArraySmallStringG, \ 552 smallBoolt*: setSmallBoolSmallStringG, \ 553 smallDictt*: setFromSmallDictSmallStringG, \ 554 smallDoublet*: setSmallDoubleSmallStringG, \ 555 smallIntt*: setSmallIntSmallStringG, \ 556 smallJsont*: setSmallJsonSmallStringG, \ 557 smallStringt*: setSmallStringSmallStringG, \ 558 default: setBoolSmallStringG), \ 559 smallJsont*: _Generic((value), \ 560 baset*: setTopSmallJsonG, \ 561 bool: setTopBoolSmallJsonG, \ 562 double: setTopDoubleSmallJsonG, \ 563 int64_t: setTopIntSmallJsonG, \ 564 int32_t: setTopIntSmallJsonG, \ 565 uint64_t: setTopIntSmallJsonG, \ 566 uint32_t: setTopIntSmallJsonG, \ 567 char*: setTopStringSmallJsonG, \ 568 char: setTopCharSmallJsonG, \ 569 const char*: setTopStringSmallJsonG, \ 570 char **: setTopArraycSmallJsonG, \ 571 const char **: setTopCArraycSmallJsonG, \ 572 smallArrayt*: setTopArraySmallJsonG, \ 573 smallBoolt*: setTopSmallBoolSmallJsonG, \ 574 smallDictt*: setTopDictSmallJsonG, \ 575 smallDoublet*: setTopSmallDoubleSmallJsonG, \ 576 smallIntt*: setTopSmallIntSmallJsonG, \ 577 smallJsont*: setTopSmallJsonSmallJsonG, \ 578 smallStringt*: setTopSmallStringSmallJsonG, \ 579 default: setTopSmallJsonG) \ 580 )(self, value) 581 582 583 #define setTopNFreeO(self, value) (self)->f->setTopNFree(self, value) 584 #define setTopNFreeG(self, value) _Generic((self), \ 585 smallJsont*: _Generic((value), \ 586 baset*: setTopNFreeSmallJsonG, \ 587 bool: setTopNFreeBoolSmallJsonG, \ 588 double: setTopNFreeDoubleSmallJsonG, \ 589 int64_t: setTopNFreeIntSmallJsonG, \ 590 char*: setTopNFreeStringSmallJsonG, \ 591 smallDictt*: setTopNFreeDictSmallJsonG, \ 592 smallArrayt*: setTopNFreeArraySmallJsonG, \ 593 char **: setTopNFreeArraycSmallJsonG, \ 594 smallBoolt*: setTopNFreeSmallBoolSmallJsonG, \ 595 smallDoublet*: setTopNFreeSmallDoubleSmallJsonG, \ 596 smallIntt*: setTopNFreeSmallIntSmallJsonG, \ 597 smallJsont*: setTopNFreeSmallJsonSmallJsonG, \ 598 smallStringt*: setTopNFreeSmallStringSmallJsonG) \ 599 )(self, value) 600 601 #define getTopO(self) (self)->f->getTop(self) 602 #define getTopG(self, returnType) _Generic((self), \ 603 smallJsont*: _Generic((returnType), \ 604 baset*: getTopSmallJsonG, \ 605 undefinedt*: getTopUndefinedSmallJsonG, \ 606 bool: getTopBoolSmallJsonG, \ 607 bool*: getTopBoolPSmallJsonG, \ 608 double: getTopDoubleSmallJsonG, \ 609 double*: getTopDoublePSmallJsonG, \ 610 int64_t: getTopIntSmallJsonG, \ 611 int64_t*: getTopIntPSmallJsonG, \ 612 int32_t: getTopInt32SmallJsonG, \ 613 int32_t*: getTopInt32PSmallJsonG, \ 614 uint64_t: getTopUintSmallJsonG, \ 615 uint64_t*: getTopUintPSmallJsonG, \ 616 uint32_t: getTopUint32SmallJsonG, \ 617 uint32_t*: getTopUint32PSmallJsonG, \ 618 char*: getTopSSmallJsonG, \ 619 smallDictt*: getTopDictSmallJsonG, \ 620 smallArrayt*: getTopArraySmallJsonG, \ 621 smallBoolt*: getTopSmallBoolSmallJsonG, \ 622 smallDoublet*: getTopSmallDoubleSmallJsonG, \ 623 smallIntt*: getTopSmallIntSmallJsonG, \ 624 smallStringt*: getTopSmallStringSmallJsonG) \ 625 )(self, returnType) 626 627 /** 628 * Note: some generics support int: type to handle char literals ('0') which have type int 629 */ 630 631 #define pushO(self, value) (self)->f->push(self, value) 632 #define pushG(self, value) _Generic((self), \ 633 smallArrayt*: _Generic((value), \ 634 baset*: pushSmallArrayG, \ 635 bool: pushBoolSmallArrayG, \ 636 double: pushDoubleSmallArrayG, \ 637 int64_t: pushIntSmallArrayG, \ 638 int32_t: pushIntSmallArrayG, \ 639 uint32_t: pushIntSmallArrayG, \ 640 uint64_t: pushIntSmallArrayG, \ 641 char*: pushSSmallArrayG, \ 642 char: pushCharSmallArrayG, \ 643 const char*: pushSSmallArrayG, \ 644 smallDictt*: pushDictSmallArrayG, \ 645 smallArrayt*: pushArraySmallArrayG, \ 646 char**: pushArraycSmallArrayG, \ 647 const char**: pushCArraycSmallArrayG, \ 648 smallBoolt*: pushSmallBoolSmallArrayG, \ 649 smallBytest*: pushSmallBytesSmallArrayG, \ 650 smallDoublet*: pushSmallDoubleSmallArrayG, \ 651 smallIntt*: pushSmallIntSmallArrayG, \ 652 smallJsont*: pushSmallJsonSmallArrayG, \ 653 smallStringt*: pushSmallStringSmallArrayG, \ 654 smallContainert*: pushSmallContainerSmallArrayG, \ 655 undefinedt*: pushUndefinedSmallArrayG, \ 656 default: pushVoidSmallArrayG), \ 657 smallJsont*: _Generic((value), \ 658 baset*: pushSmallJsonG, \ 659 bool: pushBoolSmallJsonG, \ 660 double: pushDoubleSmallJsonG, \ 661 int64_t: pushIntSmallJsonG, \ 662 int32_t: pushIntSmallJsonG, \ 663 uint32_t: pushIntSmallJsonG, \ 664 uint64_t: pushIntSmallJsonG, \ 665 char*: pushSSmallJsonG, \ 666 char: pushCharSmallJsonG, \ 667 const char*: pushSSmallJsonG, \ 668 smallDictt*: pushDictSmallJsonG, \ 669 smallArrayt*: pushArraySmallJsonG, \ 670 char **: pushArraycSmallJsonG, \ 671 const char **: pushCArraycSmallJsonG, \ 672 smallBoolt*: pushSmallBoolSmallJsonG, \ 673 smallBytest*: pushSmallBytesSmallJsonG, \ 674 smallDoublet*: pushSmallDoubleSmallJsonG, \ 675 smallIntt*: pushSmallIntSmallJsonG, \ 676 smallJsont*: pushSmallJsonSmallJsonG, \ 677 smallStringt*: pushSmallStringSmallJsonG, \ 678 smallContainert*: pushSmallContainerSmallJsonG, \ 679 undefinedt*: pushUndefinedSmallJsonG, \ 680 default: pushVoidSmallJsonG), \ 681 smallBytest*: pushSmallBytesG, \ 682 smallStringt*: _Generic((value), \ 683 smallStringt*: appendSmallStringG, \ 684 smallJsont*: appendSmallJsonSmallStringG, \ 685 char *: appendSSmallStringG, \ 686 const char *: appendSSmallStringG, \ 687 char: appendCharSmallStringG, \ 688 int: appendCharSmallStringG, \ 689 default: appendSSmallStringG), \ 690 char **: _Generic(value, \ 691 char *: iAppendS, \ 692 const char *: iAppendS, \ 693 char: iAppendCharS, \ 694 int: iAppendCharS, \ 695 default: iAppendS \ 696 ), \ 697 char ***: _Generic(value, \ 698 char *: listPushS, \ 699 const char *: listPushS, \ 700 char: listPushCharS, \ 701 int: listPushCharS, \ 702 default: listPushS \ 703 ), \ 704 btt: _Generic(value, \ 705 const char *: pushB, \ 706 char *: pushB, \ 707 const btt: pushBB, \ 708 btt: pushBB, \ 709 const btt*: pushBPB, \ 710 btt*: pushBPB, \ 711 default: pushB \ 712 ), \ 713 btt*: _Generic(value, \ 714 const char *: bPushB, \ 715 char *: bPushB, \ 716 const btt: bPushBB, \ 717 btt: bPushBB, \ 718 const btt*: bPushBPB, \ 719 btt*: bPushBPB, \ 720 default: bPushB \ 721 ), \ 722 const btt*: _Generic(value, \ 723 const char *: pushPB, \ 724 char *: pushPB, \ 725 const btt: pushPBB, \ 726 btt: pushPBB, \ 727 const btt*: pushPBPB, \ 728 btt*: pushPBPB, \ 729 default: pushPB) \ 730 )(self, value) 731 732 #define pushNFreeO(self, value) (self)->f->pushNFree(self, value) 733 #define pushNFreeG(self, value) _Generic((self), \ 734 smallArrayt*: _Generic((value), \ 735 baset*: pushNFreeSmallArrayG, \ 736 bool: pushBoolSmallArrayG, \ 737 double: pushDoubleSmallArrayG, \ 738 int64_t: pushIntSmallArrayG, \ 739 int32_t: pushIntSmallArrayG, \ 740 uint32_t: pushIntSmallArrayG, \ 741 uint64_t: pushIntSmallArrayG, \ 742 char*: pushNFreeSSmallArrayG, \ 743 char: pushCharSmallArrayG, \ 744 smallDictt*: pushNFreeDictSmallArrayG, \ 745 smallArrayt*: pushNFreeArraySmallArrayG, \ 746 char**: pushNFreeArraycSmallArrayG, \ 747 smallBoolt*: pushNFreeSmallBoolSmallArrayG, \ 748 smallBytest*: pushNFreeSmallBytesSmallArrayG, \ 749 smallDoublet*: pushNFreeSmallDoubleSmallArrayG, \ 750 smallIntt*: pushNFreeSmallIntSmallArrayG, \ 751 smallJsont*: pushNFreeSmallJsonSmallArrayG, \ 752 smallStringt*: pushNFreeSmallStringSmallArrayG, \ 753 smallContainert*: pushNFreeSmallContainerSmallArrayG, \ 754 undefinedt*: pushNFreeUndefinedSmallArrayG, \ 755 default: pushVoidSmallArrayG), \ 756 smallJsont*: _Generic((value), \ 757 baset*: pushNFreeSmallJsonG, \ 758 bool: pushBoolSmallJsonG, \ 759 double: pushDoubleSmallJsonG, \ 760 int64_t: pushIntSmallJsonG, \ 761 int32_t: pushIntSmallJsonG, \ 762 uint32_t: pushIntSmallJsonG, \ 763 uint64_t: pushIntSmallJsonG, \ 764 char*: pushNFreeSSmallJsonG, \ 765 char: pushCharSmallJsonG, \ 766 smallDictt*: pushNFreeDictSmallJsonG, \ 767 smallArrayt*: pushNFreeArraySmallJsonG, \ 768 char **: pushNFreeArraycSmallJsonG, \ 769 smallBoolt*: pushNFreeSmallBoolSmallJsonG, \ 770 smallBytest*: pushNFreeSmallBytesSmallJsonG, \ 771 smallDoublet*: pushNFreeSmallDoubleSmallJsonG, \ 772 smallIntt*: pushNFreeSmallIntSmallJsonG, \ 773 smallJsont*: pushNFreeSmallJsonSmallJsonG, \ 774 smallStringt*: pushNFreeSmallStringSmallJsonG, \ 775 smallContainert*: pushNFreeSmallContainerSmallJsonG, \ 776 undefinedt*: pushNFreeUndefinedSmallJsonG, \ 777 default: pushVoidSmallJsonG), \ 778 smallBytest*: pushSmallBytesG, \ 779 smallStringt*: _Generic((value), \ 780 smallStringt*: appendNSmashSmallStringG, \ 781 smallJsont*: appendNSmashSmallJsonSmallStringG, \ 782 char *: appendNSmashSSmallStringG, \ 783 char: appendCharSmallStringG, \ 784 int: appendCharSmallStringG, \ 785 default: appendNSmashSSmallStringG), \ 786 char **: _Generic(value, \ 787 char *: iAppendNFreeS, \ 788 char: iAppendCharS, \ 789 int: iAppendCharS, \ 790 default: iAppendNFreeS \ 791 ), \ 792 char ***: _Generic(value, \ 793 char *: iListPushS, \ 794 char: listPushCharS, \ 795 int: listPushCharS, \ 796 default: iListPushS \ 797 ) \ 798 )(self, value) 799 800 #define setO(self, key, value) (self)->f->set(self, key, value) 801 #define setAtO(self, key, value) (self)->f->setAt(self, key, value) 802 #define setG(self, key, value) _Generic((self), \ 803 smallDictt*: _Generic(key, \ 804 char *: _Generic((value), \ 805 baset*: setSmallDictG, \ 806 bool: setBoolSmallDictG, \ 807 double: setDoubleSmallDictG, \ 808 int64_t: setIntSmallDictG, \ 809 int32_t: setIntSmallDictG, \ 810 uint32_t: setIntSmallDictG, \ 811 uint64_t: setIntSmallDictG, \ 812 char*: setSSmallDictG, \ 813 const char*: setSSmallDictG, \ 814 char: setCharSmallDictG, \ 815 smallDictt*: setDictSmallDictG, \ 816 smallArrayt*: setArraySmallDictG, \ 817 char **: setArraycSmallDictG, \ 818 const char **: setCArraycSmallDictG, \ 819 smallBoolt*: setSmallBoolSmallDictG, \ 820 smallBytest*: setSmallBytesSmallDictG, \ 821 smallDoublet*: setSmallDoubleSmallDictG, \ 822 smallIntt*: setSmallIntSmallDictG, \ 823 smallJsont*: setSmallJsonSmallDictG, \ 824 smallStringt*: setSmallStringSmallDictG, \ 825 smallContainert*: setSmallContainerSmallDictG, \ 826 undefinedt*: setUndefinedSmallDictG, \ 827 default: setVoidSmallDictG), \ 828 const char *: _Generic((value), \ 829 baset*: setSmallDictG, \ 830 bool: setBoolSmallDictG, \ 831 double: setDoubleSmallDictG, \ 832 int64_t: setIntSmallDictG, \ 833 int32_t: setIntSmallDictG, \ 834 uint32_t: setIntSmallDictG, \ 835 uint64_t: setIntSmallDictG, \ 836 char*: setSSmallDictG, \ 837 const char*: setSSmallDictG, \ 838 char: setCharSmallDictG, \ 839 smallDictt*: setDictSmallDictG, \ 840 smallArrayt*: setArraySmallDictG, \ 841 char **: setArraycSmallDictG, \ 842 const char **: setCArraycSmallDictG, \ 843 smallBoolt*: setSmallBoolSmallDictG, \ 844 smallBytest*: setSmallBytesSmallDictG, \ 845 smallDoublet*: setSmallDoubleSmallDictG, \ 846 smallIntt*: setSmallIntSmallDictG, \ 847 smallJsont*: setSmallJsonSmallDictG, \ 848 smallStringt*: setSmallStringSmallDictG, \ 849 smallContainert*: setSmallContainerSmallDictG, \ 850 undefinedt*: setUndefinedSmallDictG, \ 851 default: setVoidSmallDictG), \ 852 char: _Generic((value), \ 853 baset*: setKCharSmallDictG, \ 854 bool: setBoolKCharSmallDictG, \ 855 double: setDoubleKCharSmallDictG, \ 856 int64_t: setIntKCharSmallDictG, \ 857 int32_t: setIntKCharSmallDictG, \ 858 uint32_t: setIntKCharSmallDictG, \ 859 uint64_t: setIntKCharSmallDictG, \ 860 char*: setSKCharSmallDictG, \ 861 const char*: setSKCharSmallDictG, \ 862 char: setCharKCharSmallDictG, \ 863 smallDictt*: setDictKCharSmallDictG, \ 864 smallArrayt*: setArrayKCharSmallDictG, \ 865 char **: setArraycKCharSmallDictG, \ 866 const char **: setCArraycKCharSmallDictG, \ 867 smallBoolt*: setSmallBoolKCharSmallDictG, \ 868 smallBytest*: setSmallBytesKCharSmallDictG, \ 869 smallDoublet*: setSmallDoubleKCharSmallDictG, \ 870 smallIntt*: setSmallIntKCharSmallDictG, \ 871 smallJsont*: setSmallJsonKCharSmallDictG, \ 872 smallStringt*: setSmallStringKCharSmallDictG, \ 873 smallContainert*: setSmallContainerKCharSmallDictG, \ 874 undefinedt*: setUndefinedKCharSmallDictG, \ 875 default: setVoidKCharSmallDictG), \ 876 int: _Generic((value), \ 877 baset*: setKCharSmallDictG, \ 878 bool: setBoolKCharSmallDictG, \ 879 double: setDoubleKCharSmallDictG, \ 880 int64_t: setIntKCharSmallDictG, \ 881 int32_t: setIntKCharSmallDictG, \ 882 uint32_t: setIntKCharSmallDictG, \ 883 uint64_t: setIntKCharSmallDictG, \ 884 char*: setSKCharSmallDictG, \ 885 const char*: setSKCharSmallDictG, \ 886 char: setCharKCharSmallDictG, \ 887 smallDictt*: setDictKCharSmallDictG, \ 888 smallArrayt*: setArrayKCharSmallDictG, \ 889 char **: setArraycKCharSmallDictG, \ 890 const char **: setCArraycKCharSmallDictG, \ 891 smallBoolt*: setSmallBoolKCharSmallDictG, \ 892 smallBytest*: setSmallBytesKCharSmallDictG, \ 893 smallDoublet*: setSmallDoubleKCharSmallDictG, \ 894 smallIntt*: setSmallIntKCharSmallDictG, \ 895 smallJsont*: setSmallJsonKCharSmallDictG, \ 896 smallStringt*: setSmallStringKCharSmallDictG, \ 897 smallContainert*: setSmallContainerKCharSmallDictG, \ 898 undefinedt*: setUndefinedKCharSmallDictG, \ 899 default: setVoidKCharSmallDictG), \ 900 default: setVoidSmallDictG \ 901 ), \ 902 smallArrayt*: _Generic((value), \ 903 baset*: setAtSmallArrayG, \ 904 bool: setAtBoolSmallArrayG, \ 905 double: setAtDoubleSmallArrayG, \ 906 int64_t: setAtIntSmallArrayG, \ 907 int32_t: setAtIntSmallArrayG, \ 908 uint32_t: setAtIntSmallArrayG, \ 909 uint64_t: setAtIntSmallArrayG, \ 910 char*: setAtSSmallArrayG, \ 911 char: setAtCharSmallArrayG, \ 912 const char*: setAtSSmallArrayG, \ 913 smallDictt*: setAtDictSmallArrayG, \ 914 smallArrayt*: setAtArraySmallArrayG, \ 915 char **: setAtArraycSmallArrayG, \ 916 const char **: setAtCArraycSmallArrayG, \ 917 smallBoolt*: setAtSmallBoolSmallArrayG, \ 918 smallBytest*: setAtSmallBytesSmallArrayG, \ 919 smallDoublet*: setAtSmallDoubleSmallArrayG, \ 920 smallIntt*: setAtSmallIntSmallArrayG, \ 921 smallJsont*: setAtSmallJsonSmallArrayG, \ 922 smallStringt*: setAtSmallStringSmallArrayG, \ 923 smallContainert*: setAtSmallContainerSmallArrayG, \ 924 undefinedt*: setAtUndefinedSmallArrayG, \ 925 default: setAtVoidSmallArrayG), \ 926 smallBytest*: setSmallBytesG,\ 927 smallJsont*: _Generic(key, \ 928 char *: _Generic((value), \ 929 baset*: setSmallJsonG, \ 930 bool: setBoolSmallJsonG, \ 931 double: setDoubleSmallJsonG, \ 932 int64_t: setIntSmallJsonG, \ 933 int32_t: setIntSmallJsonG, \ 934 uint32_t: setIntSmallJsonG, \ 935 uint64_t: setIntSmallJsonG, \ 936 char*: setSSmallJsonG, \ 937 const char*: setSSmallJsonG, \ 938 char: setCharSmallJsonG, \ 939 smallDictt*: setDictSmallJsonG, \ 940 smallArrayt*: setArraySmallJsonG, \ 941 char **: setArraycSmallJsonG, \ 942 const char **: setCArraycSmallJsonG, \ 943 smallBoolt*: setSmallBoolSmallJsonG, \ 944 smallBytest*: setSmallBytesSmallJsonG, \ 945 smallDoublet*: setSmallDoubleSmallJsonG, \ 946 smallIntt*: setSmallIntSmallJsonG, \ 947 smallJsont*: setSmallJsonSmallJsonG, \ 948 smallStringt*: setSmallStringSmallJsonG, \ 949 smallContainert*: setSmallContainerSmallJsonG, \ 950 undefinedt*: setUndefinedSmallJsonG, \ 951 default: setVoidSmallJsonG), \ 952 const char *: _Generic((value), \ 953 baset*: setSmallJsonG, \ 954 bool: setBoolSmallJsonG, \ 955 double: setDoubleSmallJsonG, \ 956 int64_t: setIntSmallJsonG, \ 957 int32_t: setIntSmallJsonG, \ 958 uint32_t: setIntSmallJsonG, \ 959 uint64_t: setIntSmallJsonG, \ 960 char*: setSSmallJsonG, \ 961 const char*: setSSmallJsonG, \ 962 char: setCharSmallJsonG, \ 963 smallDictt*: setDictSmallJsonG, \ 964 smallArrayt*: setArraySmallJsonG, \ 965 char **: setArraycSmallJsonG, \ 966 const char **: setCArraycSmallJsonG, \ 967 smallBoolt*: setSmallBoolSmallJsonG, \ 968 smallBytest*: setSmallBytesSmallJsonG, \ 969 smallDoublet*: setSmallDoubleSmallJsonG, \ 970 smallIntt*: setSmallIntSmallJsonG, \ 971 smallJsont*: setSmallJsonSmallJsonG, \ 972 smallStringt*: setSmallStringSmallJsonG, \ 973 smallContainert*: setSmallContainerSmallJsonG, \ 974 undefinedt*: setUndefinedSmallJsonG, \ 975 default: setVoidSmallJsonG), \ 976 int64_t: _Generic((value), \ 977 baset*: setAtSmallJsonG, \ 978 bool: setAtBoolSmallJsonG, \ 979 double: setAtDoubleSmallJsonG, \ 980 int64_t: setAtIntSmallJsonG, \ 981 int32_t: setAtIntSmallJsonG, \ 982 uint32_t: setAtIntSmallJsonG, \ 983 uint64_t: setAtIntSmallJsonG, \ 984 char*: setAtSSmallJsonG, \ 985 const char*: setAtSSmallJsonG, \ 986 char: setAtCharSmallJsonG, \ 987 smallDictt*: setAtDictSmallJsonG, \ 988 smallArrayt*: setAtArraySmallJsonG, \ 989 char **: setAtArraycSmallJsonG, \ 990 const char **: setAtCArraycSmallJsonG, \ 991 smallBoolt*: setAtSmallBoolSmallJsonG, \ 992 smallBytest*: setAtSmallBytesSmallJsonG, \ 993 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 994 smallIntt*: setAtSmallIntSmallJsonG, \ 995 smallJsont*: setAtSmallJsonSmallJsonG, \ 996 smallStringt*: setAtSmallStringSmallJsonG, \ 997 smallContainert*: setAtSmallContainerSmallJsonG, \ 998 undefinedt*: setAtUndefinedSmallJsonG, \ 999 default: setAtVoidSmallJsonG), \ 1000 int32_t: _Generic((value), \ 1001 baset*: setAtSmallJsonG, \ 1002 bool: setAtBoolSmallJsonG, \ 1003 double: setAtDoubleSmallJsonG, \ 1004 int64_t: setAtIntSmallJsonG, \ 1005 int32_t: setAtIntSmallJsonG, \ 1006 uint32_t: setAtIntSmallJsonG, \ 1007 uint64_t: setAtIntSmallJsonG, \ 1008 char*: setAtSSmallJsonG, \ 1009 const char*: setAtSSmallJsonG, \ 1010 char: setAtCharSmallJsonG, \ 1011 smallDictt*: setAtDictSmallJsonG, \ 1012 smallArrayt*: setAtArraySmallJsonG, \ 1013 char **: setAtArraycSmallJsonG, \ 1014 const char **: setAtCArraycSmallJsonG, \ 1015 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1016 smallBytest*: setAtSmallBytesSmallJsonG, \ 1017 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1018 smallIntt*: setAtSmallIntSmallJsonG, \ 1019 smallJsont*: setAtSmallJsonSmallJsonG, \ 1020 smallStringt*: setAtSmallStringSmallJsonG, \ 1021 smallContainert*: setAtSmallContainerSmallJsonG, \ 1022 undefinedt*: setAtUndefinedSmallJsonG, \ 1023 default: setAtVoidSmallJsonG), \ 1024 int16_t: _Generic((value), \ 1025 baset*: setAtSmallJsonG, \ 1026 bool: setAtBoolSmallJsonG, \ 1027 double: setAtDoubleSmallJsonG, \ 1028 int64_t: setAtIntSmallJsonG, \ 1029 int32_t: setAtIntSmallJsonG, \ 1030 uint32_t: setAtIntSmallJsonG, \ 1031 uint64_t: setAtIntSmallJsonG, \ 1032 char*: setAtSSmallJsonG, \ 1033 const char*: setAtSSmallJsonG, \ 1034 char: setAtCharSmallJsonG, \ 1035 smallDictt*: setAtDictSmallJsonG, \ 1036 smallArrayt*: setAtArraySmallJsonG, \ 1037 char **: setAtArraycSmallJsonG, \ 1038 const char **: setAtCArraycSmallJsonG, \ 1039 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1040 smallBytest*: setAtSmallBytesSmallJsonG, \ 1041 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1042 smallIntt*: setAtSmallIntSmallJsonG, \ 1043 smallJsont*: setAtSmallJsonSmallJsonG, \ 1044 smallStringt*: setAtSmallStringSmallJsonG, \ 1045 smallContainert*: setAtSmallContainerSmallJsonG, \ 1046 undefinedt*: setAtUndefinedSmallJsonG, \ 1047 default: setAtVoidSmallJsonG), \ 1048 int8_t: _Generic((value), \ 1049 baset*: setAtSmallJsonG, \ 1050 bool: setAtBoolSmallJsonG, \ 1051 double: setAtDoubleSmallJsonG, \ 1052 int64_t: setAtIntSmallJsonG, \ 1053 int32_t: setAtIntSmallJsonG, \ 1054 uint32_t: setAtIntSmallJsonG, \ 1055 uint64_t: setAtIntSmallJsonG, \ 1056 char*: setAtSSmallJsonG, \ 1057 const char*: setAtSSmallJsonG, \ 1058 char: setAtCharSmallJsonG, \ 1059 smallDictt*: setAtDictSmallJsonG, \ 1060 smallArrayt*: setAtArraySmallJsonG, \ 1061 char **: setAtArraycSmallJsonG, \ 1062 const char **: setAtCArraycSmallJsonG, \ 1063 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1064 smallBytest*: setAtSmallBytesSmallJsonG, \ 1065 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1066 smallIntt*: setAtSmallIntSmallJsonG, \ 1067 smallJsont*: setAtSmallJsonSmallJsonG, \ 1068 smallStringt*: setAtSmallStringSmallJsonG, \ 1069 smallContainert*: setAtSmallContainerSmallJsonG, \ 1070 undefinedt*: setAtUndefinedSmallJsonG, \ 1071 default: setAtVoidSmallJsonG), \ 1072 char: _Generic((value), \ 1073 baset*: setAtSmallJsonG, \ 1074 bool: setAtBoolSmallJsonG, \ 1075 double: setAtDoubleSmallJsonG, \ 1076 int64_t: setAtIntSmallJsonG, \ 1077 int32_t: setAtIntSmallJsonG, \ 1078 uint32_t: setAtIntSmallJsonG, \ 1079 uint64_t: setAtIntSmallJsonG, \ 1080 char*: setAtSSmallJsonG, \ 1081 const char*: setAtSSmallJsonG, \ 1082 char: setAtCharSmallJsonG, \ 1083 smallDictt*: setAtDictSmallJsonG, \ 1084 smallArrayt*: setAtArraySmallJsonG, \ 1085 char **: setAtArraycSmallJsonG, \ 1086 const char **: setAtCArraycSmallJsonG, \ 1087 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1088 smallBytest*: setAtSmallBytesSmallJsonG, \ 1089 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1090 smallIntt*: setAtSmallIntSmallJsonG, \ 1091 smallJsont*: setAtSmallJsonSmallJsonG, \ 1092 smallStringt*: setAtSmallStringSmallJsonG, \ 1093 smallContainert*: setAtSmallContainerSmallJsonG, \ 1094 undefinedt*: setAtUndefinedSmallJsonG, \ 1095 default: setAtVoidSmallJsonG), \ 1096 uint64_t: _Generic((value), \ 1097 baset*: setAtSmallJsonG, \ 1098 bool: setAtBoolSmallJsonG, \ 1099 double: setAtDoubleSmallJsonG, \ 1100 int64_t: setAtIntSmallJsonG, \ 1101 int32_t: setAtIntSmallJsonG, \ 1102 uint32_t: setAtIntSmallJsonG, \ 1103 uint64_t: setAtIntSmallJsonG, \ 1104 char*: setAtSSmallJsonG, \ 1105 const char*: setAtSSmallJsonG, \ 1106 char: setAtCharSmallJsonG, \ 1107 smallDictt*: setAtDictSmallJsonG, \ 1108 smallArrayt*: setAtArraySmallJsonG, \ 1109 char **: setAtArraycSmallJsonG, \ 1110 const char **: setAtCArraycSmallJsonG, \ 1111 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1112 smallBytest*: setAtSmallBytesSmallJsonG, \ 1113 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1114 smallIntt*: setAtSmallIntSmallJsonG, \ 1115 smallJsont*: setAtSmallJsonSmallJsonG, \ 1116 smallStringt*: setAtSmallStringSmallJsonG, \ 1117 smallContainert*: setAtSmallContainerSmallJsonG, \ 1118 undefinedt*: setAtUndefinedSmallJsonG, \ 1119 default: setAtVoidSmallJsonG), \ 1120 uint32_t: _Generic((value), \ 1121 baset*: setAtSmallJsonG, \ 1122 bool: setAtBoolSmallJsonG, \ 1123 double: setAtDoubleSmallJsonG, \ 1124 int64_t: setAtIntSmallJsonG, \ 1125 int32_t: setAtIntSmallJsonG, \ 1126 uint32_t: setAtIntSmallJsonG, \ 1127 uint64_t: setAtIntSmallJsonG, \ 1128 char*: setAtSSmallJsonG, \ 1129 const char*: setAtSSmallJsonG, \ 1130 char: setAtCharSmallJsonG, \ 1131 smallDictt*: setAtDictSmallJsonG, \ 1132 smallArrayt*: setAtArraySmallJsonG, \ 1133 char **: setAtArraycSmallJsonG, \ 1134 const char **: setAtCArraycSmallJsonG, \ 1135 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1136 smallBytest*: setAtSmallBytesSmallJsonG, \ 1137 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1138 smallIntt*: setAtSmallIntSmallJsonG, \ 1139 smallJsont*: setAtSmallJsonSmallJsonG, \ 1140 smallStringt*: setAtSmallStringSmallJsonG, \ 1141 smallContainert*: setAtSmallContainerSmallJsonG, \ 1142 undefinedt*: setAtUndefinedSmallJsonG, \ 1143 default: setAtVoidSmallJsonG), \ 1144 uint16_t: _Generic((value), \ 1145 baset*: setAtSmallJsonG, \ 1146 bool: setAtBoolSmallJsonG, \ 1147 double: setAtDoubleSmallJsonG, \ 1148 int64_t: setAtIntSmallJsonG, \ 1149 int32_t: setAtIntSmallJsonG, \ 1150 uint32_t: setAtIntSmallJsonG, \ 1151 uint64_t: setAtIntSmallJsonG, \ 1152 char*: setAtSSmallJsonG, \ 1153 const char*: setAtSSmallJsonG, \ 1154 char: setAtCharSmallJsonG, \ 1155 smallDictt*: setAtDictSmallJsonG, \ 1156 smallArrayt*: setAtArraySmallJsonG, \ 1157 char **: setAtArraycSmallJsonG, \ 1158 const char **: setAtCArraycSmallJsonG, \ 1159 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1160 smallBytest*: setAtSmallBytesSmallJsonG, \ 1161 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1162 smallIntt*: setAtSmallIntSmallJsonG, \ 1163 smallJsont*: setAtSmallJsonSmallJsonG, \ 1164 smallStringt*: setAtSmallStringSmallJsonG, \ 1165 smallContainert*: setAtSmallContainerSmallJsonG, \ 1166 undefinedt*: setAtUndefinedSmallJsonG, \ 1167 default: setAtVoidSmallJsonG), \ 1168 uint8_t: _Generic((value), \ 1169 baset*: setAtSmallJsonG, \ 1170 bool: setAtBoolSmallJsonG, \ 1171 double: setAtDoubleSmallJsonG, \ 1172 int64_t: setAtIntSmallJsonG, \ 1173 int32_t: setAtIntSmallJsonG, \ 1174 uint32_t: setAtIntSmallJsonG, \ 1175 uint64_t: setAtIntSmallJsonG, \ 1176 char*: setAtSSmallJsonG, \ 1177 const char*: setAtSSmallJsonG, \ 1178 char: setAtCharSmallJsonG, \ 1179 smallDictt*: setAtDictSmallJsonG, \ 1180 smallArrayt*: setAtArraySmallJsonG, \ 1181 char **: setAtArraycSmallJsonG, \ 1182 const char **: setAtCArraycSmallJsonG, \ 1183 smallBoolt*: setAtSmallBoolSmallJsonG, \ 1184 smallBytest*: setAtSmallBytesSmallJsonG, \ 1185 smallDoublet*: setAtSmallDoubleSmallJsonG, \ 1186 smallIntt*: setAtSmallIntSmallJsonG, \ 1187 smallJsont*: setAtSmallJsonSmallJsonG, \ 1188 smallStringt*: setAtSmallStringSmallJsonG, \ 1189 smallContainert*: setAtSmallContainerSmallJsonG, \ 1190 undefinedt*: setAtUndefinedSmallJsonG, \ 1191 default: setAtVoidSmallJsonG), \ 1192 default: setVoidSmallJsonG \ 1193 ), \ 1194 smallStringt*: setAtSmallStringG, \ 1195 char *: setS, \ 1196 char **: _Generic(value, \ 1197 char *: iListSetS,\ 1198 char: listSetCharS,\ 1199 int: listSetCharS,\ 1200 default: iListSetS \ 1201 ) \ 1202 )(self, key, value) 1203 1204 #define setIntO(self, key, value) (self)->f->setInt(self, key, value) 1205 1206 #define setNFreeO(self, key, value) (self)->f->setNFree(self, key, value) 1207 #define setAtNFreeO(self, key, value) (self)->f->setAtNFree(self, key, value) 1208 #define setNFreeG(self, key, value) _Generic((self), \ 1209 smallDictt*: _Generic(key, \ 1210 char*: _Generic((value), \ 1211 baset*: setNFreeSmallDictG, \ 1212 bool: setBoolSmallDictG, \ 1213 double: setDoubleSmallDictG, \ 1214 int64_t: setIntSmallDictG, \ 1215 int32_t: setIntSmallDictG, \ 1216 uint32_t: setIntSmallDictG, \ 1217 uint64_t: setIntSmallDictG, \ 1218 char*: setNFreeSSmallDictG, \ 1219 smallDictt*: setNFreeDictSmallDictG, \ 1220 smallArrayt*: setNFreeArraySmallDictG, \ 1221 char **: setNFreeArraycSmallDictG, \ 1222 smallBoolt*: setNFreeSmallBoolSmallDictG, \ 1223 smallBytest*: setNFreeSmallBytesSmallDictG, \ 1224 smallDoublet*: setNFreeSmallDoubleSmallDictG, \ 1225 smallIntt*: setNFreeSmallIntSmallDictG, \ 1226 smallJsont*: setNFreeSmallJsonSmallDictG, \ 1227 smallStringt*: setNFreeSmallStringSmallDictG, \ 1228 smallContainert*: setNFreeSmallContainerSmallDictG, \ 1229 undefinedt*: setNFreeUndefinedSmallDictG, \ 1230 default: setVoidSmallDictG), \ 1231 const char*: _Generic((value), \ 1232 baset*: setNFreeSmallDictG, \ 1233 bool: setBoolSmallDictG, \ 1234 double: setDoubleSmallDictG, \ 1235 int64_t: setIntSmallDictG, \ 1236 int32_t: setIntSmallDictG, \ 1237 uint32_t: setIntSmallDictG, \ 1238 uint64_t: setIntSmallDictG, \ 1239 char*: setNFreeSSmallDictG, \ 1240 smallDictt*: setNFreeDictSmallDictG, \ 1241 smallArrayt*: setNFreeArraySmallDictG, \ 1242 char **: setNFreeArraycSmallDictG, \ 1243 smallBoolt*: setNFreeSmallBoolSmallDictG, \ 1244 smallBytest*: setNFreeSmallBytesSmallDictG, \ 1245 smallDoublet*: setNFreeSmallDoubleSmallDictG, \ 1246 smallIntt*: setNFreeSmallIntSmallDictG, \ 1247 smallJsont*: setNFreeSmallJsonSmallDictG, \ 1248 smallStringt*: setNFreeSmallStringSmallDictG, \ 1249 smallContainert*: setNFreeSmallContainerSmallDictG, \ 1250 undefinedt*: setNFreeUndefinedSmallDictG, \ 1251 default: setVoidSmallDictG), \ 1252 char: _Generic((value), \ 1253 baset*: setNFreeKCharSmallDictG, \ 1254 bool: setBoolKCharSmallDictG, \ 1255 double: setDoubleKCharSmallDictG, \ 1256 int64_t: setIntKCharSmallDictG, \ 1257 int32_t: setIntKCharSmallDictG, \ 1258 uint32_t: setIntKCharSmallDictG, \ 1259 uint64_t: setIntKCharSmallDictG, \ 1260 char*: setNFreeSKCharSmallDictG, \ 1261 smallDictt*: setNFreeDictKCharSmallDictG, \ 1262 smallArrayt*: setNFreeArrayKCharSmallDictG, \ 1263 char **: setNFreeArraycKCharSmallDictG, \ 1264 smallBoolt*: setNFreeSmallBoolKCharSmallDictG, \ 1265 smallBytest*: setNFreeSmallBytesKCharSmallDictG, \ 1266 smallDoublet*: setNFreeSmallDoubleKCharSmallDictG, \ 1267 smallIntt*: setNFreeSmallIntKCharSmallDictG, \ 1268 smallJsont*: setNFreeSmallJsonKCharSmallDictG, \ 1269 smallStringt*: setNFreeSmallStringKCharSmallDictG, \ 1270 smallContainert*: setNFreeSmallContainerKCharSmallDictG, \ 1271 undefinedt*: setNFreeUndefinedKCharSmallDictG, \ 1272 default: setVoidKCharSmallDictG), \ 1273 int: _Generic((value), \ 1274 baset*: setNFreeKCharSmallDictG, \ 1275 bool: setBoolKCharSmallDictG, \ 1276 double: setDoubleKCharSmallDictG, \ 1277 int64_t: setIntKCharSmallDictG, \ 1278 int32_t: setIntKCharSmallDictG, \ 1279 uint32_t: setIntKCharSmallDictG, \ 1280 uint64_t: setIntKCharSmallDictG, \ 1281 char*: setNFreeSKCharSmallDictG, \ 1282 smallDictt*: setNFreeDictKCharSmallDictG, \ 1283 smallArrayt*: setNFreeArrayKCharSmallDictG, \ 1284 char **: setNFreeArraycKCharSmallDictG, \ 1285 smallBoolt*: setNFreeSmallBoolKCharSmallDictG, \ 1286 smallBytest*: setNFreeSmallBytesKCharSmallDictG, \ 1287 smallDoublet*: setNFreeSmallDoubleKCharSmallDictG, \ 1288 smallIntt*: setNFreeSmallIntKCharSmallDictG, \ 1289 smallJsont*: setNFreeSmallJsonKCharSmallDictG, \ 1290 smallStringt*: setNFreeSmallStringKCharSmallDictG, \ 1291 smallContainert*: setNFreeSmallContainerKCharSmallDictG, \ 1292 undefinedt*: setNFreeUndefinedKCharSmallDictG, \ 1293 default: setVoidKCharSmallDictG), \ 1294 default: setVoidSmallDictG \ 1295 ), \ 1296 smallArrayt*: _Generic((value), \ 1297 baset*: setAtNFreeSmallArrayG, \ 1298 bool: setAtBoolSmallArrayG, \ 1299 double: setAtDoubleSmallArrayG, \ 1300 int64_t: setAtIntSmallArrayG, \ 1301 int32_t: setAtIntSmallArrayG, \ 1302 uint32_t: setAtIntSmallArrayG, \ 1303 uint64_t: setAtIntSmallArrayG, \ 1304 char*: setAtNFreeSSmallArrayG, \ 1305 smallDictt*: setAtNFreeDictSmallArrayG, \ 1306 smallArrayt*: setAtNFreeArraySmallArrayG, \ 1307 char **: setAtNFreeArraycSmallArrayG, \ 1308 smallBoolt*: setAtNFreeSmallBoolSmallArrayG, \ 1309 smallBytest*: setAtNFreeSmallBytesSmallArrayG, \ 1310 smallDoublet*: setAtNFreeSmallDoubleSmallArrayG, \ 1311 smallIntt*: setAtNFreeSmallIntSmallArrayG, \ 1312 smallJsont*: setAtNFreeSmallJsonSmallArrayG, \ 1313 smallStringt*: setAtNFreeSmallStringSmallArrayG, \ 1314 smallContainert*: setAtNFreeSmallContainerSmallArrayG, \ 1315 undefinedt*: setAtNFreeUndefinedSmallArrayG, \ 1316 default: setAtVoidSmallArrayG), \ 1317 smallJsont*: _Generic(key, \ 1318 char *: _Generic((value), \ 1319 baset*: setNFreeSmallJsonG, \ 1320 bool: setBoolSmallJsonG, \ 1321 double: setDoubleSmallJsonG, \ 1322 int64_t: setIntSmallJsonG, \ 1323 int32_t: setIntSmallJsonG, \ 1324 uint32_t: setIntSmallJsonG, \ 1325 uint64_t: setIntSmallJsonG, \ 1326 char*: setNFreeSSmallJsonG, \ 1327 smallDictt*: setNFreeDictSmallJsonG, \ 1328 smallArrayt*: setNFreeArraySmallJsonG, \ 1329 char **: setNFreeArraycSmallJsonG, \ 1330 smallBoolt*: setNFreeSmallBoolSmallJsonG, \ 1331 smallBytest*: setNFreeSmallBytesSmallJsonG, \ 1332 smallDoublet*: setNFreeSmallDoubleSmallJsonG, \ 1333 smallIntt*: setNFreeSmallIntSmallJsonG, \ 1334 smallJsont*: setNFreeSmallJsonSmallJsonG, \ 1335 smallStringt*: setNFreeSmallStringSmallJsonG, \ 1336 smallContainert*: setNFreeSmallContainerSmallJsonG, \ 1337 undefinedt*: setNFreeUndefinedSmallJsonG, \ 1338 default: setVoidSmallJsonG), \ 1339 const char *: _Generic((value), \ 1340 baset*: setNFreeSmallJsonG, \ 1341 bool: setBoolSmallJsonG, \ 1342 double: setDoubleSmallJsonG, \ 1343 int64_t: setIntSmallJsonG, \ 1344 int32_t: setIntSmallJsonG, \ 1345 uint32_t: setIntSmallJsonG, \ 1346 uint64_t: setIntSmallJsonG, \ 1347 char*: setNFreeSSmallJsonG, \ 1348 smallDictt*: setNFreeDictSmallJsonG, \ 1349 smallArrayt*: setNFreeArraySmallJsonG, \ 1350 char **: setNFreeArraycSmallJsonG, \ 1351 smallBoolt*: setNFreeSmallBoolSmallJsonG, \ 1352 smallBytest*: setNFreeSmallBytesSmallJsonG, \ 1353 smallDoublet*: setNFreeSmallDoubleSmallJsonG, \ 1354 smallIntt*: setNFreeSmallIntSmallJsonG, \ 1355 smallJsont*: setNFreeSmallJsonSmallJsonG, \ 1356 smallStringt*: setNFreeSmallStringSmallJsonG, \ 1357 smallContainert*: setNFreeSmallContainerSmallJsonG, \ 1358 undefinedt*: setNFreeUndefinedSmallJsonG, \ 1359 default: setVoidSmallJsonG), \ 1360 int64_t: _Generic((value), \ 1361 baset*: setAtNFreeSmallJsonG, \ 1362 bool: setAtBoolSmallJsonG, \ 1363 double: setAtDoubleSmallJsonG, \ 1364 int64_t: setAtIntSmallJsonG, \ 1365 int32_t: setAtIntSmallJsonG, \ 1366 uint32_t: setAtIntSmallJsonG, \ 1367 uint64_t: setAtIntSmallJsonG, \ 1368 char*: setAtNFreeSSmallJsonG, \ 1369 smallDictt*: setAtNFreeDictSmallJsonG, \ 1370 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1371 char **: setAtNFreeArraycSmallJsonG, \ 1372 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1373 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1374 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1375 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1376 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1377 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1378 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1379 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1380 default: setAtVoidSmallJsonG), \ 1381 int32_t: _Generic((value), \ 1382 baset*: setAtNFreeSmallJsonG, \ 1383 bool: setAtBoolSmallJsonG, \ 1384 double: setAtDoubleSmallJsonG, \ 1385 int64_t: setAtIntSmallJsonG, \ 1386 int32_t: setAtIntSmallJsonG, \ 1387 uint32_t: setAtIntSmallJsonG, \ 1388 uint64_t: setAtIntSmallJsonG, \ 1389 char*: setAtNFreeSSmallJsonG, \ 1390 smallDictt*: setAtNFreeDictSmallJsonG, \ 1391 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1392 char **: setAtNFreeArraycSmallJsonG, \ 1393 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1394 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1395 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1396 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1397 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1398 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1399 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1400 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1401 default: setAtVoidSmallJsonG), \ 1402 int16_t: _Generic((value), \ 1403 baset*: setAtNFreeSmallJsonG, \ 1404 bool: setAtBoolSmallJsonG, \ 1405 double: setAtDoubleSmallJsonG, \ 1406 int64_t: setAtIntSmallJsonG, \ 1407 int32_t: setAtIntSmallJsonG, \ 1408 uint32_t: setAtIntSmallJsonG, \ 1409 uint64_t: setAtIntSmallJsonG, \ 1410 char*: setAtNFreeSSmallJsonG, \ 1411 smallDictt*: setAtNFreeDictSmallJsonG, \ 1412 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1413 char **: setAtNFreeArraycSmallJsonG, \ 1414 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1415 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1416 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1417 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1418 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1419 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1420 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1421 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1422 default: setAtVoidSmallJsonG), \ 1423 int8_t: _Generic((value), \ 1424 baset*: setAtNFreeSmallJsonG, \ 1425 bool: setAtBoolSmallJsonG, \ 1426 double: setAtDoubleSmallJsonG, \ 1427 int64_t: setAtIntSmallJsonG, \ 1428 int32_t: setAtIntSmallJsonG, \ 1429 uint32_t: setAtIntSmallJsonG, \ 1430 uint64_t: setAtIntSmallJsonG, \ 1431 char*: setAtNFreeSSmallJsonG, \ 1432 smallDictt*: setAtNFreeDictSmallJsonG, \ 1433 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1434 char **: setAtNFreeArraycSmallJsonG, \ 1435 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1436 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1437 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1438 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1439 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1440 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1441 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1442 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1443 default: setAtVoidSmallJsonG), \ 1444 char: _Generic((value), \ 1445 baset*: setAtNFreeSmallJsonG, \ 1446 bool: setAtBoolSmallJsonG, \ 1447 double: setAtDoubleSmallJsonG, \ 1448 int64_t: setAtIntSmallJsonG, \ 1449 int32_t: setAtIntSmallJsonG, \ 1450 uint32_t: setAtIntSmallJsonG, \ 1451 uint64_t: setAtIntSmallJsonG, \ 1452 char*: setAtNFreeSSmallJsonG, \ 1453 smallDictt*: setAtNFreeDictSmallJsonG, \ 1454 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1455 char **: setAtNFreeArraycSmallJsonG, \ 1456 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1457 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1458 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1459 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1460 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1461 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1462 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1463 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1464 default: setAtVoidSmallJsonG), \ 1465 uint64_t: _Generic((value), \ 1466 baset*: setAtNFreeSmallJsonG, \ 1467 bool: setAtBoolSmallJsonG, \ 1468 double: setAtDoubleSmallJsonG, \ 1469 int64_t: setAtIntSmallJsonG, \ 1470 int32_t: setAtIntSmallJsonG, \ 1471 uint32_t: setAtIntSmallJsonG, \ 1472 uint64_t: setAtIntSmallJsonG, \ 1473 char*: setAtNFreeSSmallJsonG, \ 1474 smallDictt*: setAtNFreeDictSmallJsonG, \ 1475 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1476 char **: setAtNFreeArraycSmallJsonG, \ 1477 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1478 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1479 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1480 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1481 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1482 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1483 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1484 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1485 default: setAtVoidSmallJsonG), \ 1486 uint32_t: _Generic((value), \ 1487 baset*: setAtNFreeSmallJsonG, \ 1488 bool: setAtBoolSmallJsonG, \ 1489 double: setAtDoubleSmallJsonG, \ 1490 int64_t: setAtIntSmallJsonG, \ 1491 int32_t: setAtIntSmallJsonG, \ 1492 uint32_t: setAtIntSmallJsonG, \ 1493 uint64_t: setAtIntSmallJsonG, \ 1494 char*: setAtNFreeSSmallJsonG, \ 1495 smallDictt*: setAtNFreeDictSmallJsonG, \ 1496 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1497 char **: setAtNFreeArraycSmallJsonG, \ 1498 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1499 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1500 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1501 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1502 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1503 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1504 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1505 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1506 default: setAtVoidSmallJsonG), \ 1507 uint16_t: _Generic((value), \ 1508 baset*: setAtNFreeSmallJsonG, \ 1509 bool: setAtBoolSmallJsonG, \ 1510 double: setAtDoubleSmallJsonG, \ 1511 int64_t: setAtIntSmallJsonG, \ 1512 int32_t: setAtIntSmallJsonG, \ 1513 uint32_t: setAtIntSmallJsonG, \ 1514 uint64_t: setAtIntSmallJsonG, \ 1515 char*: setAtNFreeSSmallJsonG, \ 1516 smallDictt*: setAtNFreeDictSmallJsonG, \ 1517 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1518 char **: setAtNFreeArraycSmallJsonG, \ 1519 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1520 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1521 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1522 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1523 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1524 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1525 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1526 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1527 default: setAtVoidSmallJsonG), \ 1528 uint8_t: _Generic((value), \ 1529 baset*: setAtNFreeSmallJsonG, \ 1530 bool: setAtBoolSmallJsonG, \ 1531 double: setAtDoubleSmallJsonG, \ 1532 int64_t: setAtIntSmallJsonG, \ 1533 int32_t: setAtIntSmallJsonG, \ 1534 uint32_t: setAtIntSmallJsonG, \ 1535 uint64_t: setAtIntSmallJsonG, \ 1536 char*: setAtNFreeSSmallJsonG, \ 1537 smallDictt*: setAtNFreeDictSmallJsonG, \ 1538 smallArrayt*: setAtNFreeArraySmallJsonG, \ 1539 char **: setAtNFreeArraycSmallJsonG, \ 1540 smallBoolt*: setAtNFreeSmallBoolSmallJsonG, \ 1541 smallBytest*: setAtNFreeSmallBytesSmallJsonG, \ 1542 smallDoublet*: setAtNFreeSmallDoubleSmallJsonG, \ 1543 smallIntt*: setAtNFreeSmallIntSmallJsonG, \ 1544 smallJsont*: setAtNFreeSmallJsonSmallJsonG, \ 1545 smallStringt*: setAtNFreeSmallStringSmallJsonG, \ 1546 smallContainert*: setAtNFreeSmallContainerSmallJsonG, \ 1547 undefinedt*: setAtNFreeUndefinedSmallJsonG, \ 1548 default: setAtVoidSmallJsonG) \ 1549 ), \ 1550 smallStringt*: setAtSmallStringG, \ 1551 char *: setS, \ 1552 char **: _Generic(value, \ 1553 char *: iListSetS,\ 1554 char: listSetCharS,\ 1555 int: listSetCharS,\ 1556 default: iListSetS \ 1557 ) \ 1558 )(self, key, value) 1559 1560 1561 #define setPG(self, key, value) _Generic((self), \ 1562 smallDictt*: _Generic(key, \ 1563 char *: _Generic((value), \ 1564 smallDictt*: setPDictSmallDictG, \ 1565 smallArrayt*: setPArraySmallDictG, \ 1566 smallJsont*: setPSmallJsonSmallDictG, \ 1567 smallStringt*: setPSmallStringSmallDictG, \ 1568 default: setPDictSmallDictG), \ 1569 const char *: _Generic((value), \ 1570 smallDictt*: setPDictSmallDictG, \ 1571 smallArrayt*: setPArraySmallDictG, \ 1572 smallJsont*: setPSmallJsonSmallDictG, \ 1573 smallStringt*: setPSmallStringSmallDictG, \ 1574 default: setPDictSmallDictG), \ 1575 char: _Generic((value), \ 1576 smallDictt*: setPDictKCharSmallDictG, \ 1577 smallArrayt*: setPArrayKCharSmallDictG, \ 1578 smallJsont*: setPSmallJsonKCharSmallDictG, \ 1579 smallStringt*: setPSmallStringKCharSmallDictG, \ 1580 default: setPDictKCharSmallDictG), \ 1581 int: _Generic((value), \ 1582 smallDictt*: setPDictKCharSmallDictG, \ 1583 smallArrayt*: setPArrayKCharSmallDictG, \ 1584 smallJsont*: setPSmallJsonKCharSmallDictG, \ 1585 smallStringt*: setPSmallStringKCharSmallDictG, \ 1586 default: setPDictKCharSmallDictG), \ 1587 default: setPDictSmallDictG \ 1588 ),\ 1589 smallArrayt*: _Generic((value), \ 1590 smallDictt*: setPAtDictSmallArrayG, \ 1591 smallArrayt*: setPAtArraySmallArrayG, \ 1592 smallJsont*: setPAtSmallJsonSmallArrayG, \ 1593 smallStringt*: setPAtSmallStringSmallArrayG, \ 1594 default: setPAtDictSmallArrayG), \ 1595 smallJsont*: _Generic(key, \ 1596 char *: _Generic((value), \ 1597 smallDictt*: setPDictSmallJsonG, \ 1598 smallArrayt*: setPArraySmallJsonG, \ 1599 smallJsont*: setPSmallJsonSmallJsonG, \ 1600 smallStringt*: setPSmallStringSmallJsonG, \ 1601 default: setPDictSmallJsonG), \ 1602 const char *: _Generic((value), \ 1603 smallDictt*: setPDictSmallJsonG, \ 1604 smallArrayt*: setPArraySmallJsonG, \ 1605 smallJsont*: setPSmallJsonSmallJsonG, \ 1606 smallStringt*: setPSmallStringSmallJsonG, \ 1607 default: setPDictSmallJsonG), \ 1608 int64_t: _Generic((value), \ 1609 smallDictt*: setPAtDictSmallJsonG, \ 1610 smallArrayt*: setPAtArraySmallJsonG, \ 1611 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1612 smallStringt*: setPAtSmallStringSmallJsonG, \ 1613 default: setPAtDictSmallJsonG), \ 1614 int32_t: _Generic((value), \ 1615 smallDictt*: setPAtDictSmallJsonG, \ 1616 smallArrayt*: setPAtArraySmallJsonG, \ 1617 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1618 smallStringt*: setPAtSmallStringSmallJsonG, \ 1619 default: setPAtDictSmallJsonG), \ 1620 int16_t: _Generic((value), \ 1621 smallDictt*: setPAtDictSmallJsonG, \ 1622 smallArrayt*: setPAtArraySmallJsonG, \ 1623 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1624 smallStringt*: setPAtSmallStringSmallJsonG, \ 1625 default: setPAtDictSmallJsonG), \ 1626 int8_t: _Generic((value), \ 1627 smallDictt*: setPAtDictSmallJsonG, \ 1628 smallArrayt*: setPAtArraySmallJsonG, \ 1629 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1630 smallStringt*: setPAtSmallStringSmallJsonG, \ 1631 default: setPAtDictSmallJsonG), \ 1632 uint64_t: _Generic((value), \ 1633 smallDictt*: setPAtDictSmallJsonG, \ 1634 smallArrayt*: setPAtArraySmallJsonG, \ 1635 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1636 smallStringt*: setPAtSmallStringSmallJsonG, \ 1637 default: setPAtDictSmallJsonG), \ 1638 uint32_t: _Generic((value), \ 1639 smallDictt*: setPAtDictSmallJsonG, \ 1640 smallArrayt*: setPAtArraySmallJsonG, \ 1641 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1642 smallStringt*: setPAtSmallStringSmallJsonG, \ 1643 default: setPAtDictSmallJsonG), \ 1644 uint16_t: _Generic((value), \ 1645 smallDictt*: setPAtDictSmallJsonG, \ 1646 smallArrayt*: setPAtArraySmallJsonG, \ 1647 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1648 smallStringt*: setPAtSmallStringSmallJsonG, \ 1649 default: setPAtDictSmallJsonG), \ 1650 uint8_t: _Generic((value), \ 1651 smallDictt*: setPAtDictSmallJsonG, \ 1652 smallArrayt*: setPAtArraySmallJsonG, \ 1653 smallJsont*: setPAtSmallJsonSmallJsonG, \ 1654 smallStringt*: setPAtSmallStringSmallJsonG, \ 1655 default: setPAtDictSmallJsonG), \ 1656 default: setPDictSmallJsonG \ 1657 ),\ 1658 char **: _Generic(value, \ 1659 char *: iListSetS,\ 1660 char: listSetCharS,\ 1661 int: listSetCharS,\ 1662 default: iListSetS \ 1663 ) \ 1664 )(self, key, value) 1665 1666 1667 #define setNFreePG(self, key, value) _Generic((self), \ 1668 smallDictt*: _Generic(key, \ 1669 char *: _Generic((value), \ 1670 smallDictt*: setNFreePDictSmallDictG, \ 1671 smallArrayt*: setNFreePArraySmallDictG, \ 1672 smallJsont*: setNFreePSmallJsonSmallDictG, \ 1673 smallStringt*: setNFreePSmallStringSmallDictG, \ 1674 default: setNFreePDictSmallDictG), \ 1675 const char *: _Generic((value), \ 1676 smallDictt*: setNFreePDictSmallDictG, \ 1677 smallArrayt*: setNFreePArraySmallDictG, \ 1678 smallJsont*: setNFreePSmallJsonSmallDictG, \ 1679 smallStringt*: setNFreePSmallStringSmallDictG, \ 1680 default: setNFreePDictSmallDictG), \ 1681 char: _Generic((value), \ 1682 smallDictt*: setNFreePDictKCharSmallDictG, \ 1683 smallArrayt*: setNFreePArrayKCharSmallDictG, \ 1684 smallJsont*: setNFreePSmallJsonKCharSmallDictG, \ 1685 smallStringt*: setNFreePSmallStringKCharSmallDictG, \ 1686 default: setNFreePDictSmallDictG), \ 1687 int: _Generic((value), \ 1688 smallDictt*: setNFreePDictKCharSmallDictG, \ 1689 smallArrayt*: setNFreePArrayKCharSmallDictG, \ 1690 smallJsont*: setNFreePSmallJsonKCharSmallDictG, \ 1691 smallStringt*: setNFreePSmallStringKCharSmallDictG, \ 1692 default: setNFreePDictSmallDictG), \ 1693 default: setNFreePDictSmallDictG \ 1694 ),\ 1695 smallArrayt*: _Generic((value), \ 1696 smallDictt*: setPAtNFreeDictSmallArrayG, \ 1697 smallArrayt*: setPAtNFreeArraySmallArrayG, \ 1698 smallJsont*: setPAtNFreeSmallJsonSmallArrayG, \ 1699 smallStringt*: setPAtNFreeSmallStringSmallArrayG, \ 1700 default: setPAtNFreeDictSmallArrayG), \ 1701 smallJsont*: _Generic(key, \ 1702 char *: _Generic((value), \ 1703 smallDictt*: setNFreePDictSmallJsonG, \ 1704 smallArrayt*: setNFreePArraySmallJsonG, \ 1705 smallJsont*: setNFreePSmallJsonSmallJsonG, \ 1706 smallStringt*: setNFreePSmallStringSmallJsonG, \ 1707 default: setNFreePDictSmallJsonG), \ 1708 const char *: _Generic((value), \ 1709 smallDictt*: setNFreePDictSmallJsonG, \ 1710 smallArrayt*: setNFreePArraySmallJsonG, \ 1711 smallJsont*: setNFreePSmallJsonSmallJsonG, \ 1712 smallStringt*: setNFreePSmallStringSmallJsonG, \ 1713 default: setNFreePDictSmallJsonG), \ 1714 int64_t: _Generic((value), \ 1715 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1716 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1717 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1718 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1719 default: setPAtNFreeDictSmallJsonG), \ 1720 int32_t: _Generic((value), \ 1721 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1722 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1723 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1724 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1725 default: setPAtNFreeDictSmallJsonG), \ 1726 int16_t: _Generic((value), \ 1727 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1728 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1729 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1730 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1731 default: setPAtNFreeDictSmallJsonG), \ 1732 int8_t: _Generic((value), \ 1733 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1734 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1735 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1736 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1737 default: setPAtNFreeDictSmallJsonG), \ 1738 uint64_t: _Generic((value), \ 1739 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1740 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1741 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1742 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1743 default: setPAtNFreeDictSmallJsonG), \ 1744 uint32_t: _Generic((value), \ 1745 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1746 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1747 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1748 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1749 default: setPAtNFreeDictSmallJsonG), \ 1750 uint16_t: _Generic((value), \ 1751 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1752 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1753 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1754 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1755 default: setPAtNFreeDictSmallJsonG), \ 1756 uint8_t: _Generic((value), \ 1757 smallDictt*: setPAtNFreeDictSmallJsonG, \ 1758 smallArrayt*: setPAtNFreeArraySmallJsonG, \ 1759 smallJsont*: setPAtNFreeSmallJsonSmallJsonG, \ 1760 smallStringt*: setPAtNFreeSmallStringSmallJsonG, \ 1761 default: setPAtNFreeDictSmallJsonG), \ 1762 default: setNFreePDictSmallJsonG \ 1763 ),\ 1764 char **: _Generic(value, \ 1765 char *: iListSetS,\ 1766 char: listSetCharS,\ 1767 int: listSetCharS,\ 1768 default: iListSetS \ 1769 ) \ 1770 )(self, key, value) 1771 1772 1773 #define getO(self, key) (self)->f->get(self, key) 1774 #define getAtO(self, index) (self)->f->getAt(self, index) 1775 #define getG(self, returnType, key) _Generic((self), \ 1776 smallDictt*: _Generic(key, \ 1777 char *: _Generic((returnType), \ 1778 baset*: getSmallDictG, \ 1779 undefinedt*: getUndefinedSmallDictG, \ 1780 bool: getBoolSmallDictG, \ 1781 bool*: getBoolPSmallDictG, \ 1782 double: getDoubleSmallDictG, \ 1783 double*: getDoublePSmallDictG, \ 1784 int64_t: getIntSmallDictG, \ 1785 int64_t*: getIntPSmallDictG, \ 1786 int32_t: getInt32SmallDictG, \ 1787 int32_t*: getInt32PSmallDictG, \ 1788 uint64_t: getUintSmallDictG, \ 1789 uint64_t*: getUintPSmallDictG, \ 1790 uint32_t: getUint32SmallDictG, \ 1791 uint32_t*: getUint32PSmallDictG, \ 1792 char*: getSSmallDictG, \ 1793 smallDictt*: getDictSmallDictG, \ 1794 smallArrayt*: getArraySmallDictG, \ 1795 smallBoolt*: getSmallBoolSmallDictG, \ 1796 smallBytest*: getSmallBytesSmallDictG, \ 1797 smallDoublet*: getSmallDoubleSmallDictG, \ 1798 smallIntt*: getSmallIntSmallDictG, \ 1799 smallJsont*: getSmallJsonSmallDictG, \ 1800 smallStringt*: getSmallStringSmallDictG, \ 1801 void*: getVoidSmallDictG, \ 1802 smallContainert*: getSmallContainerSmallDictG, \ 1803 default: getSmallDictG), \ 1804 const char *: _Generic((returnType), \ 1805 baset*: getSmallDictG, \ 1806 undefinedt*: getUndefinedSmallDictG, \ 1807 bool: getBoolSmallDictG, \ 1808 bool*: getBoolPSmallDictG, \ 1809 double: getDoubleSmallDictG, \ 1810 double*: getDoublePSmallDictG, \ 1811 int64_t: getIntSmallDictG, \ 1812 int64_t*: getIntPSmallDictG, \ 1813 int32_t: getInt32SmallDictG, \ 1814 int32_t*: getInt32PSmallDictG, \ 1815 uint64_t: getUintSmallDictG, \ 1816 uint64_t*: getUintPSmallDictG, \ 1817 uint32_t: getUint32SmallDictG, \ 1818 uint32_t*: getUint32PSmallDictG, \ 1819 char*: getSSmallDictG, \ 1820 smallDictt*: getDictSmallDictG, \ 1821 smallArrayt*: getArraySmallDictG, \ 1822 smallBoolt*: getSmallBoolSmallDictG, \ 1823 smallBytest*: getSmallBytesSmallDictG, \ 1824 smallDoublet*: getSmallDoubleSmallDictG, \ 1825 smallIntt*: getSmallIntSmallDictG, \ 1826 smallJsont*: getSmallJsonSmallDictG, \ 1827 smallStringt*: getSmallStringSmallDictG, \ 1828 void*: getVoidSmallDictG, \ 1829 smallContainert*: getSmallContainerSmallDictG, \ 1830 default: getSmallDictG), \ 1831 char: _Generic((returnType), \ 1832 baset*: getKCharSmallDictG, \ 1833 undefinedt*: getUndefinedKCharSmallDictG, \ 1834 bool: getBoolKCharSmallDictG, \ 1835 bool*: getBoolPKCharSmallDictG, \ 1836 double: getDoubleKCharSmallDictG, \ 1837 double*: getDoublePKCharSmallDictG, \ 1838 int64_t: getIntKCharSmallDictG, \ 1839 int64_t*: getIntPKCharSmallDictG, \ 1840 int32_t: getInt32KCharSmallDictG, \ 1841 int32_t*: getInt32PKCharSmallDictG, \ 1842 uint64_t: getUintKCharSmallDictG, \ 1843 uint64_t*: getUintPKCharSmallDictG, \ 1844 uint32_t: getUint32KCharSmallDictG, \ 1845 uint32_t*: getUint32PKCharSmallDictG, \ 1846 char*: getSKCharSmallDictG, \ 1847 smallDictt*: getDictKCharSmallDictG, \ 1848 smallArrayt*: getArrayKCharSmallDictG, \ 1849 smallBoolt*: getSmallBoolKCharSmallDictG, \ 1850 smallBytest*: getSmallBytesKCharSmallDictG, \ 1851 smallDoublet*: getSmallDoubleKCharSmallDictG, \ 1852 smallIntt*: getSmallIntKCharSmallDictG, \ 1853 smallJsont*: getSmallJsonKCharSmallDictG, \ 1854 smallStringt*: getSmallStringKCharSmallDictG, \ 1855 void*: getVoidKCharSmallDictG, \ 1856 smallContainert*: getSmallContainerKCharSmallDictG, \ 1857 default: getKCharSmallDictG), \ 1858 int: _Generic((returnType), \ 1859 baset*: getKCharSmallDictG, \ 1860 undefinedt*: getUndefinedKCharSmallDictG, \ 1861 bool: getBoolKCharSmallDictG, \ 1862 bool*: getBoolPKCharSmallDictG, \ 1863 double: getDoubleKCharSmallDictG, \ 1864 double*: getDoublePKCharSmallDictG, \ 1865 int64_t: getIntKCharSmallDictG, \ 1866 int64_t*: getIntPKCharSmallDictG, \ 1867 int32_t: getInt32KCharSmallDictG, \ 1868 int32_t*: getInt32PKCharSmallDictG, \ 1869 uint64_t: getUintKCharSmallDictG, \ 1870 uint64_t*: getUintPKCharSmallDictG, \ 1871 uint32_t: getUint32KCharSmallDictG, \ 1872 uint32_t*: getUint32PKCharSmallDictG, \ 1873 char*: getSKCharSmallDictG, \ 1874 smallDictt*: getDictKCharSmallDictG, \ 1875 smallArrayt*: getArrayKCharSmallDictG, \ 1876 smallBoolt*: getSmallBoolKCharSmallDictG, \ 1877 smallBytest*: getSmallBytesKCharSmallDictG, \ 1878 smallDoublet*: getSmallDoubleKCharSmallDictG, \ 1879 smallIntt*: getSmallIntKCharSmallDictG, \ 1880 smallJsont*: getSmallJsonKCharSmallDictG, \ 1881 smallStringt*: getSmallStringKCharSmallDictG, \ 1882 void*: getVoidKCharSmallDictG, \ 1883 smallContainert*: getSmallContainerKCharSmallDictG, \ 1884 default: getKCharSmallDictG), \ 1885 default: getSmallDictG \ 1886 ), \ 1887 smallArrayt*: _Generic((returnType), \ 1888 baset*: getAtSmallArrayG, \ 1889 undefinedt*: getAtUndefinedSmallArrayG, \ 1890 bool: getAtBoolSmallArrayG, \ 1891 bool*: getAtBoolPSmallArrayG, \ 1892 double: getAtDoubleSmallArrayG, \ 1893 double*: getAtDoublePSmallArrayG, \ 1894 int64_t: getAtIntSmallArrayG, \ 1895 int64_t*: getAtIntPSmallArrayG, \ 1896 int32_t: getAtInt32SmallArrayG, \ 1897 int32_t*: getAtInt32PSmallArrayG, \ 1898 uint64_t: getAtUintSmallArrayG, \ 1899 uint64_t*: getAtUintPSmallArrayG, \ 1900 uint32_t: getAtUint32SmallArrayG, \ 1901 uint32_t*: getAtUint32PSmallArrayG, \ 1902 char*: getAtSSmallArrayG, \ 1903 smallDictt*: getAtDictSmallArrayG, \ 1904 smallArrayt*: getAtArraySmallArrayG, \ 1905 smallBoolt*: getAtSmallBoolSmallArrayG, \ 1906 smallBytest*: getAtSmallBytesSmallArrayG, \ 1907 smallDoublet*: getAtSmallDoubleSmallArrayG, \ 1908 smallIntt*: getAtSmallIntSmallArrayG, \ 1909 smallJsont*: getAtSmallJsonSmallArrayG, \ 1910 smallStringt*: getAtSmallStringSmallArrayG, \ 1911 void*: getAtVoidSmallArrayG, \ 1912 smallContainert*: getAtSmallContainerSmallArrayG, \ 1913 default: getAtSmallArrayG), \ 1914 smallJsont*: _Generic(key, \ 1915 char *: _Generic((returnType), \ 1916 baset*: getSmallJsonG, \ 1917 undefinedt*: getUndefinedSmallJsonG, \ 1918 bool: getBoolSmallJsonG, \ 1919 bool*: getBoolPSmallJsonG, \ 1920 double: getDoubleSmallJsonG, \ 1921 double*: getDoublePSmallJsonG, \ 1922 int64_t: getIntSmallJsonG, \ 1923 int64_t*: getIntPSmallJsonG, \ 1924 int32_t: getInt32SmallJsonG, \ 1925 int32_t*: getInt32PSmallJsonG, \ 1926 uint64_t: getUintSmallJsonG, \ 1927 uint64_t*: getUintPSmallJsonG, \ 1928 uint32_t: getUint32SmallJsonG, \ 1929 uint32_t*: getUint32PSmallJsonG, \ 1930 char*: getSSmallJsonG, \ 1931 smallDictt*: getDictSmallJsonG, \ 1932 smallArrayt*: getArraySmallJsonG, \ 1933 smallBoolt*: getSmallBoolSmallJsonG, \ 1934 smallBytest*: getSmallBytesSmallJsonG, \ 1935 smallDoublet*: getSmallDoubleSmallJsonG, \ 1936 smallIntt*: getSmallIntSmallJsonG, \ 1937 smallJsont*: getSmallJsonSmallJsonG, \ 1938 smallStringt*: getSmallStringSmallJsonG, \ 1939 void*: getVoidSmallJsonG, \ 1940 smallContainert*: getSmallContainerSmallJsonG, \ 1941 default: getSmallJsonG), \ 1942 const char *: _Generic((returnType), \ 1943 baset*: getSmallJsonG, \ 1944 undefinedt*: getUndefinedSmallJsonG, \ 1945 bool: getBoolSmallJsonG, \ 1946 bool*: getBoolPSmallJsonG, \ 1947 double: getDoubleSmallJsonG, \ 1948 double*: getDoublePSmallJsonG, \ 1949 int64_t: getIntSmallJsonG, \ 1950 int64_t*: getIntPSmallJsonG, \ 1951 int32_t: getInt32SmallJsonG, \ 1952 int32_t*: getInt32PSmallJsonG, \ 1953 uint64_t: getUintSmallJsonG, \ 1954 uint64_t*: getUintPSmallJsonG, \ 1955 uint32_t: getUint32SmallJsonG, \ 1956 uint32_t*: getUint32PSmallJsonG, \ 1957 char*: getSSmallJsonG, \ 1958 smallDictt*: getDictSmallJsonG, \ 1959 smallArrayt*: getArraySmallJsonG, \ 1960 smallBoolt*: getSmallBoolSmallJsonG, \ 1961 smallBytest*: getSmallBytesSmallJsonG, \ 1962 smallDoublet*: getSmallDoubleSmallJsonG, \ 1963 smallIntt*: getSmallIntSmallJsonG, \ 1964 smallJsont*: getSmallJsonSmallJsonG, \ 1965 smallStringt*: getSmallStringSmallJsonG, \ 1966 void*: getVoidSmallJsonG, \ 1967 smallContainert*: getSmallContainerSmallJsonG, \ 1968 default: getSmallJsonG), \ 1969 int64_t: _Generic((returnType), \ 1970 baset*: getAtSmallJsonG, \ 1971 undefinedt*: getAtUndefinedSmallJsonG, \ 1972 bool: getAtBoolSmallJsonG, \ 1973 bool*: getAtBoolPSmallJsonG, \ 1974 double: getAtDoubleSmallJsonG, \ 1975 double*: getAtDoublePSmallJsonG, \ 1976 int64_t: getAtIntSmallJsonG, \ 1977 int64_t*: getAtIntPSmallJsonG, \ 1978 int32_t: getAtInt32SmallJsonG, \ 1979 int32_t*: getAtInt32PSmallJsonG, \ 1980 uint64_t: getAtUintSmallJsonG, \ 1981 uint64_t*: getAtUintPSmallJsonG, \ 1982 uint32_t: getAtUint32SmallJsonG, \ 1983 uint32_t*: getAtUint32PSmallJsonG, \ 1984 char*: getAtSSmallJsonG, \ 1985 smallDictt*: getAtDictSmallJsonG, \ 1986 smallArrayt*: getAtArraySmallJsonG, \ 1987 smallBoolt*: getAtSmallBoolSmallJsonG, \ 1988 smallBytest*: getAtSmallBytesSmallJsonG, \ 1989 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 1990 smallIntt*: getAtSmallIntSmallJsonG, \ 1991 smallJsont*: getAtSmallJsonSmallJsonG, \ 1992 smallStringt*: getAtSmallStringSmallJsonG, \ 1993 void*: getAtVoidSmallJsonG, \ 1994 smallContainert*: getAtSmallContainerSmallJsonG, \ 1995 default: getAtSmallJsonG), \ 1996 int32_t: _Generic((returnType), \ 1997 baset*: getAtSmallJsonG, \ 1998 undefinedt*: getAtUndefinedSmallJsonG, \ 1999 bool: getAtBoolSmallJsonG, \ 2000 bool*: getAtBoolPSmallJsonG, \ 2001 double: getAtDoubleSmallJsonG, \ 2002 double*: getAtDoublePSmallJsonG, \ 2003 int64_t: getAtIntSmallJsonG, \ 2004 int64_t*: getAtIntPSmallJsonG, \ 2005 int32_t: getAtInt32SmallJsonG, \ 2006 int32_t*: getAtInt32PSmallJsonG, \ 2007 uint64_t: getAtUintSmallJsonG, \ 2008 uint64_t*: getAtUintPSmallJsonG, \ 2009 uint32_t: getAtUint32SmallJsonG, \ 2010 uint32_t*: getAtUint32PSmallJsonG, \ 2011 char*: getAtSSmallJsonG, \ 2012 smallDictt*: getAtDictSmallJsonG, \ 2013 smallArrayt*: getAtArraySmallJsonG, \ 2014 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2015 smallBytest*: getAtSmallBytesSmallJsonG, \ 2016 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2017 smallIntt*: getAtSmallIntSmallJsonG, \ 2018 smallJsont*: getAtSmallJsonSmallJsonG, \ 2019 smallStringt*: getAtSmallStringSmallJsonG, \ 2020 void*: getAtVoidSmallJsonG, \ 2021 smallContainert*: getAtSmallContainerSmallJsonG, \ 2022 default: getAtSmallJsonG), \ 2023 int16_t: _Generic((returnType), \ 2024 baset*: getAtSmallJsonG, \ 2025 undefinedt*: getAtUndefinedSmallJsonG, \ 2026 bool: getAtBoolSmallJsonG, \ 2027 bool*: getAtBoolPSmallJsonG, \ 2028 double: getAtDoubleSmallJsonG, \ 2029 double*: getAtDoublePSmallJsonG, \ 2030 int64_t: getAtIntSmallJsonG, \ 2031 int64_t*: getAtIntPSmallJsonG, \ 2032 int32_t: getAtInt32SmallJsonG, \ 2033 int32_t*: getAtInt32PSmallJsonG, \ 2034 uint64_t: getAtUintSmallJsonG, \ 2035 uint64_t*: getAtUintPSmallJsonG, \ 2036 uint32_t: getAtUint32SmallJsonG, \ 2037 uint32_t*: getAtUint32PSmallJsonG, \ 2038 char*: getAtSSmallJsonG, \ 2039 smallDictt*: getAtDictSmallJsonG, \ 2040 smallArrayt*: getAtArraySmallJsonG, \ 2041 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2042 smallBytest*: getAtSmallBytesSmallJsonG, \ 2043 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2044 smallIntt*: getAtSmallIntSmallJsonG, \ 2045 smallJsont*: getAtSmallJsonSmallJsonG, \ 2046 smallStringt*: getAtSmallStringSmallJsonG, \ 2047 void*: getAtVoidSmallJsonG, \ 2048 smallContainert*: getAtSmallContainerSmallJsonG, \ 2049 default: getAtSmallJsonG), \ 2050 int8_t: _Generic((returnType), \ 2051 baset*: getAtSmallJsonG, \ 2052 undefinedt*: getAtUndefinedSmallJsonG, \ 2053 bool: getAtBoolSmallJsonG, \ 2054 bool*: getAtBoolPSmallJsonG, \ 2055 double: getAtDoubleSmallJsonG, \ 2056 double*: getAtDoublePSmallJsonG, \ 2057 int64_t: getAtIntSmallJsonG, \ 2058 int64_t*: getAtIntPSmallJsonG, \ 2059 int32_t: getAtInt32SmallJsonG, \ 2060 int32_t*: getAtInt32PSmallJsonG, \ 2061 uint64_t: getAtUintSmallJsonG, \ 2062 uint64_t*: getAtUintPSmallJsonG, \ 2063 uint32_t: getAtUint32SmallJsonG, \ 2064 uint32_t*: getAtUint32PSmallJsonG, \ 2065 char*: getAtSSmallJsonG, \ 2066 smallDictt*: getAtDictSmallJsonG, \ 2067 smallArrayt*: getAtArraySmallJsonG, \ 2068 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2069 smallBytest*: getAtSmallBytesSmallJsonG, \ 2070 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2071 smallIntt*: getAtSmallIntSmallJsonG, \ 2072 smallJsont*: getAtSmallJsonSmallJsonG, \ 2073 smallStringt*: getAtSmallStringSmallJsonG, \ 2074 void*: getAtVoidSmallJsonG, \ 2075 smallContainert*: getAtSmallContainerSmallJsonG, \ 2076 default: getAtSmallJsonG), \ 2077 uint64_t: _Generic((returnType), \ 2078 baset*: getAtSmallJsonG, \ 2079 undefinedt*: getAtUndefinedSmallJsonG, \ 2080 bool: getAtBoolSmallJsonG, \ 2081 bool*: getAtBoolPSmallJsonG, \ 2082 double: getAtDoubleSmallJsonG, \ 2083 double*: getAtDoublePSmallJsonG, \ 2084 int64_t: getAtIntSmallJsonG, \ 2085 int64_t*: getAtIntPSmallJsonG, \ 2086 int32_t: getAtInt32SmallJsonG, \ 2087 int32_t*: getAtInt32PSmallJsonG, \ 2088 uint64_t: getAtUintSmallJsonG, \ 2089 uint64_t*: getAtUintPSmallJsonG, \ 2090 uint32_t: getAtUint32SmallJsonG, \ 2091 uint32_t*: getAtUint32PSmallJsonG, \ 2092 char*: getAtSSmallJsonG, \ 2093 smallDictt*: getAtDictSmallJsonG, \ 2094 smallArrayt*: getAtArraySmallJsonG, \ 2095 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2096 smallBytest*: getAtSmallBytesSmallJsonG, \ 2097 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2098 smallIntt*: getAtSmallIntSmallJsonG, \ 2099 smallJsont*: getAtSmallJsonSmallJsonG, \ 2100 smallStringt*: getAtSmallStringSmallJsonG, \ 2101 void*: getAtVoidSmallJsonG, \ 2102 smallContainert*: getAtSmallContainerSmallJsonG, \ 2103 default: getAtSmallJsonG), \ 2104 uint32_t: _Generic((returnType), \ 2105 baset*: getAtSmallJsonG, \ 2106 undefinedt*: getAtUndefinedSmallJsonG, \ 2107 bool: getAtBoolSmallJsonG, \ 2108 bool*: getAtBoolPSmallJsonG, \ 2109 double: getAtDoubleSmallJsonG, \ 2110 double*: getAtDoublePSmallJsonG, \ 2111 int64_t: getAtIntSmallJsonG, \ 2112 int64_t*: getAtIntPSmallJsonG, \ 2113 int32_t: getAtInt32SmallJsonG, \ 2114 int32_t*: getAtInt32PSmallJsonG, \ 2115 uint64_t: getAtUintSmallJsonG, \ 2116 uint64_t*: getAtUintPSmallJsonG, \ 2117 uint32_t: getAtUint32SmallJsonG, \ 2118 uint32_t*: getAtUint32PSmallJsonG, \ 2119 char*: getAtSSmallJsonG, \ 2120 smallDictt*: getAtDictSmallJsonG, \ 2121 smallArrayt*: getAtArraySmallJsonG, \ 2122 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2123 smallBytest*: getAtSmallBytesSmallJsonG, \ 2124 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2125 smallIntt*: getAtSmallIntSmallJsonG, \ 2126 smallJsont*: getAtSmallJsonSmallJsonG, \ 2127 smallStringt*: getAtSmallStringSmallJsonG, \ 2128 void*: getAtVoidSmallJsonG, \ 2129 smallContainert*: getAtSmallContainerSmallJsonG, \ 2130 default: getAtSmallJsonG), \ 2131 uint16_t: _Generic((returnType), \ 2132 baset*: getAtSmallJsonG, \ 2133 undefinedt*: getAtUndefinedSmallJsonG, \ 2134 bool: getAtBoolSmallJsonG, \ 2135 bool*: getAtBoolPSmallJsonG, \ 2136 double: getAtDoubleSmallJsonG, \ 2137 double*: getAtDoublePSmallJsonG, \ 2138 int64_t: getAtIntSmallJsonG, \ 2139 int64_t*: getAtIntPSmallJsonG, \ 2140 int32_t: getAtInt32SmallJsonG, \ 2141 int32_t*: getAtInt32PSmallJsonG, \ 2142 uint64_t: getAtUintSmallJsonG, \ 2143 uint64_t*: getAtUintPSmallJsonG, \ 2144 uint32_t: getAtUint32SmallJsonG, \ 2145 uint32_t*: getAtUint32PSmallJsonG, \ 2146 char*: getAtSSmallJsonG, \ 2147 smallDictt*: getAtDictSmallJsonG, \ 2148 smallArrayt*: getAtArraySmallJsonG, \ 2149 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2150 smallBytest*: getAtSmallBytesSmallJsonG, \ 2151 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2152 smallIntt*: getAtSmallIntSmallJsonG, \ 2153 smallJsont*: getAtSmallJsonSmallJsonG, \ 2154 smallStringt*: getAtSmallStringSmallJsonG, \ 2155 void*: getAtVoidSmallJsonG, \ 2156 smallContainert*: getAtSmallContainerSmallJsonG, \ 2157 default: getAtSmallJsonG), \ 2158 uint8_t: _Generic((returnType), \ 2159 baset*: getAtSmallJsonG, \ 2160 undefinedt*: getAtUndefinedSmallJsonG, \ 2161 bool: getAtBoolSmallJsonG, \ 2162 bool*: getAtBoolPSmallJsonG, \ 2163 double: getAtDoubleSmallJsonG, \ 2164 double*: getAtDoublePSmallJsonG, \ 2165 int64_t: getAtIntSmallJsonG, \ 2166 int64_t*: getAtIntPSmallJsonG, \ 2167 int32_t: getAtInt32SmallJsonG, \ 2168 int32_t*: getAtInt32PSmallJsonG, \ 2169 uint64_t: getAtUintSmallJsonG, \ 2170 uint64_t*: getAtUintPSmallJsonG, \ 2171 uint32_t: getAtUint32SmallJsonG, \ 2172 uint32_t*: getAtUint32PSmallJsonG, \ 2173 char*: getAtSSmallJsonG, \ 2174 smallDictt*: getAtDictSmallJsonG, \ 2175 smallArrayt*: getAtArraySmallJsonG, \ 2176 smallBoolt*: getAtSmallBoolSmallJsonG, \ 2177 smallBytest*: getAtSmallBytesSmallJsonG, \ 2178 smallDoublet*: getAtSmallDoubleSmallJsonG, \ 2179 smallIntt*: getAtSmallIntSmallJsonG, \ 2180 smallJsont*: getAtSmallJsonSmallJsonG, \ 2181 smallStringt*: getAtSmallStringSmallJsonG, \ 2182 void*: getAtVoidSmallJsonG, \ 2183 smallContainert*: getAtSmallContainerSmallJsonG, \ 2184 default: getAtSmallJsonG), \ 2185 default: getSmallJsonG), \ 2186 smallBytest*: getAtSmallBytesG, \ 2187 smallStringt*: getAtSmallStringG, \ 2188 smallBoolt*: _Generic((returnType), \ 2189 bool: getBoolSmallBoolG, \ 2190 bool*: getBoolPSmallBoolG, \ 2191 default: getBoolPSmallBoolG), \ 2192 smallContainert*: getSmallContainerG, \ 2193 smallDoublet*: _Generic((returnType), \ 2194 double: getDoubleSmallDoubleG, \ 2195 double*: getDoublePSmallDoubleG, \ 2196 default: getDoublePSmallDoubleG), \ 2197 smallIntt*: _Generic((returnType), \ 2198 int64_t: getIntSmallIntG, \ 2199 int64_t*: getIntPSmallIntG, \ 2200 int32_t: getInt32SmallIntG, \ 2201 int32_t*: getInt32PSmallIntG, \ 2202 uint64_t: getUintSmallIntG, \ 2203 uint64_t*: getUintPSmallIntG, \ 2204 uint32_t: getUint32SmallIntG, \ 2205 uint32_t*: getUint32PSmallIntG, \ 2206 default: getIntPSmallIntG), \ 2207 char *: getSG, \ 2208 const char *: getSG, \ 2209 char **: iListGetG, \ 2210 const char **: iListGetCG \ 2211 )(self, returnType, key) 2212 2213 2214 #define getNDupO(self, key) (self)->f->getNDup(self, key) 2215 #define getAtNDupO(self, index) (self)->f->getAtNDup(self, index) 2216 #define getNDupG(self, returnType, key) _Generic((self), \ 2217 smallDictt*: _Generic(key, \ 2218 char *: _Generic((returnType), \ 2219 baset*: getNDupSmallDictG, \ 2220 undefinedt*: getNDupUndefinedSmallDictG, \ 2221 bool: getNDupBoolSmallDictG, \ 2222 double: getNDupDoubleSmallDictG, \ 2223 int64_t: getNDupIntSmallDictG, \ 2224 int32_t: getNDupInt32SmallDictG, \ 2225 uint64_t: getNDupUintSmallDictG, \ 2226 uint32_t: getNDupUint32SmallDictG, \ 2227 char*: getNDupSSmallDictG, \ 2228 smallDictt*: getNDupDictSmallDictG, \ 2229 smallArrayt*: getNDupArraySmallDictG, \ 2230 smallBoolt*: getNDupSmallBoolSmallDictG, \ 2231 smallBytest*: getNDupSmallBytesSmallDictG, \ 2232 smallDoublet*: getNDupSmallDoubleSmallDictG, \ 2233 smallIntt*: getNDupSmallIntSmallDictG, \ 2234 smallJsont*: getNDupSmallJsonSmallDictG, \ 2235 smallStringt*: getNDupSmallStringSmallDictG, \ 2236 void*: getNDupVoidSmallDictG, \ 2237 smallContainert*: getNDupSmallContainerSmallDictG, \ 2238 default: getNDupSmallDictG), \ 2239 const char *: _Generic((returnType), \ 2240 baset*: getNDupSmallDictG, \ 2241 undefinedt*: getNDupUndefinedSmallDictG, \ 2242 bool: getNDupBoolSmallDictG, \ 2243 double: getNDupDoubleSmallDictG, \ 2244 int64_t: getNDupIntSmallDictG, \ 2245 int32_t: getNDupInt32SmallDictG, \ 2246 uint64_t: getNDupUintSmallDictG, \ 2247 uint32_t: getNDupUint32SmallDictG, \ 2248 char*: getNDupSSmallDictG, \ 2249 smallDictt*: getNDupDictSmallDictG, \ 2250 smallArrayt*: getNDupArraySmallDictG, \ 2251 smallBoolt*: getNDupSmallBoolSmallDictG, \ 2252 smallBytest*: getNDupSmallBytesSmallDictG, \ 2253 smallDoublet*: getNDupSmallDoubleSmallDictG, \ 2254 smallIntt*: getNDupSmallIntSmallDictG, \ 2255 smallJsont*: getNDupSmallJsonSmallDictG, \ 2256 smallStringt*: getNDupSmallStringSmallDictG, \ 2257 void*: getNDupVoidSmallDictG, \ 2258 smallContainert*: getNDupSmallContainerSmallDictG, \ 2259 default: getNDupSmallDictG), \ 2260 char: _Generic((returnType), \ 2261 baset*: getNDupKCharSmallDictG, \ 2262 undefinedt*: getNDupUndefinedKCharSmallDictG, \ 2263 bool: getNDupBoolKCharSmallDictG, \ 2264 double: getNDupDoubleKCharSmallDictG, \ 2265 int64_t: getNDupIntKCharSmallDictG, \ 2266 int32_t: getNDupInt32KCharSmallDictG, \ 2267 uint64_t: getNDupUintKCharSmallDictG, \ 2268 uint32_t: getNDupUint32KCharSmallDictG, \ 2269 char*: getNDupSKCharSmallDictG, \ 2270 smallDictt*: getNDupDictKCharSmallDictG, \ 2271 smallArrayt*: getNDupArrayKCharSmallDictG, \ 2272 smallBoolt*: getNDupSmallBoolKCharSmallDictG, \ 2273 smallBytest*: getNDupSmallBytesKCharSmallDictG, \ 2274 smallDoublet*: getNDupSmallDoubleKCharSmallDictG, \ 2275 smallIntt*: getNDupSmallIntKCharSmallDictG, \ 2276 smallJsont*: getNDupSmallJsonKCharSmallDictG, \ 2277 smallStringt*: getNDupSmallStringKCharSmallDictG, \ 2278 void*: getNDupVoidKCharSmallDictG, \ 2279 smallContainert*: getNDupSmallContainerKCharSmallDictG, \ 2280 default: getNDupKCharSmallDictG), \ 2281 int: _Generic((returnType), \ 2282 baset*: getNDupKCharSmallDictG, \ 2283 undefinedt*: getNDupUndefinedKCharSmallDictG, \ 2284 bool: getNDupBoolKCharSmallDictG, \ 2285 double: getNDupDoubleKCharSmallDictG, \ 2286 int64_t: getNDupIntKCharSmallDictG, \ 2287 int32_t: getNDupInt32KCharSmallDictG, \ 2288 uint64_t: getNDupUintKCharSmallDictG, \ 2289 uint32_t: getNDupUint32KCharSmallDictG, \ 2290 char*: getNDupSKCharSmallDictG, \ 2291 smallDictt*: getNDupDictKCharSmallDictG, \ 2292 smallArrayt*: getNDupArrayKCharSmallDictG, \ 2293 smallBoolt*: getNDupSmallBoolKCharSmallDictG, \ 2294 smallBytest*: getNDupSmallBytesKCharSmallDictG, \ 2295 smallDoublet*: getNDupSmallDoubleKCharSmallDictG, \ 2296 smallIntt*: getNDupSmallIntKCharSmallDictG, \ 2297 smallJsont*: getNDupSmallJsonKCharSmallDictG, \ 2298 smallStringt*: getNDupSmallStringKCharSmallDictG, \ 2299 void*: getNDupVoidKCharSmallDictG, \ 2300 smallContainert*: getNDupSmallContainerKCharSmallDictG, \ 2301 default: getNDupKCharSmallDictG), \ 2302 default: getNDupSmallDictG \ 2303 ), \ 2304 smallArrayt*: _Generic((returnType), \ 2305 baset*: getAtNDupSmallArrayG, \ 2306 undefinedt*: getAtNDupUndefinedSmallArrayG, \ 2307 bool: getAtNDupBoolSmallArrayG, \ 2308 double: getAtNDupDoubleSmallArrayG, \ 2309 int64_t: getAtNDupIntSmallArrayG, \ 2310 int32_t: getAtNDupInt32SmallArrayG, \ 2311 uint64_t: getAtNDupUintSmallArrayG, \ 2312 uint32_t: getAtNDupUint32SmallArrayG, \ 2313 char*: getAtNDupSSmallArrayG, \ 2314 smallDictt*: getAtNDupDictSmallArrayG, \ 2315 smallArrayt*: getAtNDupArraySmallArrayG, \ 2316 smallBoolt*: getAtNDupSmallBoolSmallArrayG, \ 2317 smallBytest*: getAtNDupSmallBytesSmallArrayG, \ 2318 smallDoublet*: getAtNDupSmallDoubleSmallArrayG, \ 2319 smallIntt*: getAtNDupSmallIntSmallArrayG, \ 2320 smallJsont*: getAtNDupSmallJsonSmallArrayG, \ 2321 smallStringt*: getAtNDupSmallStringSmallArrayG, \ 2322 void*: getAtNDupVoidSmallArrayG, \ 2323 smallContainert*: getAtNDupSmallContainerSmallArrayG, \ 2324 default: getAtNDupSmallArrayG), \ 2325 smallJsont*: _Generic(key, \ 2326 char *: _Generic((returnType), \ 2327 baset*: getNDupSmallJsonG, \ 2328 undefinedt*: getNDupUndefinedSmallJsonG, \ 2329 bool: getNDupBoolSmallJsonG, \ 2330 double: getNDupDoubleSmallJsonG, \ 2331 int64_t: getNDupIntSmallJsonG, \ 2332 int32_t: getNDupInt32SmallJsonG, \ 2333 uint64_t: getNDupUintSmallJsonG, \ 2334 uint32_t: getNDupUint32SmallJsonG, \ 2335 char*: getNDupSSmallJsonG, \ 2336 smallDictt*: getNDupDictSmallJsonG, \ 2337 smallArrayt*: getNDupArraySmallJsonG, \ 2338 smallBoolt*: getNDupSmallBoolSmallJsonG, \ 2339 smallBytest*: getNDupSmallBytesSmallJsonG, \ 2340 smallDoublet*: getNDupSmallDoubleSmallJsonG, \ 2341 smallIntt*: getNDupSmallIntSmallJsonG, \ 2342 smallJsont*: getNDupSmallJsonSmallJsonG, \ 2343 smallStringt*: getNDupSmallStringSmallJsonG, \ 2344 void*: getNDupVoidSmallJsonG, \ 2345 smallContainert*: getNDupSmallContainerSmallJsonG, \ 2346 default: getNDupSmallJsonG), \ 2347 const char *: _Generic((returnType), \ 2348 baset*: getNDupSmallJsonG, \ 2349 undefinedt*: getNDupUndefinedSmallJsonG, \ 2350 bool: getNDupBoolSmallJsonG, \ 2351 double: getNDupDoubleSmallJsonG, \ 2352 int64_t: getNDupIntSmallJsonG, \ 2353 int32_t: getNDupInt32SmallJsonG, \ 2354 uint64_t: getNDupUintSmallJsonG, \ 2355 uint32_t: getNDupUint32SmallJsonG, \ 2356 char*: getNDupSSmallJsonG, \ 2357 smallDictt*: getNDupDictSmallJsonG, \ 2358 smallArrayt*: getNDupArraySmallJsonG, \ 2359 smallBoolt*: getNDupSmallBoolSmallJsonG, \ 2360 smallBytest*: getNDupSmallBytesSmallJsonG, \ 2361 smallDoublet*: getNDupSmallDoubleSmallJsonG, \ 2362 smallIntt*: getNDupSmallIntSmallJsonG, \ 2363 smallJsont*: getNDupSmallJsonSmallJsonG, \ 2364 smallStringt*: getNDupSmallStringSmallJsonG, \ 2365 void*: getNDupVoidSmallJsonG, \ 2366 smallContainert*: getNDupSmallContainerSmallJsonG, \ 2367 default: getNDupSmallJsonG), \ 2368 int64_t: _Generic((returnType), \ 2369 baset*: getAtNDupSmallJsonG, \ 2370 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2371 bool: getAtNDupBoolSmallJsonG, \ 2372 double: getAtNDupDoubleSmallJsonG, \ 2373 int64_t: getAtNDupIntSmallJsonG, \ 2374 int32_t: getAtNDupInt32SmallJsonG, \ 2375 uint64_t: getAtNDupUintSmallJsonG, \ 2376 uint32_t: getAtNDupUint32SmallJsonG, \ 2377 char*: getAtNDupSSmallJsonG, \ 2378 smallDictt*: getAtNDupDictSmallJsonG, \ 2379 smallArrayt*: getAtNDupArraySmallJsonG, \ 2380 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2381 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2382 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2383 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2384 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2385 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2386 void*: getAtNDupVoidSmallJsonG, \ 2387 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2388 default: getAtNDupSmallJsonG), \ 2389 int32_t: _Generic((returnType), \ 2390 baset*: getAtNDupSmallJsonG, \ 2391 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2392 bool: getAtNDupBoolSmallJsonG, \ 2393 double: getAtNDupDoubleSmallJsonG, \ 2394 int64_t: getAtNDupIntSmallJsonG, \ 2395 int32_t: getAtNDupInt32SmallJsonG, \ 2396 uint64_t: getAtNDupUintSmallJsonG, \ 2397 uint32_t: getAtNDupUint32SmallJsonG, \ 2398 char*: getAtNDupSSmallJsonG, \ 2399 smallDictt*: getAtNDupDictSmallJsonG, \ 2400 smallArrayt*: getAtNDupArraySmallJsonG, \ 2401 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2402 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2403 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2404 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2405 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2406 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2407 void*: getAtNDupVoidSmallJsonG, \ 2408 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2409 default: getAtNDupSmallJsonG), \ 2410 int16_t: _Generic((returnType), \ 2411 baset*: getAtNDupSmallJsonG, \ 2412 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2413 bool: getAtNDupBoolSmallJsonG, \ 2414 double: getAtNDupDoubleSmallJsonG, \ 2415 int64_t: getAtNDupIntSmallJsonG, \ 2416 int32_t: getAtNDupInt32SmallJsonG, \ 2417 uint64_t: getAtNDupUintSmallJsonG, \ 2418 uint32_t: getAtNDupUint32SmallJsonG, \ 2419 char*: getAtNDupSSmallJsonG, \ 2420 smallDictt*: getAtNDupDictSmallJsonG, \ 2421 smallArrayt*: getAtNDupArraySmallJsonG, \ 2422 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2423 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2424 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2425 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2426 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2427 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2428 void*: getAtNDupVoidSmallJsonG, \ 2429 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2430 default: getAtNDupSmallJsonG), \ 2431 int8_t: _Generic((returnType), \ 2432 baset*: getAtNDupSmallJsonG, \ 2433 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2434 bool: getAtNDupBoolSmallJsonG, \ 2435 double: getAtNDupDoubleSmallJsonG, \ 2436 int64_t: getAtNDupIntSmallJsonG, \ 2437 int32_t: getAtNDupInt32SmallJsonG, \ 2438 uint64_t: getAtNDupUintSmallJsonG, \ 2439 uint32_t: getAtNDupUint32SmallJsonG, \ 2440 char*: getAtNDupSSmallJsonG, \ 2441 smallDictt*: getAtNDupDictSmallJsonG, \ 2442 smallArrayt*: getAtNDupArraySmallJsonG, \ 2443 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2444 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2445 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2446 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2447 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2448 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2449 void*: getAtNDupVoidSmallJsonG, \ 2450 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2451 default: getAtNDupSmallJsonG), \ 2452 uint64_t: _Generic((returnType), \ 2453 baset*: getAtNDupSmallJsonG, \ 2454 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2455 bool: getAtNDupBoolSmallJsonG, \ 2456 double: getAtNDupDoubleSmallJsonG, \ 2457 int64_t: getAtNDupIntSmallJsonG, \ 2458 int32_t: getAtNDupInt32SmallJsonG, \ 2459 uint64_t: getAtNDupUintSmallJsonG, \ 2460 uint32_t: getAtNDupUint32SmallJsonG, \ 2461 char*: getAtNDupSSmallJsonG, \ 2462 smallDictt*: getAtNDupDictSmallJsonG, \ 2463 smallArrayt*: getAtNDupArraySmallJsonG, \ 2464 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2465 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2466 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2467 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2468 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2469 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2470 void*: getAtNDupVoidSmallJsonG, \ 2471 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2472 default: getAtNDupSmallJsonG), \ 2473 uint32_t: _Generic((returnType), \ 2474 baset*: getAtNDupSmallJsonG, \ 2475 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2476 bool: getAtNDupBoolSmallJsonG, \ 2477 double: getAtNDupDoubleSmallJsonG, \ 2478 int64_t: getAtNDupIntSmallJsonG, \ 2479 int32_t: getAtNDupInt32SmallJsonG, \ 2480 uint64_t: getAtNDupUintSmallJsonG, \ 2481 uint32_t: getAtNDupUint32SmallJsonG, \ 2482 char*: getAtNDupSSmallJsonG, \ 2483 smallDictt*: getAtNDupDictSmallJsonG, \ 2484 smallArrayt*: getAtNDupArraySmallJsonG, \ 2485 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2486 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2487 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2488 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2489 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2490 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2491 void*: getAtNDupVoidSmallJsonG, \ 2492 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2493 default: getAtNDupSmallJsonG), \ 2494 uint16_t: _Generic((returnType), \ 2495 baset*: getAtNDupSmallJsonG, \ 2496 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2497 bool: getAtNDupBoolSmallJsonG, \ 2498 double: getAtNDupDoubleSmallJsonG, \ 2499 int64_t: getAtNDupIntSmallJsonG, \ 2500 int32_t: getAtNDupInt32SmallJsonG, \ 2501 uint64_t: getAtNDupUintSmallJsonG, \ 2502 uint32_t: getAtNDupUint32SmallJsonG, \ 2503 char*: getAtNDupSSmallJsonG, \ 2504 smallDictt*: getAtNDupDictSmallJsonG, \ 2505 smallArrayt*: getAtNDupArraySmallJsonG, \ 2506 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2507 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2508 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2509 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2510 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2511 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2512 void*: getAtNDupVoidSmallJsonG, \ 2513 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2514 default: getAtNDupSmallJsonG), \ 2515 uint8_t: _Generic((returnType), \ 2516 baset*: getAtNDupSmallJsonG, \ 2517 undefinedt*: getAtNDupUndefinedSmallJsonG, \ 2518 bool: getAtNDupBoolSmallJsonG, \ 2519 double: getAtNDupDoubleSmallJsonG, \ 2520 int64_t: getAtNDupIntSmallJsonG, \ 2521 int32_t: getAtNDupInt32SmallJsonG, \ 2522 uint64_t: getAtNDupUintSmallJsonG, \ 2523 uint32_t: getAtNDupUint32SmallJsonG, \ 2524 char*: getAtNDupSSmallJsonG, \ 2525 smallDictt*: getAtNDupDictSmallJsonG, \ 2526 smallArrayt*: getAtNDupArraySmallJsonG, \ 2527 smallBoolt*: getAtNDupSmallBoolSmallJsonG, \ 2528 smallBytest*: getAtNDupSmallBytesSmallJsonG, \ 2529 smallDoublet*: getAtNDupSmallDoubleSmallJsonG, \ 2530 smallIntt*: getAtNDupSmallIntSmallJsonG, \ 2531 smallJsont*: getAtNDupSmallJsonSmallJsonG, \ 2532 smallStringt*: getAtNDupSmallStringSmallJsonG, \ 2533 void*: getAtNDupVoidSmallJsonG, \ 2534 smallContainert*: getAtNDupSmallContainerSmallJsonG, \ 2535 default: getAtNDupSmallJsonG), \ 2536 default: getNDupSmallJsonG), \ 2537 smallBytest*: getAtSmallBytesG, \ 2538 smallStringt*: getAtSmallStringG, \ 2539 smallBoolt*: getBoolSmallBoolG, \ 2540 smallContainert*: getSmallContainerG, \ 2541 smallDoublet*: getDoubleSmallDoubleG, \ 2542 smallIntt*: _Generic((returnType), \ 2543 int64_t: getIntSmallIntG, \ 2544 int32_t: getInt32SmallIntG, \ 2545 uint64_t: getUintSmallIntG, \ 2546 uint32_t: getUint32SmallIntG, \ 2547 default: getIntSmallIntG), \ 2548 char *: getSG, \ 2549 const char *: getSG, \ 2550 char **: listGetG, \ 2551 const char **: listGetCG \ 2552 )(self, returnType, key) 2553 2554 #define getNumO(self, key) (self)->f->getNum(self, key) 2555 #define getNumG(self, key) _Generic((self), \ 2556 smallDictt*: getNumSmallDictG, \ 2557 smallArrayt*: getNumSmallArrayG, \ 2558 smallJsont*: _Generic(key, \ 2559 char*: getNumSmallJsonG, \ 2560 const char*: getNumSmallJsonG, \ 2561 int64_t: getNumAtSmallJsonG, \ 2562 int32_t: getNumAtSmallJsonG, \ 2563 int16_t: getNumAtSmallJsonG, \ 2564 int8_t: getNumAtSmallJsonG, \ 2565 uint64_t: getNumAtSmallJsonG, \ 2566 uint32_t: getNumAtSmallJsonG, \ 2567 uint16_t: getNumAtSmallJsonG, \ 2568 uint8_t: getNumAtSmallJsonG) \ 2569 )(self, key) 2570 2571 #define appendO(self, obj) (self)->f->append(self, obj) 2572 #define mergeO(self, obj) (self)->f->merge(self, obj) 2573 #define mergeG appendG 2574 #define appendG(self, obj) _Generic((self), \ 2575 smallDictt*: _Generic(obj, \ 2576 smallDictt*: mergeSmallDictG, \ 2577 smallJsont*: mergeSmallJsonSmallDictG, \ 2578 default: mergeSmallDictG), \ 2579 smallArrayt*: _Generic(obj, \ 2580 smallArrayt *: appendSmallArrayG, \ 2581 smallJsont *: appendSmallJsonSmallArrayG, \ 2582 char **: appendArraySmallArrayG, \ 2583 const char **: appendCArraySmallArrayG, \ 2584 default: appendSmallArrayG), \ 2585 smallJsont*: _Generic(obj, \ 2586 smallArrayt *: appendSmallJsonG, \ 2587 char **: appendArraySmallJsonG, \ 2588 const char **: appendCArraySmallJsonG, \ 2589 smallDictt *: mergeDictSmallJsonG, \ 2590 smallJsont *: mergeSmallJsonG, \ 2591 default: mergeSmallJsonG), \ 2592 smallStringt*: _Generic((obj), \ 2593 smallStringt*: appendSmallStringG, \ 2594 smallJsont*: appendSmallJsonSmallStringG, \ 2595 char *: appendSSmallStringG, \ 2596 char: appendCharSmallStringG, \ 2597 int: appendCharSmallStringG, \ 2598 default: appendSSmallStringG), \ 2599 char: appendSChar, \ 2600 int: appendSChar, \ 2601 char *: _Generic(obj, \ 2602 char *: appendS, \ 2603 const char *: appendS, \ 2604 char: appendCharS, \ 2605 int: appendCharS, \ 2606 default: appendS \ 2607 ), \ 2608 const char *: _Generic(obj, \ 2609 char *: appendS, \ 2610 const char *: appendS, \ 2611 char: appendCharS, \ 2612 int: appendCharS, \ 2613 default: appendS \ 2614 ), \ 2615 char **: _Generic(obj, \ 2616 char *: iAppendS, \ 2617 const char *: iAppendS, \ 2618 char: iAppendCharS, \ 2619 int: iAppendCharS, \ 2620 default: iAppendS \ 2621 ), \ 2622 char ***: iListAppendS \ 2623 )(self, obj) 2624 2625 #define appendNSmashO(self, obj) (self)->f->appendNSmash(self, obj) 2626 #define mergeNSmashO(self, obj) (self)->f->mergeNSmash(self, obj) 2627 #define mergeNSmashG appendNSmashG 2628 #define appendNFreeG appendNSmashG 2629 #define mergeNFreeG appendNSmashG 2630 #define appendNSmashG(self, obj) _Generic((self), \ 2631 smallDictt*: _Generic(obj, \ 2632 smallDictt*: mergeNSmashSmallDictG, \ 2633 smallJsont*: mergeNSmashSmallJsonSmallDictG, \ 2634 default: mergeNSmashSmallDictG), \ 2635 smallArrayt*: _Generic(obj, \ 2636 smallArrayt *: appendNSmashSmallArrayG, \ 2637 smallJsont *: appendNSmashSmallJsonSmallArrayG, \ 2638 char **: appendNSmashArraySmallArrayG, \ 2639 default: appendNSmashSmallArrayG), \ 2640 smallJsont*: _Generic(obj, \ 2641 smallArrayt *: appendNSmashSmallJsonG, \ 2642 char **: appendNSmashArraySmallJsonG, \ 2643 smallDictt *: mergeDictNSmashSmallJsonG, \ 2644 smallJsont *: mergeNSmashSmallJsonG, \ 2645 default: mergeNSmashSmallJsonG), \ 2646 smallStringt*: _Generic((obj), \ 2647 smallStringt*: appendNSmashSmallStringG, \ 2648 smallJsont*: appendNSmashSmallJsonSmallStringG, \ 2649 char *: appendNSmashSSmallStringG, \ 2650 char: appendCharSmallStringG, \ 2651 int: appendCharSmallStringG, \ 2652 default: appendSSmallStringG), \ 2653 char **: _Generic(obj, \ 2654 char *: iAppendNFreeS, \ 2655 char: iAppendCharS, \ 2656 int: iAppendCharS, \ 2657 default: iAppendNFreeS \ 2658 ), \ 2659 char ***: iListAppendNSmashS \ 2660 )(self, obj) 2661 2662 #define prependO(self, value) (self)->f->prepend(self, value) 2663 #define prependG(self, value) _Generic((self), \ 2664 smallArrayt*: _Generic((value), \ 2665 baset*: prependSmallArrayG, \ 2666 bool: prependBoolSmallArrayG, \ 2667 double: prependDoubleSmallArrayG, \ 2668 int64_t: prependIntSmallArrayG, \ 2669 int32_t: prependIntSmallArrayG, \ 2670 uint32_t: prependIntSmallArrayG, \ 2671 uint64_t: prependIntSmallArrayG, \ 2672 char*: prependSSmallArrayG, \ 2673 char: prependCharSmallArrayG, \ 2674 const char*: prependSSmallArrayG, \ 2675 smallDictt*: prependDictSmallArrayG, \ 2676 smallArrayt*: prependArraySmallArrayG, \ 2677 char **: prependArraycSmallArrayG, \ 2678 const char **: prependCArraycSmallArrayG, \ 2679 smallBoolt*: prependSmallBoolSmallArrayG, \ 2680 smallBytest*: prependSmallBytesSmallArrayG, \ 2681 smallDoublet*: prependSmallDoubleSmallArrayG, \ 2682 smallIntt*: prependSmallIntSmallArrayG, \ 2683 smallJsont*: prependSmallJsonSmallArrayG, \ 2684 smallStringt*: prependSmallStringSmallArrayG, \ 2685 smallContainert*: prependSmallContainerSmallArrayG, \ 2686 undefinedt*: prependUndefinedSmallArrayG, \ 2687 default: prependVoidSmallArrayG), \ 2688 smallJsont*: _Generic((value), \ 2689 baset*: prependSmallJsonG, \ 2690 bool: prependBoolSmallJsonG, \ 2691 double: prependDoubleSmallJsonG, \ 2692 int64_t: prependIntSmallJsonG, \ 2693 int32_t: prependIntSmallJsonG, \ 2694 uint32_t: prependIntSmallJsonG, \ 2695 uint64_t: prependIntSmallJsonG, \ 2696 char*: prependSSmallJsonG, \ 2697 char: prependCharSmallJsonG, \ 2698 const char*: prependSSmallJsonG, \ 2699 smallDictt*: prependDictSmallJsonG, \ 2700 smallArrayt*: prependArraySmallJsonG, \ 2701 char **: prependArraycSmallJsonG, \ 2702 const char **: prependCArraycSmallJsonG, \ 2703 smallBoolt*: prependSmallBoolSmallJsonG, \ 2704 smallBytest*: prependSmallBytesSmallJsonG, \ 2705 smallDoublet*: prependSmallDoubleSmallJsonG, \ 2706 smallIntt*: prependSmallIntSmallJsonG, \ 2707 smallJsont*: prependSmallJsonSmallJsonG, \ 2708 smallStringt*: prependSmallStringSmallJsonG, \ 2709 smallContainert*: prependSmallContainerSmallJsonG, \ 2710 undefinedt*: prependUndefinedSmallJsonG, \ 2711 default: prependVoidSmallJsonG), \ 2712 smallStringt*: _Generic((value), \ 2713 smallStringt*: prependSmallStringG, \ 2714 smallJsont*: prependSmallJsonSmallStringG, \ 2715 char *: prependSSmallStringG, \ 2716 char: prependCharSmallStringG, \ 2717 int: prependCharSmallStringG, \ 2718 default: prependSSmallStringG), \ 2719 char: prependSChar, \ 2720 int: prependSChar, \ 2721 char *: _Generic(value, \ 2722 char *: prependS, \ 2723 const char *: prependS, \ 2724 char: prependCharS, \ 2725 int: prependCharS, \ 2726 default: prependS \ 2727 ), \ 2728 const char *: _Generic(value, \ 2729 char *: prependS, \ 2730 const char *: prependS, \ 2731 char: prependCharS, \ 2732 int: prependCharS, \ 2733 default: prependS \ 2734 ), \ 2735 char **: _Generic(value, \ 2736 char *: iPrependS, \ 2737 const char *: iPrependS, \ 2738 char: iPrependCharS, \ 2739 int: iPrependCharS, \ 2740 default: iPrependS \ 2741 ), \ 2742 char ***: _Generic(value, \ 2743 char *: listPrependS, \ 2744 const char *: listPrependS, \ 2745 char: listPrependCharS, \ 2746 int: listPrependCharS, \ 2747 default: listPrependS \ 2748 ) \ 2749 )(self, value) 2750 2751 #define prependNFreeO(self, value) (self)->f->prependNFree(self, value) 2752 #define prependNSmashO(self, string) (self)->f->prependNSmash(self, string) 2753 #define prependNFreeG(self, obj) _Generic((self), \ 2754 smallArrayt*: _Generic((obj), \ 2755 baset*: prependNFreeSmallArrayG, \ 2756 bool: prependBoolSmallArrayG, \ 2757 double: prependDoubleSmallArrayG, \ 2758 int64_t: prependIntSmallArrayG, \ 2759 int32_t: prependIntSmallArrayG, \ 2760 uint32_t: prependIntSmallArrayG, \ 2761 uint64_t: prependIntSmallArrayG, \ 2762 char*: prependNFreeSSmallArrayG, \ 2763 char: prependCharSmallArrayG, \ 2764 smallDictt*: prependNFreeDictSmallArrayG, \ 2765 smallArrayt*: prependNFreeArraySmallArrayG, \ 2766 char **: prependNFreeArraycSmallArrayG, \ 2767 smallBoolt*: prependNFreeSmallBoolSmallArrayG, \ 2768 smallBytest*: prependNFreeSmallBytesSmallArrayG, \ 2769 smallDoublet*: prependNFreeSmallDoubleSmallArrayG, \ 2770 smallIntt*: prependNFreeSmallIntSmallArrayG, \ 2771 smallJsont*: prependNFreeSmallJsonSmallArrayG, \ 2772 smallStringt*: prependNFreeSmallStringSmallArrayG, \ 2773 smallContainert*: prependNFreeSmallContainerSmallArrayG, \ 2774 undefinedt*: prependNFreeUndefinedSmallArrayG, \ 2775 default: prependVoidSmallArrayG), \ 2776 smallJsont*: _Generic((obj), \ 2777 baset*: prependNFreeSmallJsonG, \ 2778 bool: prependBoolSmallJsonG, \ 2779 double: prependDoubleSmallJsonG, \ 2780 int64_t: prependIntSmallJsonG, \ 2781 int32_t: prependIntSmallJsonG, \ 2782 uint32_t: prependIntSmallJsonG, \ 2783 uint64_t: prependIntSmallJsonG, \ 2784 char*: prependNFreeSSmallJsonG, \ 2785 char: prependCharSmallJsonG, \ 2786 smallDictt*: prependNFreeDictSmallJsonG, \ 2787 smallArrayt*: prependNFreeArraySmallJsonG, \ 2788 char **: prependNFreeArraycSmallJsonG, \ 2789 smallBoolt*: prependNFreeSmallBoolSmallJsonG, \ 2790 smallBytest*: prependNFreeSmallBytesSmallJsonG, \ 2791 smallDoublet*: prependNFreeSmallDoubleSmallJsonG, \ 2792 smallIntt*: prependNFreeSmallIntSmallJsonG, \ 2793 smallJsont*: prependNFreeSmallJsonSmallJsonG, \ 2794 smallStringt*: prependNFreeSmallStringSmallJsonG, \ 2795 smallContainert*: prependNFreeSmallContainerSmallJsonG, \ 2796 undefinedt*: prependNFreeUndefinedSmallJsonG, \ 2797 default: prependVoidSmallJsonG), \ 2798 smallStringt*: _Generic((obj), \ 2799 smallStringt*: prependNSmashSmallStringG, \ 2800 smallJsont*: prependNSmashSmallJsonSmallStringG, \ 2801 char *: prependNSmashSSmallStringG, \ 2802 char: prependCharSmallStringG, \ 2803 int: prependCharSmallStringG, \ 2804 default: prependSSmallStringG), \ 2805 char **: _Generic(obj, \ 2806 char *: iPrependNFreeS, \ 2807 char: iPrependCharS, \ 2808 int: iPrependCharS, \ 2809 default: iPrependNFreeS \ 2810 ), \ 2811 char ***: _Generic(obj, \ 2812 char *: iListPrependS, \ 2813 char: listPrependCharS, \ 2814 int: listPrependCharS, \ 2815 default: iListPrependS \ 2816 ) \ 2817 )(self, obj) 2818 2819 #define shiftO(self, obj) (self)->f->shift(self, obj) 2820 #define shiftG(self, obj) _Generic((self), \ 2821 smallDictt*: _Generic(obj, \ 2822 smallDictt*: mergeSmallDictG, \ 2823 smallJsont*: mergeSmallJsonSmallDictG, \ 2824 default: mergeSmallDictG), \ 2825 smallArrayt*: _Generic(obj, \ 2826 smallArrayt *: shiftSmallArrayG, \ 2827 smallJsont *: shiftSmallJsonSmallArrayG, \ 2828 default: shiftSmallArrayG), \ 2829 smallJsont*: _Generic(obj, \ 2830 smallArrayt *: shiftSmallJsonG, \ 2831 smallDictt *: mergeDictSmallJsonG, \ 2832 smallJsont *: shiftSmallJsonSmallJsonG, \ 2833 default: mergeSmallJsonG), \ 2834 smallStringt*: _Generic((obj), \ 2835 smallStringt*: prependSmallStringG, \ 2836 smallJsont*: prependSmallJsonSmallStringG, \ 2837 char *: prependSSmallStringG, \ 2838 char: prependCharSmallStringG, \ 2839 int: prependCharSmallStringG, \ 2840 default: prependSSmallStringG), \ 2841 char: prependSChar, \ 2842 int: prependSChar, \ 2843 char *: _Generic(obj, \ 2844 char *: prependS, \ 2845 const char *: prependS, \ 2846 char: prependCharS, \ 2847 int: prependCharS, \ 2848 default: prependS \ 2849 ), \ 2850 const char *: _Generic(obj, \ 2851 char *: prependS, \ 2852 const char *: prependS, \ 2853 char: prependCharS, \ 2854 int: prependCharS, \ 2855 default: prependS \ 2856 ), \ 2857 char **: _Generic(obj, \ 2858 char *: iPrependS, \ 2859 const char *: iPrependS, \ 2860 char: iPrependCharS, \ 2861 int: iPrependCharS, \ 2862 default: iPrependS \ 2863 ), \ 2864 char ***: iListShiftS \ 2865 )(self, obj) 2866 2867 #define shiftNSmashO(self, obj) (self)->f->shiftNSmash(self, obj) 2868 #define shiftNFreeG shiftNSmashG 2869 #define shiftNSmashG(self, obj) _Generic((self), \ 2870 smallDictt*: _Generic(obj, \ 2871 smallDictt*: mergeNSmashSmallDictG, \ 2872 smallJsont*: mergeNSmashSmallJsonSmallDictG, \ 2873 default: mergeNSmashSmallDictG), \ 2874 smallArrayt*: _Generic(obj, \ 2875 smallArrayt *: shiftNSmashSmallArrayG, \ 2876 smallJsont *: shiftNSmashSmallJsonSmallArrayG, \ 2877 default: appendNSmashSmallArrayG), \ 2878 smallJsont*: _Generic(obj, \ 2879 smallArrayt *: shiftNSmashSmallJsonG, \ 2880 smallDictt *: mergeDictNSmashSmallJsonG, \ 2881 smallJsont *: shiftNSmashSmallJsonSmallJsonG, \ 2882 default: mergeNSmashSmallJsonG), \ 2883 smallStringt*: _Generic((obj), \ 2884 smallStringt*: prependNSmashSmallStringG, \ 2885 smallJsont*: prependNSmashSmallJsonSmallStringG, \ 2886 char *: prependNSmashSSmallStringG, \ 2887 char: prependCharSmallStringG, \ 2888 int: prependCharSmallStringG, \ 2889 default: prependSSmallStringG), \ 2890 char **: _Generic(obj, \ 2891 char *: iPrependNFreeS, \ 2892 char: iPrependCharS, \ 2893 int: iPrependCharS, \ 2894 default: iPrependNFreeS \ 2895 ), \ 2896 char ***: iListShiftNSmashS \ 2897 )(self, obj) 2898 2899 // Delete an element in an array and move the elements after 2900 // to fill the gap (delElemG deletes the element and creates a gap) 2901 // the indices of the elements after are changed (-1) 2902 #define delElG(self, idx) delG(self, idx, (idx)+1) 2903 2904 #define delO(self, start, end) (self)->f->del(self, start, end) 2905 #define delG(self, start, end) _Generic((self), \ 2906 smallDictt*: _Generic(start, \ 2907 char *: delSmallDictG, \ 2908 const char *: delSmallDictG, \ 2909 char: delKCharSmallDictG, \ 2910 int: delKCharSmallDictG, \ 2911 default: delSmallDictG \ 2912 ), \ 2913 smallJsont*: _Generic(start, \ 2914 char *: delKeySmallJsonG, \ 2915 const char *: delKeySmallJsonG, \ 2916 int64_t: delSmallJsonG, \ 2917 int32_t: delSmallJsonG, \ 2918 int16_t: delSmallJsonG, \ 2919 int8_t: delSmallJsonG, \ 2920 uint64_t: delSmallJsonG, \ 2921 uint32_t: delSmallJsonG, \ 2922 uint16_t: delSmallJsonG, \ 2923 uint8_t: delSmallJsonG, \ 2924 default: delSmallJsonG \ 2925 ), \ 2926 smallArrayt*: delSmallArrayG, \ 2927 smallStringt*: delSmallStringG, \ 2928 char **: iDelS, \ 2929 char ***: iListDelS \ 2930 )(self, start, end) 2931 2932 #define delElemO(self, index) (self)->f->delElem(self, index) 2933 #define delElemG(self, index) _Generic((self), \ 2934 smallDictt*: _Generic(index, \ 2935 char *: delElemSmallDictG, \ 2936 const char *: delElemSmallDictG, \ 2937 char: delElemKCharSmallDictG, \ 2938 int: delElemKCharSmallDictG, \ 2939 default: delElemSmallDictG \ 2940 ), \ 2941 smallJsont*: _Generic(index, \ 2942 char *: delElemSmallJsonG, \ 2943 const char *: delElemSmallJsonG, \ 2944 int64_t: delElemIndexSmallJsonG, \ 2945 int32_t: delElemIndexSmallJsonG, \ 2946 int16_t: delElemIndexSmallJsonG, \ 2947 int8_t: delElemIndexSmallJsonG, \ 2948 uint64_t: delElemIndexSmallJsonG, \ 2949 uint32_t: delElemIndexSmallJsonG, \ 2950 uint16_t: delElemIndexSmallJsonG, \ 2951 uint8_t: delElemIndexSmallJsonG, \ 2952 default: delElemSmallJsonG \ 2953 ), \ 2954 smallArrayt*: delElemSmallArrayG, \ 2955 smallStringt*: delElemSmallStringG, \ 2956 char **: iDelElemS, \ 2957 char ***: iListDelElemS \ 2958 )(self, index) 2959 2960 #define removeO(self, start, end) (self)->f->remove(self, start, end) 2961 #define removeG(self, start, end) _Generic((self), \ 2962 smallDictt*: _Generic(start, \ 2963 char *: removeSmallDictG, \ 2964 const char *: removeSmallDictG, \ 2965 char: removeKCharSmallDictG, \ 2966 int: removeKCharSmallDictG, \ 2967 default: removeSmallDictG \ 2968 ), \ 2969 smallJsont*: _Generic(start, \ 2970 char *: removeKeySmallJsonG, \ 2971 const char *: removeKeySmallJsonG, \ 2972 int64_t: removeSmallJsonG, \ 2973 int32_t: removeSmallJsonG, \ 2974 int16_t: removeSmallJsonG, \ 2975 int8_t: removeSmallJsonG, \ 2976 uint64_t: removeSmallJsonG, \ 2977 uint32_t: removeSmallJsonG, \ 2978 uint16_t: removeSmallJsonG, \ 2979 uint8_t: removeSmallJsonG, \ 2980 default: removeSmallJsonG \ 2981 ), \ 2982 smallArrayt*: removeSmallArrayG, \ 2983 smallStringt*: delSmallStringG, \ 2984 char **: iDelS, \ 2985 char ***: iListRemoveS \ 2986 )(self, start, end) 2987 2988 #define removeElemO(self, index) (self)->f->removeElem(self, index) 2989 #define removeElemG(self, index) _Generic((self), \ 2990 smallDictt*: _Generic(index, \ 2991 char *: removeElemSmallDictG, \ 2992 const char *: removeElemSmallDictG, \ 2993 char: removeElemKCharSmallDictG, \ 2994 int: removeElemKCharSmallDictG, \ 2995 default: removeElemSmallDictG \ 2996 ), \ 2997 smallJsont*: _Generic(index, \ 2998 char *: removeElemSmallJsonG, \ 2999 const char *: removeElemSmallJsonG, \ 3000 int64_t: removeElemIndexSmallJsonG, \ 3001 int32_t: removeElemIndexSmallJsonG, \ 3002 int16_t: removeElemIndexSmallJsonG, \ 3003 int8_t: removeElemIndexSmallJsonG, \ 3004 uint64_t: removeElemIndexSmallJsonG, \ 3005 uint32_t: removeElemIndexSmallJsonG, \ 3006 uint16_t: removeElemIndexSmallJsonG, \ 3007 uint8_t: removeElemIndexSmallJsonG, \ 3008 default: removeElemSmallJsonG \ 3009 ), \ 3010 smallArrayt*: removeElemSmallArrayG, \ 3011 smallStringt*: delElemSmallStringG, \ 3012 char **: iDelElemS, \ 3013 char ***: iListRemoveElemS \ 3014 )(self, index) 3015 3016 #define popO(self) (self)->f->pop(self) 3017 #define popG(self, returnType) _Generic((self), \ 3018 smallArrayt*: _Generic((returnType), \ 3019 baset*: popSmallArrayG, \ 3020 undefinedt*: popUndefinedSmallArrayG, \ 3021 bool: popBoolSmallArrayG, \ 3022 double: popDoubleSmallArrayG, \ 3023 int64_t: popIntSmallArrayG, \ 3024 int32_t: popInt32SmallArrayG, \ 3025 uint64_t: popUintSmallArrayG, \ 3026 uint32_t: popUint32SmallArrayG, \ 3027 char*: popSSmallArrayG, \ 3028 smallDictt*: popDictSmallArrayG, \ 3029 smallArrayt*: popArraySmallArrayG, \ 3030 smallBoolt*: popSmallBoolSmallArrayG, \ 3031 smallBytest*: popSmallBytesSmallArrayG, \ 3032 smallDoublet*: popSmallDoubleSmallArrayG, \ 3033 smallIntt*: popSmallIntSmallArrayG, \ 3034 smallJsont*: popSmallJsonSmallArrayG, \ 3035 smallStringt*: popSmallStringSmallArrayG, \ 3036 void*: popVoidSmallArrayG, \ 3037 smallContainert*: popSmallContainerSmallArrayG, \ 3038 default: popSmallArrayG), \ 3039 smallJsont*: _Generic((returnType), \ 3040 baset*: popSmallJsonG, \ 3041 undefinedt*: popUndefinedSmallJsonG, \ 3042 bool: popBoolSmallJsonG, \ 3043 double: popDoubleSmallJsonG, \ 3044 int64_t: popIntSmallJsonG, \ 3045 int32_t: popInt32SmallJsonG, \ 3046 uint64_t: popUintSmallJsonG, \ 3047 uint32_t: popUint32SmallJsonG, \ 3048 char*: popSSmallJsonG, \ 3049 smallDictt*: popDictSmallJsonG, \ 3050 smallArrayt*: popArraySmallJsonG, \ 3051 smallBoolt*: popSmallBoolSmallJsonG, \ 3052 smallBytest*: popSmallBytesSmallJsonG, \ 3053 smallDoublet*: popSmallDoubleSmallJsonG, \ 3054 smallIntt*: popSmallIntSmallJsonG, \ 3055 smallJsont*: popSmallJsonSmallJsonG, \ 3056 smallStringt*: popSmallStringSmallJsonG, \ 3057 void*: popVoidSmallJsonG, \ 3058 smallContainert*: popSmallContainerSmallJsonG, \ 3059 default: popSmallJsonG), \ 3060 char ***: listPopG \ 3061 )(self, returnType) 3062 3063 #define dequeueO(self) (self)->f->dequeue(self) 3064 #define dequeueG(self, returnType) _Generic((self), \ 3065 smallArrayt*: _Generic((returnType), \ 3066 baset*: dequeueSmallArrayG, \ 3067 undefinedt*: dequeueUndefinedSmallArrayG, \ 3068 bool: dequeueBoolSmallArrayG, \ 3069 double: dequeueDoubleSmallArrayG, \ 3070 int64_t: dequeueIntSmallArrayG, \ 3071 int32_t: dequeueInt32SmallArrayG, \ 3072 uint64_t: dequeueUintSmallArrayG, \ 3073 uint32_t: dequeueUint32SmallArrayG, \ 3074 char*: dequeueSSmallArrayG, \ 3075 smallDictt*: dequeueDictSmallArrayG, \ 3076 smallArrayt*: dequeueArraySmallArrayG, \ 3077 smallBoolt*: dequeueSmallBoolSmallArrayG, \ 3078 smallBytest*: dequeueSmallBytesSmallArrayG, \ 3079 smallDoublet*: dequeueSmallDoubleSmallArrayG, \ 3080 smallIntt*: dequeueSmallIntSmallArrayG, \ 3081 smallJsont*: dequeueSmallJsonSmallArrayG, \ 3082 smallStringt*: dequeueSmallStringSmallArrayG, \ 3083 void*: dequeueVoidSmallArrayG, \ 3084 smallContainert*: dequeueSmallContainerSmallArrayG, \ 3085 default: dequeueSmallArrayG), \ 3086 smallJsont*: _Generic((returnType), \ 3087 baset*: dequeueSmallJsonG, \ 3088 undefinedt*: dequeueUndefinedSmallJsonG, \ 3089 bool: dequeueBoolSmallJsonG, \ 3090 double: dequeueDoubleSmallJsonG, \ 3091 int64_t: dequeueIntSmallJsonG, \ 3092 int32_t: dequeueInt32SmallJsonG, \ 3093 uint64_t: dequeueUintSmallJsonG, \ 3094 uint32_t: dequeueUint32SmallJsonG, \ 3095 char*: dequeueSSmallJsonG, \ 3096 smallDictt*: dequeueDictSmallJsonG, \ 3097 smallArrayt*: dequeueArraySmallJsonG, \ 3098 smallBoolt*: dequeueSmallBoolSmallJsonG, \ 3099 smallBytest*: dequeueSmallBytesSmallJsonG, \ 3100 smallDoublet*: dequeueSmallDoubleSmallJsonG, \ 3101 smallIntt*: dequeueSmallIntSmallJsonG, \ 3102 smallJsont*: dequeueSmallJsonSmallJsonG, \ 3103 smallStringt*: dequeueSmallStringSmallJsonG, \ 3104 void*: dequeueVoidSmallJsonG, \ 3105 smallContainert*: dequeueSmallContainerSmallJsonG, \ 3106 default: dequeueSmallJsonG), \ 3107 char ***: listDequeueG \ 3108 )(self, returnType) 3109 3110 3111 3112 #define getProgPathG(returnType) _Generic((returnType), \ 3113 char *: getProgPath, \ 3114 const char *: getProgPath, \ 3115 smallJsont *: getProgPathJO, \ 3116 smallStringt *: getProgPathO \ 3117 )() 3118 3119 #define getRealProgPathG(returnType) _Generic((returnType), \ 3120 char *: getRealProgPath, \ 3121 const char *: getRealProgPath, \ 3122 smallJsont *: getRealProgPathJO, \ 3123 smallStringt *: getRealProgPathO \ 3124 )() 3125 3126 #define systemG(cmd) _Generic((cmd), \ 3127 char *: system, \ 3128 const char *: system, \ 3129 smallJsont *: systemJO, \ 3130 smallStringt *: systemO \ 3131 )(cmd) 3132 3133 #define systemNFreeG(cmd) _Generic((cmd), \ 3134 char *: systemNFreeF, \ 3135 smallJsont *: systemNFreeJOF, \ 3136 smallStringt *: systemNFreeOF \ 3137 )(cmd, __LINE__, __func__, __FILE__) 3138 3139 #define getModificationTimeG(path) _Generic(path, \ 3140 char *: getModificationTime, \ 3141 const char *: getModificationTime, \ 3142 smallJsont *: getModificationTimeJO, \ 3143 smallStringt *: getModificationTimeO \ 3144 )(path) 3145 3146 #define setModificationTimeG(path, mtime) _Generic(path, \ 3147 char *: setModificationTime, \ 3148 const char *: setModificationTime, \ 3149 smallJsont *: setModificationTimeJO, \ 3150 smallStringt *: setModificationTimeO \ 3151 )(path, mtime) 3152 3153 #define equalModificationTimesG(path1, path2) _Generic(path1, \ 3154 char *: _Generic(path2, \ 3155 char *: equalModificationTimes, \ 3156 const char *: equalModificationTimes, \ 3157 smallJsont *: equalModificationTimesSJO, \ 3158 smallStringt *: equalModificationTimesSO \ 3159 ), \ 3160 const char *: _Generic(path2, \ 3161 char *: equalModificationTimes, \ 3162 const char *: equalModificationTimes, \ 3163 smallJsont *: equalModificationTimesSJO, \ 3164 smallStringt *: equalModificationTimesSO \ 3165 ),\ 3166 smallJsont *: _Generic(path2, \ 3167 char *: equalModificationTimesJOS, \ 3168 const char *: equalModificationTimesJOS, \ 3169 smallJsont *: equalModificationTimesJO, \ 3170 smallStringt *: equalModificationTimesJOO \ 3171 ),\ 3172 smallStringt *: _Generic(path2, \ 3173 char *: equalModificationTimesOS, \ 3174 const char *: equalModificationTimesOS, \ 3175 smallJsont *: equalModificationTimesOJO, \ 3176 smallStringt *: equalModificationTimesO \ 3177 )\ 3178 )(path1, path2) 3179 3180 #define timeToSG(returnType, t) _Generic((returnType), \ 3181 char *: timeToS, \ 3182 smallJsont *: timeToJO, \ 3183 smallStringt *: timeToSO \ 3184 )(t) 3185 3186 #define shDirnameG(path) _Generic((path), \ 3187 char *: shDirname, \ 3188 const char *: shDirname, \ 3189 smallJsont *: shDirnameJO, \ 3190 smallStringt *: shDirnameO \ 3191 )(path) 3192 3193 #define expandHomeG(path) _Generic((path), \ 3194 char *: expandHome, \ 3195 const char *: expandHome, \ 3196 char **: iExpandHome, \ 3197 smallJsont *: expandHomeJO, \ 3198 smallStringt *: expandHomeO \ 3199 )(path) 3200 3201 #define normalizePathG(path) _Generic((path), \ 3202 char *: normalizePath, \ 3203 const char *: normalizePath, \ 3204 char **: iNormalizePath, \ 3205 smallJsont *: normalizePathJO, \ 3206 smallStringt *: normalizePathO \ 3207 )(path) 3208 3209 #define getCwdG(returnType) _Generic((returnType), \ 3210 char *: getCwd, \ 3211 const char *: getCwd, \ 3212 smallJsont *: getCwdJO, \ 3213 smallStringt *: getCwdO \ 3214 )() 3215 3216 #define chDirG(path) _Generic((path), \ 3217 char *: chDir, \ 3218 const char *: chDir, \ 3219 smallJsont *: chDirJO, \ 3220 smallStringt *: chDirO \ 3221 )(path) 3222 3223 #define isDirG(path) _Generic((path), \ 3224 char *: isDir, \ 3225 const char *: isDir, \ 3226 smallJsont *: isDirJO, \ 3227 smallStringt *: isDirO \ 3228 )(path) 3229 3230 #define isLinkG(path) _Generic((path), \ 3231 char *: isLink, \ 3232 const char *: isLink, \ 3233 smallJsont *: isLinkJO, \ 3234 smallStringt *: isLinkO \ 3235 )(path) 3236 3237 #define fileExistsG(path) _Generic((path), \ 3238 char *: fileExists, \ 3239 const char *: fileExists, \ 3240 smallJsont *: fileExistsJO, \ 3241 smallStringt *: fileExistsO \ 3242 )(path) 3243 3244 #define fileChmodG(path, mode) _Generic((path), \ 3245 char *: fileChmod, \ 3246 const char *: fileChmod, \ 3247 smallJsont *: fileChmodJO, \ 3248 smallStringt *: fileChmodO \ 3249 )(path, mode) 3250 3251 #define fileSizeG(path) _Generic((path), \ 3252 char *: fileSize, \ 3253 const char *: fileSize, \ 3254 smallJsont *: fileSizeJO, \ 3255 smallStringt *: fileSizeO, \ 3256 FILE *: fileSizeFP \ 3257 )(path) 3258 3259 #define readFileO(self, filePath) (self)->f->readFile(self, filePath) 3260 #define readTextO(self, filePath) (self)->f->readText(self, filePath) 3261 #define readFileG(self, path) _Generic((self), \ 3262 smallArrayt *: _Generic(path, \ 3263 char *: readTextSmallArrayG, \ 3264 const char*: readTextSmallArrayG, \ 3265 FILE *: readStreamSmallArrayG, \ 3266 smallJsont *: readTextSmallJsonSmallArrayG, \ 3267 smallStringt *: readTextSmallStringSmallArrayG \ 3268 ), \ 3269 smallBoolt *: _Generic(path, \ 3270 char *: readFileSmallBoolG, \ 3271 const char*: readFileSmallBoolG, \ 3272 FILE *: readStreamSmallBoolG, \ 3273 smallJsont *: readFileSmallJsonSmallBoolG, \ 3274 smallStringt *: readFileSmallStringSmallBoolG \ 3275 ), \ 3276 smallDoublet *: _Generic(path, \ 3277 char *: readFileSmallDoubleG, \ 3278 const char*: readFileSmallDoubleG, \ 3279 FILE *: readStreamSmallDoubleG, \ 3280 smallJsont *: readFileSmallJsonSmallDoubleG, \ 3281 smallStringt *: readFileSmallStringSmallDoubleG \ 3282 ), \ 3283 smallIntt *: _Generic(path, \ 3284 char *: readFileSmallIntG, \ 3285 const char*: readFileSmallIntG, \ 3286 FILE *: readStreamSmallIntG, \ 3287 smallJsont *: readFileSmallJsonSmallIntG, \ 3288 smallStringt *: readFileSmallStringSmallIntG \ 3289 ), \ 3290 smallStringt *: _Generic(path, \ 3291 char *: readFileSmallStringG, \ 3292 const char*: readFileSmallStringG, \ 3293 FILE *: readStreamSmallStringG, \ 3294 smallJsont *: readFileSmallJsonSmallStringG, \ 3295 smallStringt *: readFileSmallStringSmallStringG \ 3296 ), \ 3297 smallBytest *: _Generic(path, \ 3298 char *: readFileSmallBytesG, \ 3299 const char*: readFileSmallBytesG, \ 3300 FILE *: readStreamSmallBytesG, \ 3301 smallJsont *: readFileSmallJsonSmallBytesG, \ 3302 smallStringt *: readFileSmallStringSmallBytesG \ 3303 ), \ 3304 smallJsont *: _Generic(path, \ 3305 char *: readFileSmallJsonG, \ 3306 const char*: readFileSmallJsonG, \ 3307 FILE *: readStreamSmallJsonG, \ 3308 smallJsont *: readFileJsonSmallJsonG, \ 3309 smallStringt *: readFileSmallStringSmallJsonG \ 3310 ), \ 3311 char **: _Generic(path, \ 3312 char *: readFileToG, \ 3313 const char *: readFileToG, \ 3314 FILE *: readStreamToG, \ 3315 smallJsont *: readToFileSmallJsonNotSupported, \ 3316 smallStringt *: readToFileSmallStringNotSupported \ 3317 ), \ 3318 char ***: _Generic(path, \ 3319 char *: readTextSG, \ 3320 const char *: readTextSG, \ 3321 FILE *: readTextStreamG, \ 3322 smallJsont *: readTextSmallJsonNotSupported, \ 3323 smallStringt *: readTextSmallStringNotSupported \ 3324 ), \ 3325 char *: _Generic(path, \ 3326 char *: readFileToNewG, \ 3327 const char *: readFileToNewG, \ 3328 FILE *: readStreamToNewG, \ 3329 smallJsont *: readToFileSmallJsonNotSupported, \ 3330 smallStringt *: readToFileSmallStringNotSupported \ 3331 ), \ 3332 default: _Generic(path, \ 3333 char *: readFileToNewG, \ 3334 const char *: readFileToNewG, \ 3335 FILE *: readStreamToNewG, \ 3336 smallJsont *: readToFileSmallJsonNotSupported, \ 3337 smallStringt *: readToFileSmallStringNotSupported \ 3338 ) \ 3339 )(self, path) 3340 3341 #define readTextG(self, path) _Generic((self), \ 3342 smallArrayt *: _Generic(path, \ 3343 char *: readTextSmallArrayG, \ 3344 const char*: readTextSmallArrayG, \ 3345 FILE *: readStreamSmallArrayG, \ 3346 smallJsont *: readTextSmallJsonSmallArrayG, \ 3347 smallStringt *: readTextSmallStringSmallArrayG \ 3348 ), \ 3349 smallStringt *: _Generic(path, \ 3350 char *: readFileSmallStringG, \ 3351 const char*: readFileSmallStringG, \ 3352 FILE *: readStreamSmallStringG, \ 3353 smallJsont *: readFileSmallJsonSmallStringG, \ 3354 smallStringt *: readFileSmallStringSmallStringG \ 3355 ), \ 3356 smallJsont *: _Generic(path, \ 3357 char *: readTextSmallJsonG, \ 3358 const char*: readTextSmallJsonG, \ 3359 FILE *: readTextStreamSmallJsonG, \ 3360 smallJsont *: readTextJsonSmallJsonG, \ 3361 smallStringt *: readTextSmallStringSmallJsonG \ 3362 ), \ 3363 char **: _Generic(path, \ 3364 char *: readFileToG, \ 3365 const char *: readFileToG, \ 3366 FILE *: readStreamToG, \ 3367 smallJsont *: readToFileSmallJsonNotSupported, \ 3368 smallStringt *: readToFileSmallStringNotSupported \ 3369 ), \ 3370 char ***: _Generic(path, \ 3371 char *: readTextSG, \ 3372 const char *: readTextSG, \ 3373 FILE *: readTextStreamG, \ 3374 smallJsont *: readTextSmallJsonNotSupported, \ 3375 smallStringt *: readTextSmallStringNotSupported \ 3376 ), \ 3377 char *: _Generic(path, \ 3378 char *: readFileToNewG, \ 3379 const char *: readFileToNewG, \ 3380 FILE *: readStreamToNewG, \ 3381 smallJsont *: readToFileSmallJsonNotSupported, \ 3382 smallStringt *: readToFileSmallStringNotSupported \ 3383 ), \ 3384 default: _Generic(path, \ 3385 char *: readFileToNewG, \ 3386 const char *: readFileToNewG, \ 3387 FILE *: readStreamToNewG, \ 3388 smallJsont *: readToFileSmallJsonNotSupported, \ 3389 smallStringt *: readToFileSmallStringNotSupported \ 3390 ) \ 3391 )(self, path) 3392 3393 #define writeFileO(self, filePath) (self)->f->writeFile(self, filePath) 3394 #define writeTextO(self, filePath) (self)->f->writeText(self, filePath) 3395 #define writeFileG(self, path) _Generic((self), \ 3396 smallArrayt *: _Generic(path, \ 3397 char *: writeTextSmallArrayG, \ 3398 const char *: writeTextSmallArrayG, \ 3399 FILE *: writeStreamSmallArrayG, \ 3400 smallJsont *: writeTextSmallJsonSmallArrayG, \ 3401 smallStringt *: writeTextSmallStringSmallArrayG \ 3402 ), \ 3403 smallBoolt *: _Generic(path, \ 3404 char *: writeFileSmallBoolG, \ 3405 const char *: writeFileSmallBoolG, \ 3406 FILE *: writeStreamSmallBoolG, \ 3407 smallJsont *: writeFileSmallJsonSmallBoolG, \ 3408 smallStringt *: writeFileSmallStringSmallBoolG \ 3409 ), \ 3410 smallDoublet *: _Generic(path, \ 3411 char *: writeFileSmallDoubleG, \ 3412 const char *: writeFileSmallDoubleG, \ 3413 FILE *: writeStreamSmallDoubleG, \ 3414 smallJsont *: writeFileSmallJsonSmallDoubleG, \ 3415 smallStringt *: writeFileSmallStringSmallDoubleG \ 3416 ), \ 3417 smallIntt *: _Generic(path, \ 3418 char *: writeFileSmallIntG, \ 3419 const char *: writeFileSmallIntG, \ 3420 FILE *: writeStreamSmallIntG, \ 3421 smallJsont *: writeFileSmallJsonSmallIntG, \ 3422 smallStringt *: writeFileSmallStringSmallIntG \ 3423 ), \ 3424 smallStringt *: _Generic(path, \ 3425 char *: writeFileSmallStringG, \ 3426 const char *: writeFileSmallStringG, \ 3427 FILE *: writeStreamSmallStringG, \ 3428 smallJsont *: writeFileSmallJsonSmallStringG, \ 3429 smallStringt *: writeFileSmallStringSmallStringG \ 3430 ), \ 3431 smallBytest *: _Generic(path, \ 3432 char *: writeFileSmallBytesG, \ 3433 const char *: writeFileSmallBytesG, \ 3434 FILE *: writeStreamSmallBytesG, \ 3435 smallJsont *: writeFileSmallJsonSmallBytesG, \ 3436 smallStringt *: writeFileSmallStringSmallBytesG \ 3437 ), \ 3438 smallDictt *: _Generic(path, \ 3439 char *: writeFileSmallDictG, \ 3440 const char *: writeFileSmallDictG, \ 3441 FILE *: writeStreamSmallDictG, \ 3442 smallJsont *: writeFileSmallJsonSmallDictG, \ 3443 smallStringt *: writeFileSmallStringSmallDictG \ 3444 ), \ 3445 smallJsont *: _Generic(path, \ 3446 char *: writeFileSmallJsonG, \ 3447 const char *: writeFileSmallJsonG, \ 3448 FILE *: writeStreamSmallJsonG, \ 3449 smallJsont *: writeFileJsonSmallJsonG, \ 3450 smallStringt *: writeFileSmallStringSmallJsonG \ 3451 ), \ 3452 char **: _Generic(path, \ 3453 char *: writeTextSG, \ 3454 const char *: writeTextSG, \ 3455 FILE *: writeTextStreamG, \ 3456 smallJsont *: writeTextSmallJsonNotSupported, \ 3457 smallStringt *: writeTextSmallStringNotSupported \ 3458 ), \ 3459 const char **: _Generic(path, \ 3460 char *: writeTextCG, \ 3461 const char *: writeTextCG, \ 3462 FILE *: writeTextStreamCG, \ 3463 smallJsont *: writeTextCCSmallJsonNotSupported, \ 3464 smallStringt *: writeTextCCSmallStringNotSupported \ 3465 ), \ 3466 const char *: _Generic(path, \ 3467 char *: writeFileFromG, \ 3468 const char *: writeFileFromG, \ 3469 FILE *: writeStreamFromG, \ 3470 default: writeFileFromG \ 3471 ), \ 3472 char *: _Generic(path, \ 3473 char *: writeFileFromG, \ 3474 const char *: writeFileFromG, \ 3475 FILE *: writeStreamFromG, \ 3476 default: writeFileFromG \ 3477 ) \ 3478 )(self, path) 3479 3480 #define writeTextG(self, path) _Generic((self), \ 3481 smallArrayt *: _Generic(path, \ 3482 char *: writeTextSmallArrayG, \ 3483 const char *: writeTextSmallArrayG, \ 3484 FILE *: writeStreamSmallArrayG, \ 3485 smallJsont *: writeTextSmallJsonSmallArrayG, \ 3486 smallStringt *: writeTextSmallStringSmallArrayG \ 3487 ), \ 3488 smallStringt *: _Generic(path, \ 3489 char *: writeFileSmallStringG, \ 3490 const char *: writeFileSmallStringG, \ 3491 FILE *: writeStreamSmallStringG, \ 3492 smallJsont *: writeFileSmallJsonSmallStringG, \ 3493 smallStringt *: writeFileSmallStringSmallStringG \ 3494 ), \ 3495 smallJsont *: _Generic(path, \ 3496 char *: writeTextSmallJsonG, \ 3497 const char *: writeTextSmallJsonG, \ 3498 FILE *: writeTextStreamSmallJsonG, \ 3499 smallJsont *: writeTextJsonSmallJsonG, \ 3500 smallStringt *: writeTextSmallStringSmallJsonG \ 3501 ), \ 3502 char **: _Generic(path, \ 3503 char *: writeTextSG, \ 3504 const char *: writeTextSG, \ 3505 FILE *: writeTextStreamG, \ 3506 smallJsont *: writeTextSmallJsonNotSupported, \ 3507 smallStringt *: writeTextSmallStringNotSupported \ 3508 ), \ 3509 const char **: _Generic(path, \ 3510 char *: writeTextCG, \ 3511 const char *: writeTextCG, \ 3512 FILE *: writeTextStreamCG, \ 3513 smallJsont *: writeTextCCSmallJsonNotSupported, \ 3514 smallStringt *: writeTextCCSmallStringNotSupported \ 3515 ), \ 3516 const char *: _Generic(path, \ 3517 char *: writeFileFromG, \ 3518 const char *: writeFileFromG, \ 3519 FILE *: writeStreamFromG, \ 3520 default: writeFileFromG \ 3521 ), \ 3522 char *: _Generic(path, \ 3523 char *: writeFileFromG, \ 3524 const char *: writeFileFromG, \ 3525 FILE *: writeStreamFromG, \ 3526 default: writeFileFromG \ 3527 ) \ 3528 )(self, path) 3529 3530 #define appendFileO(self, filePath) (self)->f->appendFile(self, filePath) 3531 #define appendFileG(self, path) _Generic((self), \ 3532 smallArrayt *: _Generic(path, \ 3533 char *: appendTextSmallArrayG, \ 3534 const char *: appendTextSmallArrayG, \ 3535 smallStringt *: appendTextSmallStringSmallArrayG, \ 3536 default: appendTextSmallArrayG), \ 3537 smallBytest *: _Generic(path, \ 3538 char *: appendFileSmallBytesG, \ 3539 const char *: appendFileSmallBytesG, \ 3540 smallStringt *: appendFileSmallStringSmallBytesG, \ 3541 default: appendFileSmallBytesG), \ 3542 smallDictt *: _Generic(path, \ 3543 char *: appendFileSmallDictG, \ 3544 const char *: appendFileSmallDictG, \ 3545 smallStringt *: appendFileSmallStringSmallDictG, \ 3546 default: appendFileSmallDictG), \ 3547 smallJsont *: _Generic(path, \ 3548 char *: appendFileSmallJsonG, \ 3549 const char *: appendFileSmallJsonG, \ 3550 smallStringt *: appendFileSmallStringSmallJsonG, \ 3551 smallJsont *: appendFileJsonSmallJsonG), \ 3552 char *: appendFileSG, \ 3553 const char *: appendFileSG, \ 3554 char **: appendTextSG, \ 3555 const char **: appendTextCG \ 3556 )(self, path) 3557 3558 //TODO typeStringSmallArray rtChar rtSmallStringt 3559 //TODO typeStringsSmallArray 3560 3561 //TODO keys rtChar rtSmallArrayt 3562 3563 #define zipO(self, keys, values) (self)->f->zip(self, keys, values) 3564 #define zipG(self, keys, values) _Generic(self, \ 3565 smallJsont *: _Generic(keys, \ 3566 smallArrayt *: _Generic(values, \ 3567 smallArrayt *: zipSmallJsonG, \ 3568 smallJsont *: zipSmallArrayJsonSmallJsonG, \ 3569 char **: zipCharSmallJsonG, \ 3570 const char **: zipCCharSmallJsonG \ 3571 ), \ 3572 smallJsont *: _Generic(values, \ 3573 smallArrayt *: zipJsonSmallArraySmallJsonG, \ 3574 smallJsont *: zipJsonSmallJsonG, \ 3575 char **: zipJsonArraySmallJsonG, \ 3576 const char **: zipJsonCArraySmallJsonG \ 3577 ), \ 3578 char **: _Generic(values, \ 3579 smallArrayt *: zipArraySmallJsonG, \ 3580 smallJsont *: zipArrayJsonSmallJsonG, \ 3581 char **: zipArrayCharSmallJsonG, \ 3582 const char **: zipArrayCCharSmallJsonG \ 3583 ), \ 3584 const char **: _Generic(values, \ 3585 smallArrayt *: zipCArraySmallJsonG, \ 3586 smallJsont *: zipCArrayJsonSmallJsonG, \ 3587 char **: zipCArrayCharSmallJsonG, \ 3588 const char **: zipCArrayCCharSmallJsonG \ 3589 ) \ 3590 ), \ 3591 smallDictt *: _Generic(keys, \ 3592 smallArrayt *: _Generic(values, \ 3593 smallArrayt *: zipSmallDictG, \ 3594 smallJsont *: zipSmallJsonSmallDictG, \ 3595 char **: zipVArraySmallDictG, \ 3596 const char **: zipVCArraySmallDictG \ 3597 ), \ 3598 smallJsont *: _Generic(values, \ 3599 smallArrayt *: zipSmallJsonSmallArraySmallDictG, \ 3600 smallJsont *: zipSmallJsonSmallJsonSmallDictG, \ 3601 char **: zipSmallJsonVArraySmallDictG, \ 3602 const char **: zipSmallJsonVCArraySmallDictG \ 3603 ), \ 3604 char **: _Generic(values, \ 3605 smallArrayt *: zipArraySmallDictG, \ 3606 smallJsont *: zipArraySmallJsonSmallDictG, \ 3607 char **: zipArrayArraySmallDictG, \ 3608 const char **: zipArrayCArraySmallDictG \ 3609 ), \ 3610 const char **: _Generic(values, \ 3611 smallArrayt *: zipCArraySmallDictG, \ 3612 smallJsont *: zipCArraySmallJsonSmallDictG, \ 3613 char **: zipCArrayArraySmallDictG, \ 3614 const char **: zipCArrayCArraySmallDictG \ 3615 ) \ 3616 ), \ 3617 smallArrayt *: _Generic(keys, \ 3618 smallArrayt *: _Generic(values, \ 3619 smallArrayt *: zipSmallArrayG, \ 3620 smallJsont *: zipSmallJsonSmallArrayG, \ 3621 char **: zipCharSmallArrayG, \ 3622 const char **: zipCCharSmallArrayG \ 3623 ), \ 3624 smallJsont *: _Generic(values, \ 3625 smallArrayt *: zipSmallJsonSmallArraySmallArrayG, \ 3626 smallJsont *: zipSmallJsonSmallJsonSmallArrayG, \ 3627 char **: zipSmallJsonCharSmallArrayG, \ 3628 const char **: zipSmallJsonCCharSmallArrayG \ 3629 ), \ 3630 char **: _Generic(values, \ 3631 smallArrayt *: zipArraySmallArrayG, \ 3632 smallJsont *: zipArraySmallJsonSmallArrayG, \ 3633 char **: zipArrayCharSmallArrayG, \ 3634 const char **: zipArrayCCharSmallArrayG \ 3635 ), \ 3636 const char **: _Generic(values, \ 3637 smallArrayt *: zipCArraySmallArrayG, \ 3638 smallJsont *: zipCArraySmallJsonSmallArrayG, \ 3639 char **: zipCArrayCharSmallArrayG, \ 3640 const char **: zipCArrayCCharSmallArrayG \ 3641 ) \ 3642 ) \ 3643 )(self, keys, values) 3644 3645 #define walkDirG(returnType, path) _Generic((returnType), \ 3646 char **: walkDir, \ 3647 smallArrayt *: _Generic(path, \ 3648 char *: walkDirO, \ 3649 const char *: walkDirO, \ 3650 smallJsont *: walkDirSmallJsonO, \ 3651 smallStringt *: walkDirSmallStringO \ 3652 ) \ 3653 )(path) 3654 3655 #define walkDirDirG(returnType, path) _Generic((returnType), \ 3656 char **: walkDirDir, \ 3657 smallArrayt *: _Generic(path, \ 3658 char *: walkDirDirO, \ 3659 const char *: walkDirDirO, \ 3660 smallJsont *: walkDirDirSmallJsonO, \ 3661 smallStringt *: walkDirDirSmallStringO \ 3662 )\ 3663 )(path) 3664 3665 #define readDirG(returnType, path) _Generic((returnType), \ 3666 char **: readDir, \ 3667 smallArrayt *: _Generic(path, \ 3668 char *: readDirO, \ 3669 const char *: readDirO, \ 3670 smallJsont *: readDirSmallJsonO, \ 3671 smallStringt *: readDirSmallStringO \ 3672 )\ 3673 )(path) 3674 3675 #define readDirDirG(returnType, path) _Generic((returnType), \ 3676 char **: readDirDir, \ 3677 smallArrayt *: _Generic(path, \ 3678 char *: readDirDirO, \ 3679 const char *: readDirDirO, \ 3680 smallJsont *: readDirDirSmallJsonO, \ 3681 smallStringt *: readDirDirSmallStringO \ 3682 )\ 3683 )(path) 3684 3685 #define walkDirAllG(returnType, path) _Generic((returnType), \ 3686 char **: walkDirAll, \ 3687 smallArrayt *: _Generic(path, \ 3688 char *: walkDirAllO, \ 3689 const char *: walkDirAllO, \ 3690 smallJsont *: walkDirAllSmallJsonO, \ 3691 smallStringt *: walkDirAllSmallStringO \ 3692 ) \ 3693 )(path) 3694 3695 #define readDirAllG(returnType, path) _Generic((returnType), \ 3696 char **: readDirAll, \ 3697 smallArrayt *: _Generic(path, \ 3698 char *: readDirAllO, \ 3699 const char *: readDirAllO, \ 3700 smallJsont *: readDirAllSmallJsonO, \ 3701 smallStringt *: readDirAllSmallStringO \ 3702 )\ 3703 )(path) 3704 3705 #define mkdirParentsG(path) _Generic((path), \ 3706 char *: mkdirParents, \ 3707 const char *: mkdirParents, \ 3708 smallJsont *: mkdirParentsSmallJsonO, \ 3709 smallStringt *: mkdirParentsO \ 3710 )(path) 3711 3712 #define rmAllG(path) _Generic((path), \ 3713 char *: rmAll, \ 3714 const char *: rmAll, \ 3715 smallJsont *: rmAllSmallJsonO, \ 3716 smallStringt *: rmAllO \ 3717 )(path) 3718 3719 #define copyG(path1, path2) _Generic((path1), \ 3720 char *: _Generic((path2), \ 3721 char *: copy, \ 3722 const char *: copy, \ 3723 smallJsont *: copySSmallJsonO, \ 3724 smallStringt *: copySO), \ 3725 const char *: _Generic((path2), \ 3726 char *: copy, \ 3727 const char *: copy, \ 3728 smallJsont *: copySSmallJsonO, \ 3729 smallStringt *: copySO), \ 3730 smallJsont *: _Generic((path2), \ 3731 char *: copySmallJsonOS, \ 3732 const char*: copySmallJsonOS, \ 3733 smallJsont *: copySmallJsonSmallJson, \ 3734 smallStringt *: copySmallJsonO), \ 3735 smallStringt *: _Generic((path2), \ 3736 char *: copyOS, \ 3737 const char*: copyOS, \ 3738 smallJsont *: copyOSmallJson, \ 3739 smallStringt *: copyO) \ 3740 )(path1, path2) 3741 3742 #define randomSG(returnType, length) _Generic((returnType), \ 3743 char *: randomS, \ 3744 smallJsont *: randomSmallJsonO, \ 3745 smallStringt *: randomSO \ 3746 )(length) 3747 3748 #define randomAlphaNumSG(returnType, length) _Generic((returnType), \ 3749 char *: randomAlphaNumS, \ 3750 smallJsont *: randomAlphaNumSmallJsonO, \ 3751 smallStringt *: randomAlphaNumSO \ 3752 )(length) 3753 3754 #define readG(returnType) _Generic((returnType), \ 3755 char *: readS, \ 3756 smallJsont *: readSmallJsonO, \ 3757 smallStringt *: readO \ 3758 )() 3759 3760 #define readLineG(returnType, fp) _Generic((returnType), \ 3761 char *: readLine, \ 3762 smallJsont *: readLineSmallJsonO, \ 3763 smallStringt *: readLineO \ 3764 )(fp) 3765 3766 #define dupG(self) _Generic((self), \ 3767 smallArrayt*: duplicateSmallArrayG, \ 3768 smallBoolt*: duplicateSmallBoolG, \ 3769 smallBytest*: duplicateSmallBytesG, \ 3770 smallContainert*: duplicateSmallContainerG, \ 3771 smallDictt*: duplicateSmallDictG, \ 3772 smallDoublet*: duplicateSmallDoubleG, \ 3773 smallIntt*: duplicateSmallIntG, \ 3774 smallJsont*: duplicateSmallJsonG, \ 3775 smallStringt*: duplicateSmallStringG, \ 3776 undefinedt*: duplicateUndefinedG, \ 3777 baset*: duplicateBaseG, \ 3778 char *: dupS,\ 3779 const char *: dupS,\ 3780 char **: listDupS, \ 3781 const char **: listDupCG, \ 3782 btt: dupB, \ 3783 btt*: dupPB \ 3784 )(self) 3785 3786 #define replaceO(self, olds, news, max) (self)->f->replace(self, olds, news, max) 3787 #define replaceG(self, olds, news, max) _Generic((self), \ 3788 char *: _Generic(olds, \ 3789 char *: _Generic(news, \ 3790 char *: replaceS, \ 3791 const char *: replaceS, \ 3792 char: replaceSCharS, \ 3793 int: replaceSCharS, \ 3794 default: replaceS \ 3795 ) , \ 3796 const char *: _Generic(news, \ 3797 char *: replaceS, \ 3798 const char *: replaceS, \ 3799 char: replaceSCharS, \ 3800 int: replaceSCharS, \ 3801 default: replaceS \ 3802 ), \ 3803 char: _Generic(news, \ 3804 char *: replaceCharSS, \ 3805 const char *: replaceCharSS, \ 3806 char: replaceCharCharS, \ 3807 int: replaceCharCharS, \ 3808 default: replaceCharSS \ 3809 ), \ 3810 int: _Generic(news, \ 3811 char *: replaceCharSS, \ 3812 const char *: replaceCharSS, \ 3813 char: replaceCharCharS, \ 3814 int: replaceCharCharS, \ 3815 default: replaceCharSS \ 3816 ), \ 3817 default: replaceS \ 3818 ), \ 3819 char **: _Generic(olds, \ 3820 char *: _Generic(news, \ 3821 char *: iReplaceS, \ 3822 const char *: iReplaceS, \ 3823 char: iReplaceSCharS, \ 3824 int: iReplaceSCharS, \ 3825 default: iReplaceS \ 3826 ) , \ 3827 const char *: _Generic(news, \ 3828 char *: iReplaceS, \ 3829 const char *: iReplaceS, \ 3830 char: iReplaceSCharS, \ 3831 int: iReplaceSCharS, \ 3832 default: iReplaceS \ 3833 ), \ 3834 char: _Generic(news, \ 3835 char *: iReplaceCharSS, \ 3836 const char *: iReplaceCharSS, \ 3837 char: iReplaceCharCharS, \ 3838 int: iReplaceCharCharS, \ 3839 default: iReplaceCharSS \ 3840 ) , \ 3841 int: _Generic(news, \ 3842 char *: iReplaceCharSS, \ 3843 const char *: iReplaceCharSS, \ 3844 char: iReplaceCharCharS, \ 3845 int: iReplaceCharCharS, \ 3846 default: iReplaceCharSS \ 3847 ), \ 3848 default: iReplaceS \ 3849 ), \ 3850 smallJsont *: _Generic(olds, \ 3851 char *: _Generic(news, \ 3852 char *: replaceSmallJsonG,\ 3853 const char *: replaceSmallJsonG,\ 3854 char: replaceSCharSmallJsonG,\ 3855 int: replaceSCharSmallJsonG,\ 3856 smallJsont *: replaceSJsonSmallJsonG, \ 3857 smallStringt *: replaceSSmallStringSmallJsonG \ 3858 ), \ 3859 const char *: _Generic(news, \ 3860 char *: replaceSmallJsonG,\ 3861 const char *: replaceSmallJsonG,\ 3862 char: replaceSCharSmallJsonG,\ 3863 int: replaceSCharSmallJsonG,\ 3864 smallJsont *: replaceSJsonSmallJsonG, \ 3865 smallStringt *: replaceSSmallStringSmallJsonG \ 3866 ), \ 3867 char: _Generic(news, \ 3868 char *: replaceCharSSmallJsonG, \ 3869 const char *: replaceCharSSmallJsonG, \ 3870 char: replaceCharCharSmallJsonG, \ 3871 int: replaceCharCharSmallJsonG, \ 3872 smallJsont *: replaceCharJsonSmallJsonG, \ 3873 smallStringt *: replaceCharSmallStringSmallJsonG \ 3874 ), \ 3875 int: _Generic(news, \ 3876 char *: replaceCharSSmallJsonG, \ 3877 const char *: replaceCharSSmallJsonG, \ 3878 char: replaceCharCharSmallJsonG, \ 3879 int: replaceCharCharSmallJsonG, \ 3880 smallJsont *: replaceCharJsonSmallJsonG, \ 3881 smallStringt *: replaceCharSmallStringSmallJsonG \ 3882 ), \ 3883 smallJsont *: _Generic(news, \ 3884 char *: replaceJsonSSmallJsonG, \ 3885 const char *: replaceJsonSSmallJsonG, \ 3886 char: replaceJsonCharSmallJsonG, \ 3887 int: replaceJsonCharSmallJsonG, \ 3888 smallJsont *: replaceJsonJsonSmallJsonG, \ 3889 smallStringt *: replaceJsonSmallStringSmallJsonG \ 3890 ), \ 3891 smallStringt *: _Generic(news, \ 3892 char *: replaceSmallStringSSmallJsonG, \ 3893 const char *: replaceSmallStringSSmallJsonG, \ 3894 char: replaceSmallStringCharSmallJsonG, \ 3895 int: replaceSmallStringCharSmallJsonG, \ 3896 smallJsont *: replaceSmallStringJsonSmallJsonG, \ 3897 smallStringt *: replaceSmallStringSmallStringSmallJsonG \ 3898 ) \ 3899 ), \ 3900 smallStringt *: _Generic(olds, \ 3901 char *: _Generic(news, \ 3902 char *: replaceSmallStringG,\ 3903 const char *: replaceSmallStringG,\ 3904 char: replaceSCharSmallStringG,\ 3905 int: replaceSCharSmallStringG,\ 3906 smallJsont *: replaceSSmallJsonSmallStringG, \ 3907 smallStringt *: replaceSSmallStringSmallStringG \ 3908 ), \ 3909 const char *: _Generic(news, \ 3910 char *: replaceSmallStringG,\ 3911 const char *: replaceSmallStringG,\ 3912 char: replaceSCharSmallStringG,\ 3913 int: replaceSCharSmallStringG,\ 3914 smallJsont *: replaceSSmallJsonSmallStringG, \ 3915 smallStringt *: replaceSSmallStringSmallStringG \ 3916 ), \ 3917 char: _Generic(news, \ 3918 char *: replaceCharSSmallStringG, \ 3919 const char *: replaceCharSSmallStringG, \ 3920 char: replaceCharCharSmallStringG, \ 3921 int: replaceCharCharSmallStringG, \ 3922 smallJsont *: replaceCharSmallJsonSmallStringG, \ 3923 smallStringt *: replaceCharSmallStringSmallStringG \ 3924 ), \ 3925 int: _Generic(news, \ 3926 char *: replaceCharSSmallStringG, \ 3927 const char *: replaceCharSSmallStringG, \ 3928 char: replaceCharCharSmallStringG, \ 3929 int: replaceCharCharSmallStringG, \ 3930 smallJsont *: replaceCharSmallJsonSmallStringG, \ 3931 smallStringt *: replaceCharSmallStringSmallStringG \ 3932 ), \ 3933 smallJsont *: _Generic(news, \ 3934 char *: replaceSmallJsonSSmallStringG, \ 3935 const char *: replaceSmallJsonSSmallStringG, \ 3936 char: replaceSmallJsonCharSmallStringG, \ 3937 int: replaceSmallJsonCharSmallStringG, \ 3938 smallJsont *: replaceSmallJsonSmallJsonSmallStringG, \ 3939 smallStringt *: replaceSmallJsonSmallStringSmallStringG \ 3940 ), \ 3941 smallStringt *: _Generic(news, \ 3942 char *: replaceSmallStringSSmallStringG, \ 3943 const char *: replaceSmallStringSSmallStringG, \ 3944 char: replaceSmallStringCharSmallStringG, \ 3945 int: replaceSmallStringCharSmallStringG, \ 3946 smallJsont *: replaceSmallStringSmallJsonSmallStringG, \ 3947 smallStringt *: replaceSmallStringSmallStringSmallStringG \ 3948 ) \ 3949 ) \ 3950 )(self, olds, news, max) 3951 3952 #define icReplaceO(self, olds, news, max) (self)->f->icReplace(self, olds, news, max) 3953 #define icReplaceG(self, olds, news, max) _Generic((self), \ 3954 char *: _Generic(olds, \ 3955 char *: _Generic(news, \ 3956 char *: icReplaceS, \ 3957 const char *: icReplaceS, \ 3958 char: icReplaceSCharS, \ 3959 int: icReplaceSCharS, \ 3960 default: icReplaceS \ 3961 ) , \ 3962 const char *: _Generic(news, \ 3963 char *: icReplaceS, \ 3964 const char *: icReplaceS, \ 3965 char: icReplaceSCharS, \ 3966 int: icReplaceSCharS, \ 3967 default: icReplaceS \ 3968 ), \ 3969 char: _Generic(news, \ 3970 char *: icReplaceCharSS, \ 3971 const char *: icReplaceCharSS, \ 3972 char: icReplaceCharCharS, \ 3973 int: icReplaceCharCharS, \ 3974 default: icReplaceCharSS \ 3975 ), \ 3976 int: _Generic(news, \ 3977 char *: icReplaceCharSS, \ 3978 const char *: icReplaceCharSS, \ 3979 char: icReplaceCharCharS, \ 3980 int: icReplaceCharCharS, \ 3981 default: icReplaceCharSS \ 3982 ), \ 3983 default: icReplaceS \ 3984 ), \ 3985 char **: _Generic(olds, \ 3986 char *: _Generic(news, \ 3987 char *: iicReplaceS, \ 3988 const char *: iicReplaceS, \ 3989 char: iicReplaceSCharS, \ 3990 int: iicReplaceSCharS, \ 3991 default: iicReplaceS \ 3992 ) , \ 3993 const char *: _Generic(news, \ 3994 char *: iicReplaceS, \ 3995 const char *: iicReplaceS, \ 3996 char: iicReplaceSCharS, \ 3997 int: iicReplaceSCharS, \ 3998 default: iicReplaceS \ 3999 ), \ 4000 char: _Generic(news, \ 4001 char *: iicReplaceCharSS, \ 4002 const char *: iicReplaceCharSS, \ 4003 char: iicReplaceCharCharS, \ 4004 int: iicReplaceCharCharS, \ 4005 default: iicReplaceCharSS \ 4006 ) , \ 4007 int: _Generic(news, \ 4008 char *: iicReplaceCharSS, \ 4009 const char *: iicReplaceCharSS, \ 4010 char: iicReplaceCharCharS, \ 4011 int: iicReplaceCharCharS, \ 4012 default: iicReplaceCharSS \ 4013 ), \ 4014 default: iicReplaceS \ 4015 ), \ 4016 smallJsont *: _Generic(olds, \ 4017 char *: _Generic(news, \ 4018 char *: icReplaceSmallJsonG,\ 4019 const char *: icReplaceSmallJsonG,\ 4020 char: icReplaceSCharSmallJsonG,\ 4021 int: icReplaceSCharSmallJsonG,\ 4022 smallJsont *: icReplaceSJsonSmallJsonG, \ 4023 smallStringt *: icReplaceSSmallStringSmallJsonG, \ 4024 default: icReplaceSmallJsonG \ 4025 ), \ 4026 const char *: _Generic(news, \ 4027 char *: icReplaceSmallJsonG,\ 4028 const char *: icReplaceSmallJsonG,\ 4029 char: icReplaceSCharSmallJsonG,\ 4030 int: icReplaceSCharSmallJsonG,\ 4031 smallJsont *: icReplaceSJsonSmallJsonG, \ 4032 smallStringt *: icReplaceSSmallStringSmallJsonG, \ 4033 default: icReplaceSmallJsonG \ 4034 ), \ 4035 char: _Generic(news, \ 4036 char *: icReplaceCharSSmallJsonG, \ 4037 const char *: icReplaceCharSSmallJsonG, \ 4038 char: icReplaceCharCharSmallJsonG, \ 4039 int: icReplaceCharCharSmallJsonG, \ 4040 smallJsont *: icReplaceCharJsonSmallJsonG, \ 4041 smallStringt *: icReplaceCharSmallStringSmallJsonG, \ 4042 default: icReplaceCharSSmallJsonG \ 4043 ), \ 4044 int: _Generic(news, \ 4045 char *: icReplaceCharSSmallJsonG, \ 4046 const char *: icReplaceCharSSmallJsonG, \ 4047 char: icReplaceCharCharSmallJsonG, \ 4048 int: icReplaceCharCharSmallJsonG, \ 4049 smallJsont *: icReplaceCharJsonSmallJsonG, \ 4050 smallStringt *: icReplaceCharSmallStringSmallJsonG, \ 4051 default: icReplaceCharSSmallJsonG \ 4052 ), \ 4053 smallJsont *: _Generic(news, \ 4054 char *: icReplaceJsonSSmallJsonG, \ 4055 const char *: icReplaceJsonSSmallJsonG, \ 4056 char: icReplaceJsonCharSmallJsonG, \ 4057 smallJsont *: icReplaceJsonJsonSmallJsonG, \ 4058 smallStringt *: icReplaceJsonSmallStringSmallJsonG, \ 4059 default: icReplaceCharSSmallJsonG \ 4060 ), \ 4061 smallStringt *: _Generic(news, \ 4062 char *: icReplaceSmallStringSSmallJsonG, \ 4063 const char *: icReplaceSmallStringSSmallJsonG, \ 4064 char: icReplaceSmallStringCharSmallJsonG, \ 4065 smallJsont *: icReplaceSmallStringJsonSmallJsonG, \ 4066 smallStringt *: icReplaceSmallStringSmallStringSmallJsonG, \ 4067 default: icReplaceSmallStringSSmallJsonG \ 4068 ) \ 4069 ), \ 4070 smallStringt *: _Generic(olds, \ 4071 char *: _Generic(news, \ 4072 char *: icReplaceSmallStringG,\ 4073 const char *: icReplaceSmallStringG,\ 4074 char: icReplaceSCharSmallStringG,\ 4075 int: icReplaceSCharSmallStringG,\ 4076 smallJsont *: icReplaceSSmallJsonSmallStringG, \ 4077 smallStringt *: icReplaceSSmallStringSmallStringG, \ 4078 default: icReplaceSmallStringG \ 4079 ), \ 4080 const char *: _Generic(news, \ 4081 char *: icReplaceSmallStringG,\ 4082 const char *: icReplaceSmallStringG,\ 4083 char: icReplaceSCharSmallStringG,\ 4084 int: icReplaceSCharSmallStringG,\ 4085 smallJsont *: icReplaceSSmallJsonSmallStringG, \ 4086 smallStringt *: icReplaceSSmallStringSmallStringG, \ 4087 default: icReplaceSmallStringG \ 4088 ), \ 4089 char: _Generic(news, \ 4090 char *: icReplaceCharSSmallStringG, \ 4091 const char *: icReplaceCharSSmallStringG, \ 4092 char: icReplaceCharCharSmallStringG, \ 4093 int: icReplaceCharCharSmallStringG, \ 4094 smallJsont *: icReplaceCharSmallJsonSmallStringG, \ 4095 smallStringt *: icReplaceCharSmallStringSmallStringG, \ 4096 default: icReplaceCharSSmallStringG \ 4097 ), \ 4098 int: _Generic(news, \ 4099 char *: icReplaceCharSSmallStringG, \ 4100 const char *: icReplaceCharSSmallStringG, \ 4101 char: icReplaceCharCharSmallStringG, \ 4102 int: icReplaceCharCharSmallStringG, \ 4103 smallJsont *: icReplaceCharSmallJsonSmallStringG, \ 4104 smallStringt *: icReplaceCharSmallStringSmallStringG, \ 4105 default: icReplaceCharSSmallStringG \ 4106 ), \ 4107 smallJsont *: _Generic(news, \ 4108 char *: icReplaceSmallJsonSSmallStringG, \ 4109 const char *: icReplaceSmallJsonSSmallStringG, \ 4110 char: icReplaceSmallJsonCharSmallStringG, \ 4111 smallJsont *: icReplaceSmallJsonSmallJsonSmallStringG, \ 4112 smallStringt *: icReplaceSmallJsonSmallStringSmallStringG, \ 4113 default: icReplaceSmallJsonSSmallStringG \ 4114 ), \ 4115 smallStringt *: _Generic(news, \ 4116 char *: icReplaceSmallStringSSmallStringG, \ 4117 const char *: icReplaceSmallStringSSmallStringG, \ 4118 char: icReplaceSmallStringCharSmallStringG, \ 4119 smallJsont *: icReplaceSmallStringSmallJsonSmallStringG, \ 4120 smallStringt *: icReplaceSmallStringSmallStringSmallStringG, \ 4121 default: icReplaceSmallStringSSmallStringG \ 4122 ) \ 4123 ) \ 4124 )(self, olds, news, max) 4125 4126 /** 4127 * is self a libsheepy object 4128 */ 4129 #define isLSheepyObject(self) _Generic((self), default: 0,\ 4130 baset *: 1,\ 4131 smallArrayt*: 1,\ 4132 smallBoolt*: 1,\ 4133 smallBytest*: 1,\ 4134 smallDictt *: 1,\ 4135 smallDoublet *: 1,\ 4136 smallIntt *: 1,\ 4137 smallJsont *: 1,\ 4138 smallStringt *: 1,\ 4139 smallContainert *: 1,\ 4140 undefinedt *: 1\ 4141 ) 4142 4143 /** 4144 * return true when self value and obj value are equal 4145 * Checks if self is NULL before calling the methods 4146 */ 4147 #define eqG(self, obj) FUNC(\ 4148 bool UNIQVAR(r);\ 4149 /* if self is NULL and sheepy object, return false */\ 4150 if (isLSheepyObject(self) and !(self)) UNIQVAR(r) = false;\ 4151 else UNIQVAR(r) = eqDirectG(self, obj);\ 4152 /*return*/UNIQVAR(r);\ 4153 ) 4154 4155 /** 4156 * return true when self value and obj value are equal 4157 * Directly calls the methods without NULL check 4158 */ 4159 #define eqDirectG(self, obj) _Generic((self), \ 4160 char: _Generic(obj, \ 4161 char *: eqCharS, \ 4162 const char *: eqCharS, \ 4163 char: eqCharChar, \ 4164 baset*: equalChaOG, \ 4165 bool: equalChaBoolG, \ 4166 double: equalChaDoubleG, \ 4167 int64_t: equalChaInt64G, \ 4168 int32_t: equalChaInt32G, \ 4169 uint32_t: equalChaUint32G, \ 4170 uint64_t: equalChaUint64G, \ 4171 smallBytest*: equalChaSmallBytesG, \ 4172 smallDoublet*: equalChaSmallDoubleG, \ 4173 smallIntt*: equalChaSmallIntG, \ 4174 smallJsont*: equalChaSmallJsonG, \ 4175 smallStringt*: equalChaSmallStringG, \ 4176 default: notEqualCharG \ 4177 ) , \ 4178 char *: _Generic((obj), \ 4179 char *: eqS, \ 4180 const char *: eqS, \ 4181 char: eqSChar, \ 4182 baset*: equalCharOG, \ 4183 bool: equalCharBoolG, \ 4184 double: equalCharDoubleG, \ 4185 int64_t: equalCharInt64G, \ 4186 int32_t: equalCharInt32G, \ 4187 uint32_t: equalCharUint32G, \ 4188 uint64_t: equalCharUint64G, \ 4189 smallBoolt*: equalCharSmallBoolG, \ 4190 smallBytest*: equalCharSmallBytesG, \ 4191 smallDoublet*: equalCharSmallDoubleG, \ 4192 smallIntt*: equalCharSmallIntG, \ 4193 smallJsont*: equalCharPSmallJsonG, \ 4194 smallStringt*: equalCharPSmallStringG, \ 4195 default: notEqualOG), \ 4196 const char *: _Generic((obj), \ 4197 char *: eqS, \ 4198 const char *: eqS, \ 4199 char: eqSChar, \ 4200 baset*: equalCharOG, \ 4201 bool: equalCharBoolG, \ 4202 double: equalCharDoubleG, \ 4203 int64_t: equalCharInt64G, \ 4204 int32_t: equalCharInt32G, \ 4205 uint32_t: equalCharUint32G, \ 4206 uint64_t: equalCharUint64G, \ 4207 smallBoolt*: equalCharSmallBoolG, \ 4208 smallBytest*: equalCharSmallBytesG, \ 4209 smallDoublet*: equalCharSmallDoubleG, \ 4210 smallIntt*: equalCharSmallIntG, \ 4211 smallJsont*: equalCharPSmallJsonG, \ 4212 smallStringt*: equalCharPSmallStringG, \ 4213 default: notEqualCCOG), \ 4214 char **: _Generic((obj) , \ 4215 char: notEqualOCharG, \ 4216 char **: listEqS, \ 4217 const char **: listEqCG, \ 4218 baset*: equalArrayOG, \ 4219 bool: notEqualOBoolG, \ 4220 double: notEqualDoubleG, \ 4221 int64_t: notEqualOInt64G, \ 4222 int32_t: notEqualOInt32G, \ 4223 uint32_t: notEqualOUint32G, \ 4224 uint64_t: notEqualOUint64G, \ 4225 smallJsont*: equalArraySmallJsonG, \ 4226 smallArrayt*: equalArraySmallArrayG, \ 4227 default: notEqualOG), \ 4228 const char **: _Generic((obj) , \ 4229 char: notEqualOCharG, \ 4230 char **: listEqC1G, \ 4231 const char **: listEqCCG, \ 4232 baset*: equalCArrayOG, \ 4233 bool: notEqualOBoolG, \ 4234 double: notEqualDoubleG, \ 4235 int64_t: notEqualOInt64G, \ 4236 int32_t: notEqualOInt32G, \ 4237 uint32_t: notEqualOUint32G, \ 4238 uint64_t: notEqualOUint64G, \ 4239 smallJsont*: equalCArraySmallJsonG, \ 4240 smallArrayt*: equalCArraySmallArrayG, \ 4241 default: notEqualOG), \ 4242 baset*: _Generic((obj), \ 4243 char: equalOChaG, \ 4244 char *: equalOCharG, \ 4245 const char *: equalOCharG, \ 4246 char **: equalOArrayG, \ 4247 const char **: equalOCArrayG, \ 4248 baset*: equalOOG, \ 4249 bool: equalOBoolG, \ 4250 double: equalODoubleG, \ 4251 int64_t: equalOInt64G, \ 4252 int32_t: equalOInt32G, \ 4253 uint32_t: equalOUint32G, \ 4254 uint64_t: equalOUint64G, \ 4255 smallArrayt*: equalOSmallArrayG, \ 4256 smallBoolt*: equalOSmallBoolG, \ 4257 smallBytest*: equalOSmallBytesG, \ 4258 smallDoublet*: equalOSmallDoubleG, \ 4259 smallDictt*: equalOSmallDictG, \ 4260 smallIntt*: equalOSmallIntG, \ 4261 smallJsont*: equalOSmallJsonG, \ 4262 smallStringt*: equalOSmallStringG, \ 4263 default: notEqualOG), \ 4264 bool: _Generic((obj), \ 4265 char: equalBoolChaG, \ 4266 char *: equalBoolCharG, \ 4267 const char *: equalBoolCharG, \ 4268 baset*: equalBoolOG, \ 4269 bool: equalBoolFG, \ 4270 double: equalBoolDoubleG, \ 4271 int64_t: equalBoolInt64G, \ 4272 int32_t: equalBoolInt32G, \ 4273 uint32_t: equalBoolUint32G, \ 4274 uint64_t: equalBoolUint64G, \ 4275 smallBoolt*: equalBoolSmallBoolG, \ 4276 smallBytest*: equalBoolSmallBytesG, \ 4277 smallDoublet*: equalBoolSmallDoubleG, \ 4278 smallIntt*: equalBoolSmallIntG, \ 4279 smallJsont*: equalBoolSmallJsonG, \ 4280 smallStringt*: equalBoolSmallStringG, \ 4281 default: notEqualBoolOG), \ 4282 double: _Generic((obj), \ 4283 char: equalDoubleChaG, \ 4284 char *: equalDoubleCharG, \ 4285 const char *: equalDoubleCharG, \ 4286 baset*: equalDoubleBaseG, \ 4287 bool: equalDoubleBoolG, \ 4288 double: equalDoubleFG, \ 4289 int64_t: equalDoubleInt64G, \ 4290 int32_t: equalDoubleInt32G, \ 4291 uint32_t: equalDoubleUint32G, \ 4292 uint64_t: equalDoubleUint64G, \ 4293 smallBoolt*: equalDoubleSmallBoolG, \ 4294 smallBytest*: equalDoubleSmallBytesG, \ 4295 smallDoublet*: equalDoubleSmallDoubleG, \ 4296 smallIntt*: equalDoubleSmallIntG, \ 4297 smallJsont*: equalDoubleSmallJsonG, \ 4298 smallStringt*: equalDoubleSmallStringG, \ 4299 default: notEqualDoubleOG), \ 4300 int64_t: _Generic((obj), \ 4301 char: equalInt64ChaG, \ 4302 char *: equalInt64CharG, \ 4303 const char *: equalInt64CharG, \ 4304 baset*: equalInt64BaseG, \ 4305 bool: equalInt64BoolG, \ 4306 double: equalInt64DoubleG, \ 4307 int64_t: equalInt64FG, \ 4308 int32_t: equalInt64Int32G, \ 4309 uint32_t: equalInt64Uint32G, \ 4310 uint64_t: equalInt64Uint64G, \ 4311 smallBoolt*: equalInt64SmallBoolG, \ 4312 smallBytest*: equalInt64SmallBytesG, \ 4313 smallDoublet*: equalInt64SmallDoubleG, \ 4314 smallIntt*: equalInt64SmallIntG, \ 4315 smallJsont*: equalInt64SmallJsonG, \ 4316 smallStringt*: equalInt64SmallStringG, \ 4317 default: notEqualInt64OG), \ 4318 int32_t: _Generic((obj), \ 4319 char: equalInt32ChaG, \ 4320 char *: equalInt32CharG, \ 4321 const char *: equalInt32CharG, \ 4322 baset*: equalInt32BaseG, \ 4323 bool: equalInt32BoolG, \ 4324 double: equalInt32DoubleG, \ 4325 int64_t: equalInt32Int64G, \ 4326 int32_t: equalInt32FG, \ 4327 uint32_t: equalInt32Uint32G, \ 4328 uint64_t: equalInt32Uint64G, \ 4329 smallBoolt*: equalInt32SmallBoolG, \ 4330 smallBytest*: equalInt32SmallBytesG, \ 4331 smallDoublet*: equalInt32SmallDoubleG, \ 4332 smallIntt*: equalInt32SmallIntG, \ 4333 smallJsont*: equalInt32SmallJsonG, \ 4334 smallStringt*: equalInt32SmallStringG, \ 4335 default: notEqualInt32OG), \ 4336 uint32_t: _Generic((obj), \ 4337 char: equalUint32ChaG, \ 4338 char *: equalUint32CharG, \ 4339 const char *: equalUint32CharG, \ 4340 baset*: equalUint32BaseG, \ 4341 bool: equalUint32BoolG, \ 4342 double: equalUint32DoubleG, \ 4343 int64_t: equalUint32Int64G, \ 4344 int32_t: equalUint32Int32G, \ 4345 uint32_t: equalUint32FG, \ 4346 uint64_t: equalUint32Uint64G, \ 4347 smallBoolt*: equalUint32SmallBoolG, \ 4348 smallBytest*: equalUint32SmallBytesG, \ 4349 smallDoublet*: equalUint32SmallDoubleG, \ 4350 smallIntt*: equalUint32SmallIntG, \ 4351 smallJsont*: equalUint32SmallJsonG, \ 4352 smallStringt*: equalUint32SmallStringG, \ 4353 default: notEqualUint32OG), \ 4354 uint64_t: _Generic((obj), \ 4355 char: equalUint64ChaG, \ 4356 char *: equalUint64CharG, \ 4357 const char *: equalUint64CharG, \ 4358 baset*: equalUint64BaseG, \ 4359 bool: equalUint64BoolG, \ 4360 double: equalUint64DoubleG, \ 4361 int64_t: equalUint64Int64G, \ 4362 int32_t: equalUint64Int32G, \ 4363 uint32_t: equalUint64Uint32G, \ 4364 uint64_t: equalUint64FG, \ 4365 smallBoolt*: equalUint64SmallBoolG, \ 4366 smallBytest*: equalUint64SmallBytesG, \ 4367 smallDoublet*: equalUint64SmallDoubleG, \ 4368 smallIntt*: equalUint64SmallIntG, \ 4369 smallJsont*: equalUint64SmallJsonG, \ 4370 smallStringt*: equalUint64SmallStringG, \ 4371 default: notEqualUint64OG), \ 4372 smallArrayt*: _Generic((obj), \ 4373 char: notEqualOCharG, \ 4374 char **: equalSmallArrayArrayG, \ 4375 const char **: equalSmallArrayCArrayG, \ 4376 baset*: equalSmallArrayBaseG, \ 4377 bool: notEqualOBoolG, \ 4378 double: notEqualDoubleG, \ 4379 int64_t: notEqualOInt64G, \ 4380 int32_t: notEqualOInt32G, \ 4381 uint32_t: notEqualOUint32G, \ 4382 uint64_t: notEqualOUint32G, \ 4383 smallJsont*: equalSmallArraySmallJsonG, \ 4384 smallArrayt*: equalSmallArrayG, \ 4385 default: notEqualOG), \ 4386 smallBoolt*: _Generic((obj), \ 4387 char: notEqualOCharG, \ 4388 char *: equalSmallBoolCharG, \ 4389 const char *: equalSmallBoolCharG, \ 4390 baset*: equalSmallBoolBaseG, \ 4391 bool: equalSmallBoolBoolG, \ 4392 double: equalSmallBoolDoubleG, \ 4393 int64_t: equalSmallBoolInt64G, \ 4394 int32_t: equalSmallBoolInt32G, \ 4395 uint32_t: equalSmallBoolUint32G, \ 4396 uint64_t: equalSmallBoolUint64G, \ 4397 smallBoolt*: equalSmallBoolFG, \ 4398 smallBytest*: equalSmallBoolSmallBytesG, \ 4399 smallDoublet*: equalSmallBoolSmallDoubleG, \ 4400 smallIntt*: equalSmallBoolSmallIntG, \ 4401 smallJsont*: equalSmallBoolSmallJsonG, \ 4402 smallStringt*: equalSmallBoolSmallStringG, \ 4403 default: notEqualOG), \ 4404 smallBytest*: _Generic((obj), \ 4405 char: notEqualOCharG, \ 4406 char *: equalSmallBytesCharG, \ 4407 const char *: equalSmallBytesCharG, \ 4408 baset*: equalSmallBytesBaseG, \ 4409 bool: equalSmallBytesBoolG, \ 4410 double: equalSmallBytesDoubleG, \ 4411 int64_t: equalSmallBytesInt64G, \ 4412 int32_t: equalSmallBytesInt32G, \ 4413 uint32_t: equalSmallBytesUint32G, \ 4414 uint64_t: equalSmallBytesUint64G, \ 4415 smallBoolt*: equalSmallBytesSmallBoolG, \ 4416 smallBytest*: equalSmallBytesG, \ 4417 smallDoublet*: equalSmallBytesSmallDoubleG, \ 4418 smallIntt*: equalSmallBytesSmallIntG, \ 4419 smallStringt*: equalSmallBytesSmallStringG, \ 4420 default: notEqualOG), \ 4421 smallDoublet*: _Generic((obj), \ 4422 char: equalSmallDoubleChaG, \ 4423 char *: equalSmallDoubleCharG, \ 4424 const char *: equalSmallDoubleCharG, \ 4425 baset*: equalSmallDoubleBaseG, \ 4426 bool: equalSmallDoubleBoolG, \ 4427 double: equalSmallDoubleDoubleG, \ 4428 int64_t: equalSmallDoubleInt64G, \ 4429 int32_t: equalSmallDoubleInt32G, \ 4430 uint32_t: equalSmallDoubleUint32G, \ 4431 uint64_t: equalSmallDoubleUint64G, \ 4432 smallBoolt*: equalSmallDoubleSmallBoolG, \ 4433 smallBytest*: equalSmallDoubleSmallBytesG, \ 4434 smallDoublet*: equalSmallDoubleFG, \ 4435 smallIntt*: equalSmallDoubleSmallIntG, \ 4436 smallJsont*: equalSmallDoubleSmallJsonG, \ 4437 smallStringt*: equalSmallDoubleSmallStringG, \ 4438 default: notEqualOG), \ 4439 smallDictt*: _Generic((obj), \ 4440 char: notEqualOCharG, \ 4441 baset*: equalSmallDictBaseG, \ 4442 bool: notEqualOBoolG, \ 4443 double: notEqualDoubleG, \ 4444 int64_t: notEqualOInt64G, \ 4445 int32_t: notEqualOInt32G, \ 4446 uint32_t: notEqualOUint32G, \ 4447 uint64_t: notEqualOUint64G, \ 4448 smallJsont*: equalSmallDictSmallJsonG, \ 4449 smallDictt*: equalSmallDictG, \ 4450 default: notEqualOG), \ 4451 smallIntt*: _Generic((obj), \ 4452 char: equalSmallIntChaG, \ 4453 char *: equalSmallIntCharG, \ 4454 const char *: equalSmallIntCharG, \ 4455 baset*: equalSmallIntBaseG, \ 4456 bool: equalSmallIntBoolG, \ 4457 double: equalSmallIntDoubleG, \ 4458 int64_t: equalSmallIntInt64G, \ 4459 int32_t: equalSmallIntInt32G, \ 4460 uint32_t: equalSmallIntUint32G, \ 4461 uint64_t: equalSmallIntUint64G, \ 4462 smallBoolt*: equalSmallIntSmallBoolG, \ 4463 smallBytest*: equalSmallIntSmallBytesG, \ 4464 smallDoublet*: equalSmallIntSmallDoubleG, \ 4465 smallIntt*: equalSmallIntFG, \ 4466 smallJsont*: equalSmallIntSmallJsonG, \ 4467 smallStringt*: equalSmallIntSmallStringG, \ 4468 default: notEqualOG), \ 4469 smallJsont*: _Generic((obj), \ 4470 char: equalSmallJsonChaG, \ 4471 char *: equalSmallJsonCharG, \ 4472 const char *: equalSmallJsonCharG, \ 4473 char **: equalSmallJsonArrayG, \ 4474 const char **: equalSmallJsonCArrayG, \ 4475 baset*: equalSmallJsonBaseG, \ 4476 bool: equalSmallJsonBoolG, \ 4477 double: equalSmallJsonDoubleG, \ 4478 int64_t: equalSmallJsonInt64G, \ 4479 int32_t: equalSmallJsonInt32G, \ 4480 uint32_t: equalSmallJsonUint32G, \ 4481 uint64_t: equalSmallJsonUint64G, \ 4482 smallArrayt*: equalSmallJsonSmallArrayG, \ 4483 smallBoolt*: equalSmallJsonSmallBoolG, \ 4484 smallBytest*: equalSmallJsonSmallBytesG, \ 4485 smallDictt*: equalSmallJsonSmallDictG, \ 4486 smallDoublet*: equalSmallJsonSmallDoubleG, \ 4487 smallIntt*: equalSmallJsonSmallIntG, \ 4488 smallJsont*: equalSmallJsonSmallJsonG, \ 4489 smallStringt*: equalSmallJsonSmallStringG, \ 4490 default: notEqualOG), \ 4491 smallStringt*: _Generic((obj), \ 4492 char *: equalSSmallStringG, \ 4493 const char *: equalSSmallStringG, \ 4494 char: equalCharSmallStringG, \ 4495 baset*: equalSmallStringBaseG, \ 4496 bool: equalSmallStringBoolG, \ 4497 double: equalSmallStringDoubleG, \ 4498 int64_t: equalSmallStringInt64G, \ 4499 int32_t: equalSmallStringInt32G, \ 4500 uint32_t: equalSmallStringUint32G, \ 4501 uint64_t: equalSmallStringUint64G, \ 4502 smallBoolt*: equalSmallStringSmallBoolG, \ 4503 smallBytest*: equalSmallStringSmallBytesG, \ 4504 smallDoublet*: equalSmallStringSmallDoubleG, \ 4505 smallIntt*: equalSmallStringSmallIntG, \ 4506 smallJsont*: equalSmallStringSmallJsonG, \ 4507 smallStringt*: equalSmallStringFG, \ 4508 default: notEqualOG) \ 4509 )(self, obj) 4510 4511 /** 4512 * ignore case and return true when self value and obj value are equal 4513 * Checks if self is NULL before calling the methods 4514 */ 4515 #define icEqG(self, obj) FUNC(\ 4516 bool UNIQVAR(r);\ 4517 /* if self is NULL and sheepy object, return false */\ 4518 if (isLSheepyObject(self) and !(self)) UNIQVAR(r) = false;\ 4519 else UNIQVAR(r) = icEqDirectG(self, obj);\ 4520 /*return*/UNIQVAR(r);\ 4521 ) 4522 4523 /** 4524 * ignore case and return true when self value and obj value are equal 4525 * Directly calls the methods without NULL check 4526 */ 4527 #define icEqDirectG(self, obj) _Generic((self), \ 4528 char: _Generic(obj, \ 4529 char *: icEqCharS, \ 4530 const char *: icEqCharS, \ 4531 char: icEqCharChar, \ 4532 baset*: icEqualChaOG, \ 4533 bool: equalChaBoolG, \ 4534 double: equalChaDoubleG, \ 4535 int64_t: equalChaInt64G, \ 4536 int32_t: equalChaInt32G, \ 4537 uint32_t: equalChaUint32G, \ 4538 uint64_t: equalChaUint64G, \ 4539 smallDoublet*: equalChaSmallDoubleG, \ 4540 smallIntt*: equalChaSmallIntG, \ 4541 smallJsont*: icEqualChaSmallJsonG, \ 4542 smallStringt*: icEqualChaSmallStringG, \ 4543 default: notEqualCharG \ 4544 ) , \ 4545 char *: _Generic((obj), \ 4546 char *: icEqS, \ 4547 const char *: icEqS, \ 4548 char: icEqSChar, \ 4549 baset*: icEqualCharOG, \ 4550 bool: equalCharBoolG, \ 4551 double: equalCharDoubleG, \ 4552 int64_t: equalCharInt64G, \ 4553 int32_t: equalCharInt32G, \ 4554 uint32_t: equalCharUint32G, \ 4555 uint64_t: equalCharUint64G, \ 4556 smallBoolt*: equalCharSmallBoolG, \ 4557 smallBytest*: equalCharSmallBytesG, \ 4558 smallDoublet*: equalCharSmallDoubleG, \ 4559 smallIntt*: equalCharSmallIntG, \ 4560 smallJsont*: icEqualCharPSmallJsonG, \ 4561 smallStringt*: icEqualCharPSmallStringG, \ 4562 default: notEqualOG), \ 4563 const char *: _Generic((obj), \ 4564 char *: icEqS, \ 4565 const char *: icEqS, \ 4566 char: icEqSChar, \ 4567 baset*: icEqualCharOG, \ 4568 bool: equalCharBoolG, \ 4569 double: equalCharDoubleG, \ 4570 int64_t: equalCharInt64G, \ 4571 int32_t: equalCharInt32G, \ 4572 uint32_t: equalCharUint32G, \ 4573 uint64_t: equalCharUint64G, \ 4574 smallBoolt*: equalCharSmallBoolG, \ 4575 smallBytest*: equalCharSmallBytesG, \ 4576 smallDoublet*: equalCharSmallDoubleG, \ 4577 smallIntt*: equalCharSmallIntG, \ 4578 smallJsont*: icEqualCharPSmallJsonG, \ 4579 smallStringt*: icEqualCharPSmallStringG, \ 4580 default: notEqualCCOG), \ 4581 char **: _Generic((obj) , \ 4582 char: notEqualOCharG, \ 4583 char **: icListEqS, \ 4584 const char **: icListEqCG, \ 4585 baset*: icEqualArrayOG, \ 4586 bool: notEqualOBoolG, \ 4587 double: notEqualDoubleG, \ 4588 int64_t: notEqualOInt64G, \ 4589 int32_t: notEqualOInt32G, \ 4590 uint32_t: notEqualOUint32G, \ 4591 uint64_t: notEqualOUint64G, \ 4592 smallJsont*: icEqualArraySmallJsonG, \ 4593 smallArrayt*: icEqualArraySmallArrayG, \ 4594 default: notEqualOG), \ 4595 const char **: _Generic((obj) , \ 4596 char: notEqualOCharG, \ 4597 char **: icListEqC1G, \ 4598 const char **: icListEqCCG, \ 4599 baset*: icEqualCArrayOG, \ 4600 bool: notEqualOBoolG, \ 4601 double: notEqualDoubleG, \ 4602 int64_t: notEqualOInt64G, \ 4603 int32_t: notEqualOInt32G, \ 4604 uint32_t: notEqualOUint32G, \ 4605 uint64_t: notEqualOUint64G, \ 4606 smallJsont*: icEqualCArraySmallJsonG, \ 4607 smallArrayt*: icEqualCArraySmallArrayG, \ 4608 default: notEqualOG), \ 4609 baset*: _Generic((obj), \ 4610 char: icEqualOChaG, \ 4611 char *: icEqualOCharG, \ 4612 const char *: icEqualOCharG, \ 4613 char **: icEqualOArrayG, \ 4614 const char **: icEqualOCArrayG, \ 4615 baset*: icEqualOOG, \ 4616 bool: equalOBoolG, \ 4617 double: equalODoubleG, \ 4618 int64_t: equalOInt64G, \ 4619 int32_t: equalOInt32G, \ 4620 uint32_t: equalOUint32G, \ 4621 uint64_t: equalOUint64G, \ 4622 smallArrayt*: icEqualOSmallArrayG, \ 4623 smallBoolt*: equalOSmallBoolG, \ 4624 smallBytest*: equalOSmallBytesG, \ 4625 smallDoublet*: equalOSmallDoubleG, \ 4626 smallDictt*: icEqualOSmallDictG, \ 4627 smallIntt*: equalOSmallIntG, \ 4628 smallJsont*: icEqualOSmallJsonG, \ 4629 smallStringt*: icEqualOSmallStringG, \ 4630 default: notEqualOG), \ 4631 bool: _Generic((obj), \ 4632 char: equalBoolChaG, \ 4633 char *: equalBoolCharG, \ 4634 const char *: equalBoolCharG, \ 4635 baset*: equalBoolOG, \ 4636 bool: equalBoolFG, \ 4637 double: equalBoolDoubleG, \ 4638 int64_t: equalBoolInt64G, \ 4639 int32_t: equalBoolInt32G, \ 4640 uint32_t: equalBoolUint32G, \ 4641 uint64_t: equalBoolUint64G, \ 4642 smallBoolt*: equalBoolSmallBoolG, \ 4643 smallBytest*: equalBoolSmallBytesG, \ 4644 smallDoublet*: equalBoolSmallDoubleG, \ 4645 smallIntt*: equalBoolSmallIntG, \ 4646 smallJsont*: equalBoolSmallJsonG, \ 4647 smallStringt*: equalBoolSmallStringG, \ 4648 default: notEqualBoolOG), \ 4649 double: _Generic((obj), \ 4650 char: equalDoubleChaG, \ 4651 char *: equalDoubleCharG, \ 4652 const char *: equalDoubleCharG, \ 4653 baset*: equalDoubleBaseG, \ 4654 bool: equalDoubleBoolG, \ 4655 double: equalDoubleFG, \ 4656 int64_t: equalDoubleInt64G, \ 4657 int32_t: equalDoubleInt32G, \ 4658 uint32_t: equalDoubleUint32G, \ 4659 uint64_t: equalDoubleUint64G, \ 4660 smallBoolt*: equalDoubleSmallBoolG, \ 4661 smallBytest*: equalDoubleSmallBytesG, \ 4662 smallDoublet*: equalDoubleSmallDoubleG, \ 4663 smallIntt*: equalDoubleSmallIntG, \ 4664 smallJsont*: equalDoubleSmallJsonG, \ 4665 smallStringt*: equalDoubleSmallStringG, \ 4666 default: notEqualDoubleOG), \ 4667 int64_t: _Generic((obj), \ 4668 char: equalInt64ChaG, \ 4669 char *: equalInt64CharG, \ 4670 const char *: equalInt64CharG, \ 4671 baset*: equalInt64BaseG, \ 4672 bool: equalInt64BoolG, \ 4673 double: equalInt64DoubleG, \ 4674 int64_t: equalInt64FG, \ 4675 int32_t: equalInt64Int32G, \ 4676 uint32_t: equalInt64Uint32G, \ 4677 uint64_t: equalInt64Uint64G, \ 4678 smallBoolt*: equalInt64SmallBoolG, \ 4679 smallBytest*: equalInt64SmallBytesG, \ 4680 smallDoublet*: equalInt64SmallDoubleG, \ 4681 smallIntt*: equalInt64SmallIntG, \ 4682 smallJsont*: equalInt64SmallJsonG, \ 4683 smallStringt*: equalInt64SmallStringG, \ 4684 default: notEqualInt64OG), \ 4685 int32_t: _Generic((obj), \ 4686 char: equalInt32ChaG, \ 4687 char *: equalInt32CharG, \ 4688 const char *: equalInt32CharG, \ 4689 baset*: equalInt32BaseG, \ 4690 bool: equalInt32BoolG, \ 4691 double: equalInt32DoubleG, \ 4692 int64_t: equalInt32Int64G, \ 4693 int32_t: equalInt32FG, \ 4694 uint32_t: equalInt32Uint32G, \ 4695 uint64_t: equalInt32Uint64G, \ 4696 smallBoolt*: equalInt32SmallBoolG, \ 4697 smallBytest*: equalInt32SmallBytesG, \ 4698 smallDoublet*: equalInt32SmallDoubleG, \ 4699 smallIntt*: equalInt32SmallIntG, \ 4700 smallJsont*: equalInt32SmallJsonG, \ 4701 smallStringt*: equalInt32SmallStringG, \ 4702 default: notEqualInt32OG), \ 4703 uint32_t: _Generic((obj), \ 4704 char: equalUint32ChaG, \ 4705 char *: equalUint32CharG, \ 4706 const char *: equalUint32CharG, \ 4707 baset*: equalUint32BaseG, \ 4708 bool: equalUint32BoolG, \ 4709 double: equalUint32DoubleG, \ 4710 int64_t: equalUint32Int64G, \ 4711 int32_t: equalUint32Int32G, \ 4712 uint32_t: equalUint32FG, \ 4713 uint64_t: equalUint32Uint64G, \ 4714 smallBoolt*: equalUint32SmallBoolG, \ 4715 smallBytest*: equalUint32SmallBytesG, \ 4716 smallDoublet*: equalUint32SmallDoubleG, \ 4717 smallIntt*: equalUint32SmallIntG, \ 4718 smallJsont*: equalUint32SmallJsonG, \ 4719 smallStringt*: equalUint32SmallStringG, \ 4720 default: notEqualUint32OG), \ 4721 uint64_t: _Generic((obj), \ 4722 char: equalUint64ChaG, \ 4723 char *: equalUint64CharG, \ 4724 const char *: equalUint64CharG, \ 4725 baset*: equalUint64BaseG, \ 4726 bool: equalUint64BoolG, \ 4727 double: equalUint64DoubleG, \ 4728 int64_t: equalUint64Int64G, \ 4729 int32_t: equalUint64Int32G, \ 4730 uint32_t: equalUint64Uint32G, \ 4731 uint64_t: equalUint64FG, \ 4732 smallBoolt*: equalUint64SmallBoolG, \ 4733 smallBytest*: equalUint64SmallBytesG, \ 4734 smallDoublet*: equalUint64SmallDoubleG, \ 4735 smallIntt*: equalUint64SmallIntG, \ 4736 smallJsont*: equalUint64SmallJsonG, \ 4737 smallStringt*: equalUint64SmallStringG, \ 4738 default: notEqualUint64OG), \ 4739 smallArrayt*: _Generic((obj), \ 4740 char: notEqualOCharG, \ 4741 char **: icEqualSmallArrayArrayG, \ 4742 const char **: icEqualSmallArrayCArrayG, \ 4743 baset*: icEqualSmallArrayBaseG, \ 4744 bool: notEqualOBoolG, \ 4745 double: notEqualDoubleG, \ 4746 int64_t: notEqualOInt64G, \ 4747 int32_t: notEqualOInt32G, \ 4748 uint32_t: notEqualOUint32G, \ 4749 uint64_t: notEqualOUint32G, \ 4750 smallJsont*: icEqualSmallArraySmallJsonG, \ 4751 smallArrayt*: icEqualSmallArrayG, \ 4752 default: notEqualOG), \ 4753 smallBoolt*: _Generic((obj), \ 4754 char: notEqualOCharG, \ 4755 char *: equalSmallBoolCharG, \ 4756 const char *: equalSmallBoolCharG, \ 4757 baset*: equalSmallBoolBaseG, \ 4758 bool: equalSmallBoolBoolG, \ 4759 double: equalSmallBoolDoubleG, \ 4760 int64_t: equalSmallBoolInt64G, \ 4761 int32_t: equalSmallBoolInt32G, \ 4762 uint32_t: equalSmallBoolUint32G, \ 4763 uint64_t: equalSmallBoolUint64G, \ 4764 smallBoolt*: equalSmallBoolFG, \ 4765 smallBytest*: equalSmallBoolSmallBytesG, \ 4766 smallDoublet*: equalSmallBoolSmallDoubleG, \ 4767 smallIntt*: equalSmallBoolSmallIntG, \ 4768 smallJsont*: equalSmallBoolSmallJsonG, \ 4769 smallStringt*: equalSmallBoolSmallStringG, \ 4770 default: notEqualOG), \ 4771 smallBytest*: _Generic((obj), \ 4772 char: notEqualOCharG, \ 4773 char *: equalSmallBytesCharG, \ 4774 const char *: equalSmallBytesCharG, \ 4775 baset*: equalSmallBytesBaseG, \ 4776 bool: equalSmallBytesBoolG, \ 4777 double: equalSmallBytesDoubleG, \ 4778 int64_t: equalSmallBytesInt64G, \ 4779 int32_t: equalSmallBytesInt32G, \ 4780 uint32_t: equalSmallBytesUint32G, \ 4781 uint64_t: equalSmallBytesUint64G, \ 4782 smallBoolt*: equalSmallBytesSmallBoolG, \ 4783 smallBytest*: equalSmallBytesG, \ 4784 smallDoublet*: equalSmallBytesSmallDoubleG, \ 4785 smallIntt*: equalSmallBytesSmallIntG, \ 4786 smallStringt*: equalSmallBytesSmallStringG, \ 4787 default: notEqualOG), \ 4788 smallDoublet*: _Generic((obj), \ 4789 char: equalSmallDoubleChaG, \ 4790 char *: equalSmallDoubleCharG, \ 4791 const char *: equalSmallDoubleCharG, \ 4792 baset*: equalSmallDoubleBaseG, \ 4793 bool: equalSmallDoubleBoolG, \ 4794 double: equalSmallDoubleDoubleG, \ 4795 int64_t: equalSmallDoubleInt64G, \ 4796 int32_t: equalSmallDoubleInt32G, \ 4797 uint32_t: equalSmallDoubleUint32G, \ 4798 uint64_t: equalSmallDoubleUint64G, \ 4799 smallBoolt*: equalSmallDoubleSmallBoolG, \ 4800 smallBytest*: equalSmallDoubleSmallBytesG, \ 4801 smallDoublet*: equalSmallDoubleFG, \ 4802 smallIntt*: equalSmallDoubleSmallIntG, \ 4803 smallJsont*: equalSmallDoubleSmallJsonG, \ 4804 smallStringt*: equalSmallDoubleSmallStringG, \ 4805 default: notEqualOG), \ 4806 smallDictt*: _Generic((obj), \ 4807 char: notEqualOCharG, \ 4808 baset*: icEqualSmallDictBaseG, \ 4809 bool: notEqualOBoolG, \ 4810 double: notEqualDoubleG, \ 4811 int64_t: notEqualOInt64G, \ 4812 int32_t: notEqualOInt32G, \ 4813 uint32_t: notEqualOUint32G, \ 4814 uint64_t: notEqualOUint64G, \ 4815 smallJsont*: icEqualSmallDictSmallJsonG, \ 4816 smallDictt*: icEqualSmallDictG, \ 4817 default: notEqualOG), \ 4818 smallIntt*: _Generic((obj), \ 4819 char: equalSmallIntChaG, \ 4820 char *: equalSmallIntCharG, \ 4821 const char *: equalSmallIntCharG, \ 4822 baset*: equalSmallIntBaseG, \ 4823 bool: equalSmallIntBoolG, \ 4824 double: equalSmallIntDoubleG, \ 4825 int64_t: equalSmallIntInt64G, \ 4826 int32_t: equalSmallIntInt32G, \ 4827 uint32_t: equalSmallIntUint32G, \ 4828 uint64_t: equalSmallIntUint64G, \ 4829 smallBoolt*: equalSmallIntSmallBoolG, \ 4830 smallBytest*: equalSmallIntSmallBytesG, \ 4831 smallDoublet*: equalSmallIntSmallDoubleG, \ 4832 smallIntt*: equalSmallIntFG, \ 4833 smallJsont*: equalSmallIntSmallJsonG, \ 4834 smallStringt*: equalSmallIntSmallStringG, \ 4835 default: notEqualOG), \ 4836 smallJsont*: _Generic((obj), \ 4837 char *: icEqualSSmallJsonG, \ 4838 const char *: icEqualSSmallJsonG, \ 4839 char: icEqualCharSmallJsonG, \ 4840 char **: icEqualSmallJsonArrayG, \ 4841 const char **: icEqualSmallJsonCArrayG, \ 4842 baset*: icEqualSmallJsonBaseG, \ 4843 bool: equalSmallJsonBoolG, \ 4844 double: equalSmallJsonDoubleG, \ 4845 int64_t: equalSmallJsonInt64G, \ 4846 int32_t: equalSmallJsonInt32G, \ 4847 uint32_t: equalSmallJsonUint32G, \ 4848 uint64_t: equalSmallJsonUint64G, \ 4849 smallArrayt*: icEqualSmallJsonSmallArrayG, \ 4850 smallBoolt*: equalSmallJsonSmallBoolG, \ 4851 smallBytest*: equalSmallJsonSmallBytesG, \ 4852 smallDictt*: icEqualSmallJsonSmallDictG, \ 4853 smallDoublet*: equalSmallJsonSmallDoubleG, \ 4854 smallIntt*: equalSmallJsonSmallIntG, \ 4855 smallJsont*: icEqualSmallJsonSmallJsonG, \ 4856 smallStringt*: icEqualSmallJsonSmallStringG, \ 4857 default: notEqualOG), \ 4858 smallStringt*: _Generic((obj), \ 4859 char *: icEqualSSmallStringG, \ 4860 const char *: icEqualSSmallStringG, \ 4861 char: icEqualCharSmallStringG, \ 4862 baset*: icEqualSmallStringBaseG, \ 4863 bool: equalSmallStringBoolG, \ 4864 double: equalSmallStringDoubleG, \ 4865 int64_t: equalSmallStringInt64G, \ 4866 int32_t: equalSmallStringInt32G, \ 4867 uint32_t: equalSmallStringUint32G, \ 4868 uint64_t: equalSmallStringUint64G, \ 4869 smallBoolt*: equalSmallStringSmallBoolG, \ 4870 smallBytest*: equalSmallStringSmallBytesG, \ 4871 smallDoublet*: equalSmallStringSmallDoubleG, \ 4872 smallIntt*: equalSmallStringSmallIntG, \ 4873 smallJsont*: icEqualSmallStringSmallJsonG, \ 4874 smallStringt*: icEqualSmallStringFG, \ 4875 default: notEqualOG) \ 4876 )(self, obj) 4877 4878 #define eqIG(self, obj, index) _Generic((self), \ 4879 char *: _Generic(obj, \ 4880 char *: eqIS, \ 4881 const char *: eqIS, \ 4882 char: eqICharS, \ 4883 int: eqICharS, \ 4884 default: eqIS \ 4885 ), \ 4886 const char *: _Generic(obj, \ 4887 char *: eqIS, \ 4888 const char *: eqIS, \ 4889 char: eqICharS, \ 4890 int: eqICharS, \ 4891 default: eqIS \ 4892 ), \ 4893 smallJsont *: _Generic(obj, \ 4894 char *: equalISSmallJsonG, \ 4895 const char *: equalISSmallJsonG, \ 4896 char: equalICharSmallJsonG, \ 4897 int: equalICharSmallJsonG, \ 4898 smallJsont *: equalIJsonSmallJsonG, \ 4899 smallStringt *: equalISmallStringSmallJsonG, \ 4900 default: equalISSmallJsonG \ 4901 ), \ 4902 smallStringt *: _Generic(obj, \ 4903 char *: equalISSmallStringG, \ 4904 const char *: equalISSmallStringG, \ 4905 char: equalICharSmallStringG, \ 4906 int: equalICharSmallStringG, \ 4907 smallJsont *: equalISmallJsonSmallStringG, \ 4908 smallStringt *: equalISmallStringSmallStringG, \ 4909 default: equalISSmallStringG \ 4910 ) \ 4911 )(self, obj, index) 4912 4913 #define startsWithG(self, obj) _Generic((self), \ 4914 char *: _Generic(obj, \ 4915 char *: startsWithS, \ 4916 const char *: startsWithS, \ 4917 char: startsWithCharS, \ 4918 int: startsWithCharS, \ 4919 default: startsWithS \ 4920 ), \ 4921 const char *: _Generic(obj, \ 4922 char *: startsWithS, \ 4923 const char *: startsWithS, \ 4924 char: startsWithCharS, \ 4925 int: startsWithCharS, \ 4926 default: startsWithS \ 4927 ), \ 4928 smallJsont *: _Generic(obj, \ 4929 char *: startsWithSSmallJsonG, \ 4930 const char *: startsWithSSmallJsonG, \ 4931 char: startsWithCharSmallJsonG, \ 4932 int: startsWithCharSmallJsonG, \ 4933 smallJsont *: startsWithJsonSmallJsonG, \ 4934 smallStringt *: startsWithSmallStringSmallJsonG \ 4935 ), \ 4936 smallStringt *: _Generic(obj, \ 4937 char *: startsWithSSmallStringG, \ 4938 const char *: startsWithSSmallStringG, \ 4939 char: startsWithCharSmallStringG, \ 4940 int: startsWithCharSmallStringG, \ 4941 smallJsont *: startsWithSmallJsonSmallStringG, \ 4942 smallStringt *: startsWithSmallStringSmallStringG \ 4943 ) \ 4944 )(self, obj) 4945 4946 #define endsWithG(self, obj) _Generic((self), \ 4947 char *: _Generic(obj, \ 4948 char *: endsWithS, \ 4949 const char *: endsWithS, \ 4950 char: endsWithCharS, \ 4951 int: endsWithCharS, \ 4952 default: endsWithS \ 4953 ), \ 4954 const char *: _Generic(obj, \ 4955 char *: endsWithS, \ 4956 const char *: endsWithS, \ 4957 char: endsWithCharS, \ 4958 int: endsWithCharS, \ 4959 default: endsWithS \ 4960 ), \ 4961 smallJsont *: _Generic(obj, \ 4962 char *: endsWithSSmallJsonG, \ 4963 const char *: endsWithSSmallJsonG, \ 4964 char: endsWithCharSmallJsonG, \ 4965 int: endsWithCharSmallJsonG, \ 4966 smallJsont *: endsWithJsonSmallJsonG, \ 4967 smallStringt *: endsWithSmallStringSmallJsonG \ 4968 ), \ 4969 smallStringt *: _Generic(obj, \ 4970 char *: endsWithSSmallStringG, \ 4971 const char *: endsWithSSmallStringG, \ 4972 char: endsWithCharSmallStringG, \ 4973 int: endsWithCharSmallStringG, \ 4974 smallJsont *: endsWithSmallJsonSmallStringG, \ 4975 smallStringt *: endsWithSmallStringSmallStringG \ 4976 ) \ 4977 )(self, obj) 4978 4979 #define countG(self, obj) _Generic((self), \ 4980 char *: _Generic(obj, \ 4981 char *: countS, \ 4982 const char *: countS, \ 4983 char: countCharS, \ 4984 int: countCharS, \ 4985 default: countS \ 4986 ), \ 4987 const char *: _Generic(obj, \ 4988 char *: countS, \ 4989 const char *: countS, \ 4990 char: countCharS, \ 4991 int: countCharS, \ 4992 default: countS \ 4993 ), \ 4994 smallJsont *: _Generic(obj, \ 4995 char *: countSSmallJsonG, \ 4996 const char *: countSSmallJsonG, \ 4997 char: countCharSmallJsonG, \ 4998 int: countCharSmallJsonG, \ 4999 smallJsont *: countJsonSmallJsonG, \ 5000 smallStringt *: countSmallStringSmallJsonG \ 5001 ), \ 5002 smallStringt *: _Generic(obj, \ 5003 char *: countSSmallStringG, \ 5004 const char *: countSSmallStringG, \ 5005 char: countCharSmallStringG, \ 5006 int: countCharSmallStringG, \ 5007 smallJsont *: countSmallJsonSmallStringG, \ 5008 smallStringt *: countSmallStringSmallStringG \ 5009 ) \ 5010 )(self, obj) 5011 5012 #define icStartsWithG(self, obj) _Generic((self), \ 5013 char *: _Generic(obj, \ 5014 char *: icStartsWithS, \ 5015 const char *: icStartsWithS, \ 5016 char: icStartsWithCharS, \ 5017 int: icStartsWithCharS, \ 5018 default: icStartsWithS \ 5019 ), \ 5020 const char *: _Generic(obj, \ 5021 char *: icStartsWithS, \ 5022 const char *: icStartsWithS, \ 5023 char: icStartsWithCharS, \ 5024 int: icStartsWithCharS, \ 5025 default: icStartsWithS \ 5026 ), \ 5027 smallJsont *: _Generic(obj, \ 5028 char *: icStartsWithSSmallJsonG, \ 5029 const char *: icStartsWithSSmallJsonG, \ 5030 char: icStartsWithCharSmallJsonG, \ 5031 int: icStartsWithCharSmallJsonG, \ 5032 smallJsont *: icStartsWithJsonSmallJsonG, \ 5033 smallStringt *: icStartsWithSmallStringSmallJsonG \ 5034 ), \ 5035 smallStringt *: _Generic(obj, \ 5036 char *: icStartsWithSSmallStringG, \ 5037 const char *: icStartsWithSSmallStringG, \ 5038 char: icStartsWithCharSmallStringG, \ 5039 int: icStartsWithCharSmallStringG, \ 5040 smallJsont *: icStartsWithSmallJsonSmallStringG, \ 5041 smallStringt *: icStartsWithSmallStringSmallStringG \ 5042 ) \ 5043 )(self, obj) 5044 5045 #define icEndsWithG(self, obj) _Generic((self), \ 5046 char *: _Generic(obj, \ 5047 char *: icEndsWithS, \ 5048 const char *: icEndsWithS, \ 5049 char: icEndsWithCharS, \ 5050 int: icEndsWithCharS, \ 5051 default: icEndsWithS \ 5052 ), \ 5053 const char *: _Generic(obj, \ 5054 char *: icEndsWithS, \ 5055 const char *: icEndsWithS, \ 5056 char: icEndsWithCharS, \ 5057 int: icEndsWithCharS, \ 5058 default: icEndsWithS \ 5059 ), \ 5060 smallJsont *: _Generic(obj, \ 5061 char *: icEndsWithSSmallJsonG, \ 5062 const char *: icEndsWithSSmallJsonG, \ 5063 char: icEndsWithCharSmallJsonG, \ 5064 int: icEndsWithCharSmallJsonG, \ 5065 smallJsont *: icEndsWithJsonSmallJsonG, \ 5066 smallStringt *: icEndsWithSmallStringSmallJsonG \ 5067 ), \ 5068 smallStringt *: _Generic(obj, \ 5069 char *: icEndsWithSSmallStringG, \ 5070 const char *: icEndsWithSSmallStringG, \ 5071 char: icEndsWithCharSmallStringG, \ 5072 int: icEndsWithCharSmallStringG, \ 5073 smallJsont *: icEndsWithSmallJsonSmallStringG, \ 5074 smallStringt *: icEndsWithSmallStringSmallStringG \ 5075 ) \ 5076 )(self, obj) 5077 5078 #define icCountG(self, obj) _Generic((self), \ 5079 char *: _Generic(obj, \ 5080 char *: icCountS, \ 5081 const char *: icCountS, \ 5082 char: icCountCharS, \ 5083 int: icCountCharS, \ 5084 default: icCountS \ 5085 ), \ 5086 const char *: _Generic(obj, \ 5087 char *: icCountS, \ 5088 const char *: icCountS, \ 5089 char: icCountCharS, \ 5090 int: icCountCharS, \ 5091 default: icCountS \ 5092 ), \ 5093 smallJsont *: _Generic(obj, \ 5094 char *: icCountSSmallJsonG, \ 5095 const char *: icCountSSmallJsonG, \ 5096 char: icCountCharSmallJsonG, \ 5097 int: icCountCharSmallJsonG, \ 5098 smallJsont *: icCountJsonSmallJsonG, \ 5099 smallStringt *: icCountSmallStringSmallJsonG \ 5100 ), \ 5101 smallStringt *: _Generic(obj, \ 5102 char *: icCountSSmallStringG, \ 5103 const char *: icCountSSmallStringG, \ 5104 char: icCountCharSmallStringG, \ 5105 int: icCountCharSmallStringG, \ 5106 smallJsont *: icCountSmallJsonSmallStringG, \ 5107 smallStringt *: icCountSmallStringSmallStringG \ 5108 ) \ 5109 )(self, obj) 5110 5111 #define isNumberO(self) (self)->f->isNumber(self) 5112 #define isNumberG(self) _Generic((self), \ 5113 char *: isNumber, \ 5114 const char *: isNumber, \ 5115 smallJsont *: isNumberSmallJsonG, \ 5116 smallStringt *: isNumberSmallStringG \ 5117 )(self) 5118 5119 #define isIntO(self) (self)->f->isInt(self) 5120 #define isIntG(self) _Generic((self), \ 5121 char *: isInt, \ 5122 const char *: isInt, \ 5123 smallJsont *: isIntSmallJsonG, \ 5124 smallStringt *: isIntSmallStringG \ 5125 )(self) 5126 5127 5128 #define parseIntO(self) (self)->f->parseInt(self) 5129 #define parseIntG(self) _Generic((self), \ 5130 char: parseIntChar, \ 5131 int: parseIntChar, \ 5132 char *: parseInt, \ 5133 const char *: parseInt, \ 5134 smallJsont *: parseIntSmallJsonG, \ 5135 smallStringt *: parseIntSmallStringG \ 5136 )(self) 5137 5138 #define intToO(self, n) (self)->f->intTo(self, n) 5139 #define intToG(self, n) _Generic((self), \ 5140 char *: intToSG, \ 5141 smallJsont *: intToSmallJsonG, \ 5142 smallStringt *: intToSmallStringG \ 5143 )(self, n) 5144 5145 #define parseDoubleO(self) (self)->f->parseDouble(self) 5146 #define parseDoubleG(self) _Generic((self), \ 5147 char: parseDoubleChar, \ 5148 int: parseDoubleChar, \ 5149 char *: parseDouble, \ 5150 const char *: parseDouble, \ 5151 smallJsont *: parseDoubleSmallJsonG, \ 5152 smallStringt *: parseDoubleSmallStringG \ 5153 )(self) 5154 5155 #define doubleToO(self, n) (self)->f->doubleTo(self, n) 5156 #define doubleToG(self, n) _Generic((self), \ 5157 char *: doubleToSG, \ 5158 smallJsont *: doubleToSmallJsonG, \ 5159 smallStringt *: doubleToSmallStringG \ 5160 )(self, n) 5161 5162 #define lenO(self) (self)->f->len(self) 5163 #define lenG(self) _Generic((self), \ 5164 char *: lenS, \ 5165 const char *: lenS, \ 5166 char **: listLengthS, \ 5167 const char **: listLengthCG, \ 5168 smallArrayt *: lenSmallArrayG, \ 5169 smallBytest *: lenSmallBytesG, \ 5170 smallDictt *: lenSmallDictG, \ 5171 smallJsont *: lenSmallJsonG, \ 5172 smallStringt *: lenSmallStringG \ 5173 )(self) 5174 5175 #define upperO(self) (self)->f->upper(self) 5176 #define upperG(self) _Generic((self), \ 5177 char *: upperS, \ 5178 const char *: upperS, \ 5179 char **: iUpperS, \ 5180 smallJsont *: upperSmallJsonG, \ 5181 smallStringt *: upperSmallStringG \ 5182 )(self) 5183 5184 #define lowerO(self) (self)->f->lower(self) 5185 #define lowerG(self) _Generic((self), \ 5186 char *: lowerS, \ 5187 const char *: lowerS, \ 5188 char **: iLowerS, \ 5189 smallJsont *: lowerSmallJsonG, \ 5190 smallStringt *: lowerSmallStringG \ 5191 )(self) 5192 5193 #define trimO(self) (self)->f->trim(self) 5194 #define trimG(self) _Generic((self), \ 5195 char *: trimS, \ 5196 const char *: trimS, \ 5197 char **: iTrimS, \ 5198 smallArrayt *: trimSmallArrayG, \ 5199 smallDictt *: trimSmallDictG, \ 5200 smallJsont *: trimSmallJsonG, \ 5201 smallStringt *: trimSmallStringG, \ 5202 btt: trimB, \ 5203 const btt: trimB, \ 5204 btt*: bTrimB, \ 5205 const btt*: trimPB \ 5206 )(self) 5207 5208 #define lTrimO(self) (self)->f->lTrim(self) 5209 #define lTrimG(self) _Generic((self), \ 5210 char *: lTrimS, \ 5211 const char *: lTrimS, \ 5212 char **: iLTrimS, \ 5213 smallJsont *: lTrimSmallJsonG, \ 5214 smallStringt *: lTrimSmallStringG \ 5215 )(self) 5216 5217 #define rTrimO(self) (self)->f->rTrim(self) 5218 #define rTrimG(self) _Generic((self), \ 5219 char *: rTrimS, \ 5220 const char *: rTrimS, \ 5221 char **: iRTrimS, \ 5222 smallJsont *: rTrimSmallJsonG, \ 5223 smallStringt *: rTrimSmallStringG \ 5224 )(self) 5225 5226 #define uniqO(self, c) (self)->f->uniq(self, c) 5227 #define uniqG(self, c) _Generic((self), \ 5228 char *: uniqS, \ 5229 const char *: uniqS, \ 5230 char **: iUniqS, \ 5231 char ***: iListUniqG, \ 5232 smallArrayt *: uniqSmallArrayG, \ 5233 smallJsont *: uniqSmallJsonG, \ 5234 smallStringt *: uniqSmallStringG \ 5235 )(self, c) 5236 5237 #define icUniqO(self, c) (self)->f->icUniq(self, c) 5238 #define icUniqG(self, c) _Generic((self), \ 5239 char *: icUniqS, \ 5240 const char *: icUniqS, \ 5241 char **: iicUniqS, \ 5242 char ***: iicListUniqG, \ 5243 smallArrayt *: icUniqSmallArrayG, \ 5244 smallJsont *: icUniqSmallJsonG, \ 5245 smallStringt *: icUniqSmallStringG \ 5246 )(self, c) 5247 5248 #define sliceO(self, start, end) (self)->f->slice(self, start, end) 5249 #define sliceG(self, start, end) _Generic((self), \ 5250 char *: sliceS, \ 5251 const char *: sliceS, \ 5252 char **: iSliceS, \ 5253 char ***: iListSliceS, \ 5254 smallArrayt *: sliceSmallArrayG, \ 5255 smallJsont *: sliceSmallJsonG, \ 5256 smallStringt *: sliceSmallStringG, \ 5257 btt: sliceB, \ 5258 const btt: sliceB, \ 5259 btt*: bSliceB, \ 5260 const btt*: slicePB \ 5261 )(self, start, end) 5262 5263 5264 #define cropO(self, start, end) (self)->f->crop(self, start, end) 5265 #define cropG(self, start, end) _Generic((self), \ 5266 char *: cropS, \ 5267 char **: listCropS, \ 5268 char ***: iListCropS, \ 5269 smallArrayt *: cropSmallArrayG, \ 5270 smallJsont *: cropSmallJsonG, \ 5271 smallStringt *: cropSmallStringG \ 5272 )(self, start, end) 5273 5274 #define cropElemO(self, index) (self)->f->cropElem(self, index) 5275 #define cropElemG(self, returnType, index) _Generic((self), \ 5276 smallDictt*: _Generic(index, \ 5277 char *: _Generic(returnType, \ 5278 baset*: cropElemSmallDictG, \ 5279 undefinedt*: cropElemUndefinedSmallDictG, \ 5280 bool: cropElemBoolSmallDictG, \ 5281 double: cropElemDoubleSmallDictG, \ 5282 int64_t: cropElemIntSmallDictG, \ 5283 int32_t: cropElemInt32SmallDictG, \ 5284 uint64_t: cropElemUintSmallDictG, \ 5285 uint32_t: cropElemUint32SmallDictG, \ 5286 char*: cropElemSSmallDictG, \ 5287 smallDictt*: cropElemDictSmallDictG, \ 5288 smallArrayt*: cropElemArraySmallDictG, \ 5289 smallBoolt*: cropElemSmallBoolSmallDictG, \ 5290 smallBytest*: cropElemSmallBytesSmallDictG, \ 5291 smallDoublet*: cropElemSmallDoubleSmallDictG, \ 5292 smallIntt*: cropElemSmallIntSmallDictG, \ 5293 smallJsont*: cropElemSmallJsonSmallDictG, \ 5294 smallStringt*: cropElemSmallStringSmallDictG, \ 5295 void*: cropElemVoidSmallDictG, \ 5296 smallContainert*: cropElemSmallContainerSmallDictG, \ 5297 default: cropElemSmallDictG), \ 5298 const char *: _Generic(returnType, \ 5299 baset*: cropElemSmallDictG, \ 5300 undefinedt*: cropElemUndefinedSmallDictG, \ 5301 bool: cropElemBoolSmallDictG, \ 5302 double: cropElemDoubleSmallDictG, \ 5303 int64_t: cropElemIntSmallDictG, \ 5304 int32_t: cropElemInt32SmallDictG, \ 5305 uint64_t: cropElemUintSmallDictG, \ 5306 uint32_t: cropElemUint32SmallDictG, \ 5307 char*: cropElemSSmallDictG, \ 5308 smallDictt*: cropElemDictSmallDictG, \ 5309 smallArrayt*: cropElemArraySmallDictG, \ 5310 smallBoolt*: cropElemSmallBoolSmallDictG, \ 5311 smallBytest*: cropElemSmallBytesSmallDictG, \ 5312 smallDoublet*: cropElemSmallDoubleSmallDictG, \ 5313 smallIntt*: cropElemSmallIntSmallDictG, \ 5314 smallJsont*: cropElemSmallJsonSmallDictG, \ 5315 smallStringt*: cropElemSmallStringSmallDictG, \ 5316 void*: cropElemVoidSmallDictG, \ 5317 smallContainert*: cropElemSmallContainerSmallDictG, \ 5318 default: cropElemSmallDictG), \ 5319 default: cropElemSmallDictG \ 5320 ), \ 5321 smallJsont*: _Generic(index, \ 5322 char *: _Generic(returnType, \ 5323 baset*: cropElemKeySmallJsonG, \ 5324 undefinedt*: cropElemKeyUndefinedSmallJsonG, \ 5325 bool: cropElemKeyBoolSmallJsonG, \ 5326 double: cropElemKeyDoubleSmallJsonG, \ 5327 int64_t: cropElemKeyIntSmallJsonG, \ 5328 int32_t: cropElemKeyInt32SmallJsonG, \ 5329 uint64_t: cropElemKeyUintSmallJsonG, \ 5330 uint32_t: cropElemKeyUint32SmallJsonG, \ 5331 char*: cropElemKeySSmallJsonG, \ 5332 smallDictt*: cropElemKeyDictSmallJsonG, \ 5333 smallArrayt*: cropElemKeyArraySmallJsonG, \ 5334 smallBoolt*: cropElemKeySmallBoolSmallJsonG, \ 5335 smallBytest*: cropElemKeySmallBytesSmallJsonG, \ 5336 smallDoublet*: cropElemKeySmallDoubleSmallJsonG, \ 5337 smallIntt*: cropElemKeySmallIntSmallJsonG, \ 5338 smallJsont*: cropElemKeySmallJsonSmallJsonG, \ 5339 smallStringt*: cropElemKeySmallStringSmallJsonG, \ 5340 void*: cropElemKeyVoidSmallJsonG, \ 5341 smallContainert*: cropElemKeySmallContainerSmallJsonG, \ 5342 default: cropElemKeySmallJsonG), \ 5343 const char *: _Generic(returnType, \ 5344 baset*: cropElemKeySmallJsonG, \ 5345 undefinedt*: cropElemKeyUndefinedSmallJsonG, \ 5346 bool: cropElemKeyBoolSmallJsonG, \ 5347 double: cropElemKeyDoubleSmallJsonG, \ 5348 int64_t: cropElemKeyIntSmallJsonG, \ 5349 int32_t: cropElemKeyInt32SmallJsonG, \ 5350 uint64_t: cropElemKeyUintSmallJsonG, \ 5351 uint32_t: cropElemKeyUint32SmallJsonG, \ 5352 char*: cropElemKeySSmallJsonG, \ 5353 smallDictt*: cropElemKeyDictSmallJsonG, \ 5354 smallArrayt*: cropElemKeyArraySmallJsonG, \ 5355 smallBoolt*: cropElemKeySmallBoolSmallJsonG, \ 5356 smallBytest*: cropElemKeySmallBytesSmallJsonG, \ 5357 smallDoublet*: cropElemKeySmallDoubleSmallJsonG, \ 5358 smallIntt*: cropElemKeySmallIntSmallJsonG, \ 5359 smallJsont*: cropElemKeySmallJsonSmallJsonG, \ 5360 smallStringt*: cropElemKeySmallStringSmallJsonG, \ 5361 void*: cropElemKeyVoidSmallJsonG, \ 5362 smallContainert*: cropElemKeySmallContainerSmallJsonG, \ 5363 default: cropElemKeySmallJsonG), \ 5364 int64_t: _Generic(returnType, \ 5365 baset*: cropElemAtSmallJsonG, \ 5366 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5367 bool: cropElemAtBoolSmallJsonG, \ 5368 double: cropElemAtDoubleSmallJsonG, \ 5369 int64_t: cropElemAtIntSmallJsonG, \ 5370 int32_t: cropElemAtInt32SmallJsonG, \ 5371 uint64_t: cropElemAtUintSmallJsonG, \ 5372 uint32_t: cropElemAtUint32SmallJsonG, \ 5373 char*: cropElemAtSSmallJsonG, \ 5374 smallDictt*: cropElemAtDictSmallJsonG, \ 5375 smallArrayt*: cropElemAtArraySmallJsonG, \ 5376 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5377 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5378 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5379 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5380 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5381 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5382 void*: cropElemAtVoidSmallJsonG, \ 5383 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5384 default: cropElemAtSmallJsonG), \ 5385 int32_t: _Generic(returnType, \ 5386 baset*: cropElemAtSmallJsonG, \ 5387 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5388 bool: cropElemAtBoolSmallJsonG, \ 5389 double: cropElemAtDoubleSmallJsonG, \ 5390 int64_t: cropElemAtIntSmallJsonG, \ 5391 int32_t: cropElemAtInt32SmallJsonG, \ 5392 uint64_t: cropElemAtUintSmallJsonG, \ 5393 uint32_t: cropElemAtUint32SmallJsonG, \ 5394 char*: cropElemAtSSmallJsonG, \ 5395 smallDictt*: cropElemAtDictSmallJsonG, \ 5396 smallArrayt*: cropElemAtArraySmallJsonG, \ 5397 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5398 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5399 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5400 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5401 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5402 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5403 void*: cropElemAtVoidSmallJsonG, \ 5404 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5405 default: cropElemAtSmallJsonG), \ 5406 int16_t: _Generic(returnType, \ 5407 baset*: cropElemAtSmallJsonG, \ 5408 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5409 bool: cropElemAtBoolSmallJsonG, \ 5410 double: cropElemAtDoubleSmallJsonG, \ 5411 int64_t: cropElemAtIntSmallJsonG, \ 5412 int32_t: cropElemAtInt32SmallJsonG, \ 5413 uint64_t: cropElemAtUintSmallJsonG, \ 5414 uint32_t: cropElemAtUint32SmallJsonG, \ 5415 char*: cropElemAtSSmallJsonG, \ 5416 smallDictt*: cropElemAtDictSmallJsonG, \ 5417 smallArrayt*: cropElemAtArraySmallJsonG, \ 5418 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5419 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5420 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5421 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5422 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5423 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5424 void*: cropElemAtVoidSmallJsonG, \ 5425 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5426 default: cropElemAtSmallJsonG), \ 5427 int8_t: _Generic(returnType, \ 5428 baset*: cropElemAtSmallJsonG, \ 5429 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5430 bool: cropElemAtBoolSmallJsonG, \ 5431 double: cropElemAtDoubleSmallJsonG, \ 5432 int64_t: cropElemAtIntSmallJsonG, \ 5433 int32_t: cropElemAtInt32SmallJsonG, \ 5434 uint64_t: cropElemAtUintSmallJsonG, \ 5435 uint32_t: cropElemAtUint32SmallJsonG, \ 5436 char*: cropElemAtSSmallJsonG, \ 5437 smallDictt*: cropElemAtDictSmallJsonG, \ 5438 smallArrayt*: cropElemAtArraySmallJsonG, \ 5439 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5440 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5441 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5442 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5443 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5444 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5445 void*: cropElemAtVoidSmallJsonG, \ 5446 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5447 default: cropElemAtSmallJsonG), \ 5448 uint64_t: _Generic(returnType, \ 5449 baset*: cropElemAtSmallJsonG, \ 5450 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5451 bool: cropElemAtBoolSmallJsonG, \ 5452 double: cropElemAtDoubleSmallJsonG, \ 5453 int64_t: cropElemAtIntSmallJsonG, \ 5454 int32_t: cropElemAtInt32SmallJsonG, \ 5455 uint64_t: cropElemAtUintSmallJsonG, \ 5456 uint32_t: cropElemAtUint32SmallJsonG, \ 5457 char*: cropElemAtSSmallJsonG, \ 5458 smallDictt*: cropElemAtDictSmallJsonG, \ 5459 smallArrayt*: cropElemAtArraySmallJsonG, \ 5460 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5461 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5462 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5463 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5464 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5465 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5466 void*: cropElemAtVoidSmallJsonG, \ 5467 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5468 default: cropElemAtSmallJsonG), \ 5469 uint32_t: _Generic(returnType, \ 5470 baset*: cropElemAtSmallJsonG, \ 5471 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5472 bool: cropElemAtBoolSmallJsonG, \ 5473 double: cropElemAtDoubleSmallJsonG, \ 5474 int64_t: cropElemAtIntSmallJsonG, \ 5475 int32_t: cropElemAtInt32SmallJsonG, \ 5476 uint64_t: cropElemAtUintSmallJsonG, \ 5477 uint32_t: cropElemAtUint32SmallJsonG, \ 5478 char*: cropElemAtSSmallJsonG, \ 5479 smallDictt*: cropElemAtDictSmallJsonG, \ 5480 smallArrayt*: cropElemAtArraySmallJsonG, \ 5481 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5482 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5483 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5484 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5485 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5486 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5487 void*: cropElemAtVoidSmallJsonG, \ 5488 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5489 default: cropElemAtSmallJsonG), \ 5490 uint16_t: _Generic(returnType, \ 5491 baset*: cropElemAtSmallJsonG, \ 5492 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5493 bool: cropElemAtBoolSmallJsonG, \ 5494 double: cropElemAtDoubleSmallJsonG, \ 5495 int64_t: cropElemAtIntSmallJsonG, \ 5496 int32_t: cropElemAtInt32SmallJsonG, \ 5497 uint64_t: cropElemAtUintSmallJsonG, \ 5498 uint32_t: cropElemAtUint32SmallJsonG, \ 5499 char*: cropElemAtSSmallJsonG, \ 5500 smallDictt*: cropElemAtDictSmallJsonG, \ 5501 smallArrayt*: cropElemAtArraySmallJsonG, \ 5502 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5503 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5504 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5505 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5506 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5507 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5508 void*: cropElemAtVoidSmallJsonG, \ 5509 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5510 default: cropElemAtSmallJsonG), \ 5511 uint8_t: _Generic(returnType, \ 5512 baset*: cropElemAtSmallJsonG, \ 5513 undefinedt*: cropElemAtUndefinedSmallJsonG, \ 5514 bool: cropElemAtBoolSmallJsonG, \ 5515 double: cropElemAtDoubleSmallJsonG, \ 5516 int64_t: cropElemAtIntSmallJsonG, \ 5517 int32_t: cropElemAtInt32SmallJsonG, \ 5518 uint64_t: cropElemAtUintSmallJsonG, \ 5519 uint32_t: cropElemAtUint32SmallJsonG, \ 5520 char*: cropElemAtSSmallJsonG, \ 5521 smallDictt*: cropElemAtDictSmallJsonG, \ 5522 smallArrayt*: cropElemAtArraySmallJsonG, \ 5523 smallBoolt*: cropElemAtSmallBoolSmallJsonG, \ 5524 smallBytest*: cropElemAtSmallBytesSmallJsonG, \ 5525 smallDoublet*: cropElemAtSmallDoubleSmallJsonG, \ 5526 smallIntt*: cropElemAtSmallIntSmallJsonG, \ 5527 smallJsont*: cropElemAtSmallJsonSmallJsonG, \ 5528 smallStringt*: cropElemAtSmallStringSmallJsonG, \ 5529 void*: cropElemAtVoidSmallJsonG, \ 5530 smallContainert*: cropElemAtSmallContainerSmallJsonG, \ 5531 default: cropElemAtSmallJsonG), \ 5532 default: cropElemKeySmallJsonG \ 5533 ), \ 5534 smallArrayt*: _Generic(returnType, \ 5535 baset*: cropElemSmallArrayG, \ 5536 undefinedt*: cropElemUndefinedSmallArrayG, \ 5537 bool: cropElemBoolSmallArrayG, \ 5538 double: cropElemDoubleSmallArrayG, \ 5539 int64_t: cropElemIntSmallArrayG, \ 5540 int32_t: cropElemInt32SmallArrayG, \ 5541 uint64_t: cropElemUintSmallArrayG, \ 5542 uint32_t: cropElemUint32SmallArrayG, \ 5543 char*: cropElemSSmallArrayG, \ 5544 smallDictt*: cropElemDictSmallArrayG, \ 5545 smallArrayt*: cropElemArraySmallArrayG, \ 5546 smallBoolt*: cropElemSmallBoolSmallArrayG, \ 5547 smallBytest*: cropElemSmallBytesSmallArrayG, \ 5548 smallDoublet*: cropElemSmallDoubleSmallArrayG, \ 5549 smallIntt*: cropElemSmallIntSmallArrayG, \ 5550 smallJsont*: cropElemSmallJsonSmallArrayG, \ 5551 smallStringt*: cropElemSmallStringSmallArrayG, \ 5552 void*: cropElemVoidSmallArrayG, \ 5553 smallContainert*: cropElemSmallContainerSmallArrayG, \ 5554 default: cropElemSmallArrayG), \ 5555 smallStringt*: cropElemSmallStringG, \ 5556 char *: cropElemS, \ 5557 char **: listCropElemS, \ 5558 char ***: iListCropElemS \ 5559 )(self, index) 5560 5561 5562 #define cropSmallJsonO(self, start, end) (self)->f->cropSmallJson(self, start, end) 5563 #define cropElemAtSmallJsonO(self, index) (self)->f->cropElemAtSmallJson(self, index) 5564 #define cropElemKeySmallJsonO(self, key) (self)->f->cropElemKeySmallJson(self, key) 5565 #define cropSmallStringO(self, start, end) (self)->f->cropSmallString(self, start, end) 5566 #define cropElemSmallStringO(self, index) (self)->f->cropElemSmallString(self, index) 5567 5568 #define copyRngO(self, start, end) (self)->f->copy(self, start, end) 5569 #define copyRngG(self, start, end) _Generic((self), \ 5570 char *: sliceS, \ 5571 const char *: sliceS, \ 5572 char **: iListCopyS, \ 5573 smallArrayt *: copySmallArrayG, \ 5574 smallJsont *: copySmallJsonG, \ 5575 smallStringt *: copySmallStringG \ 5576 )(self, start, end) 5577 5578 #define insertO(self, index, toInsert) (self)->f->insert(self, index, toInsert) 5579 #define insertG(self, index, toInsert) _Generic((self), \ 5580 char *: _Generic((toInsert), \ 5581 char *: insertS, \ 5582 char: injectS, \ 5583 int: injectS, \ 5584 default: injectS \ 5585 ), \ 5586 const char *: _Generic((toInsert), \ 5587 char *: insertS, \ 5588 char: injectS, \ 5589 int: injectS, \ 5590 default: injectS \ 5591 ), \ 5592 char **: _Generic((toInsert), \ 5593 char *: iInsertS, \ 5594 char: iInjectS, \ 5595 int: iInjectS, \ 5596 default: iInjectS \ 5597 ), \ 5598 char ***: _Generic((toInsert), \ 5599 char **: iListInsertS, \ 5600 char *: iListInjectS, \ 5601 char: iListInjectCharS, \ 5602 int: iListInjectCharS, \ 5603 default: iListInjectS \ 5604 ), \ 5605 smallArrayt*: _Generic((toInsert), \ 5606 baset*: injectSmallArrayG, \ 5607 bool: injectBoolSmallArrayG, \ 5608 double: injectDoubleSmallArrayG, \ 5609 int64_t: injectIntSmallArrayG, \ 5610 int32_t: injectIntSmallArrayG, \ 5611 uint32_t: injectIntSmallArrayG, \ 5612 uint64_t: injectIntSmallArrayG, \ 5613 char*: injectSSmallArrayG, \ 5614 char: injectCharSmallArrayG, \ 5615 const char*: injectSSmallArrayG, \ 5616 smallDictt*: injectDictSmallArrayG, \ 5617 smallArrayt*: insertSmallArrayG, \ 5618 char **: injectArraycSmallArrayG, \ 5619 const char **: injectCArraycSmallArrayG, \ 5620 smallBoolt*: injectSmallBoolSmallArrayG, \ 5621 smallBytest*: injectSmallBytesSmallArrayG, \ 5622 smallDoublet*: injectSmallDoubleSmallArrayG, \ 5623 smallIntt*: injectSmallIntSmallArrayG, \ 5624 smallJsont*: insertSmallJsonSmallArrayG, \ 5625 smallStringt*: injectSmallStringSmallArrayG, \ 5626 smallContainert*: injectSmallContainerSmallArrayG, \ 5627 undefinedt*: injectUndefinedSmallArrayG, \ 5628 default: injectVoidSmallArrayG \ 5629 ), \ 5630 smallJsont*: _Generic((toInsert), \ 5631 baset*: injectSmallJsonG, \ 5632 bool: injectBoolSmallJsonG, \ 5633 double: injectDoubleSmallJsonG, \ 5634 int64_t: injectIntSmallJsonG, \ 5635 int32_t: injectIntSmallJsonG, \ 5636 uint32_t: injectIntSmallJsonG, \ 5637 uint64_t: injectIntSmallJsonG, \ 5638 char*: injectSSmallJsonG, \ 5639 char: injectCharSmallJsonG, \ 5640 const char*: injectSSmallJsonG, \ 5641 smallDictt*: injectDictSmallJsonG, \ 5642 smallArrayt*: insertSmallJsonG, \ 5643 char **: injectArraycSmallJsonG, \ 5644 const char **: injectCArraycSmallJsonG, \ 5645 smallBoolt*: injectSmallBoolSmallJsonG, \ 5646 smallBytest*: injectSmallBytesSmallJsonG, \ 5647 smallDoublet*: injectSmallDoubleSmallJsonG, \ 5648 smallIntt*: injectSmallIntSmallJsonG, \ 5649 smallJsont*: insertSmallJsonSmallJsonG, \ 5650 smallStringt*: injectSmallStringSmallJsonG, \ 5651 smallContainert*: injectSmallContainerSmallJsonG, \ 5652 undefinedt*: injectUndefinedSmallJsonG, \ 5653 default: injectVoidSmallJsonG \ 5654 ), \ 5655 smallStringt *: _Generic(toInsert, \ 5656 char *: insertSSmallStringG, \ 5657 const char *: insertSSmallStringG, \ 5658 char: injectSmallStringG, \ 5659 int: injectSmallStringG, \ 5660 smallJsont *: insertSmallJsonSmallStringG, \ 5661 smallStringt *: insertSmallStringG, \ 5662 default: insertSSmallStringG \ 5663 ) \ 5664 )(self, index, toInsert) 5665 5666 #define insertNSmashO(self, index, toInsert) (self)->f->insertNSmash(self, index, toInsert) 5667 #define insertNFreeO insertNSmashO 5668 #define insertNFreeG insertNSmashG 5669 #define insertNSmashG(self, index, toInsert) _Generic((self), \ 5670 char *: _Generic((toInsert), \ 5671 char *: insertNFreeS, \ 5672 char: injectS, \ 5673 int: injectS, \ 5674 default: injectS \ 5675 ), \ 5676 const char *: _Generic((toInsert), \ 5677 char *: insertNFreeS, \ 5678 char: injectS, \ 5679 int: injectS, \ 5680 default: injectS \ 5681 ), \ 5682 char **: _Generic((toInsert), \ 5683 char *: iInsertNFreeS, \ 5684 char: iInjectS, \ 5685 int: iInjectS, \ 5686 default: iInjectS \ 5687 ), \ 5688 char ***: _Generic((toInsert), \ 5689 char **: iListInsertNFreeS, \ 5690 char *: iListInjectS, \ 5691 char: iListInjectCharS, \ 5692 int: iListInjectCharS, \ 5693 default: iListInjectS \ 5694 ), \ 5695 smallArrayt*: _Generic((toInsert), \ 5696 baset*: injectNFreeSmallArrayG, \ 5697 bool: injectBoolSmallArrayG, \ 5698 double: injectDoubleSmallArrayG, \ 5699 int64_t: injectIntSmallArrayG, \ 5700 int32_t: injectIntSmallArrayG, \ 5701 uint32_t: injectIntSmallArrayG, \ 5702 uint64_t: injectIntSmallArrayG, \ 5703 char*: injectNFreeSSmallArrayG, \ 5704 char: injectCharSmallArrayG, \ 5705 smallDictt*: injectNFreeDictSmallArrayG, \ 5706 smallArrayt*: insertNSmashSmallArrayG, \ 5707 char **: injectNFreeArraycSmallArrayG, \ 5708 smallBoolt*: injectNFreeSmallBoolSmallArrayG, \ 5709 smallBytest*: injectNFreeSmallBytesSmallArrayG, \ 5710 smallDoublet*: injectNFreeSmallDoubleSmallArrayG, \ 5711 smallIntt*: injectNFreeSmallIntSmallArrayG, \ 5712 smallJsont*: insertNSmashSmallJsonSmallArrayG, \ 5713 smallStringt*: injectNFreeSmallStringSmallArrayG, \ 5714 smallContainert*: injectNFreeSmallContainerSmallArrayG, \ 5715 undefinedt*: injectNFreeUndefinedSmallArrayG, \ 5716 default: injectVoidSmallArrayG \ 5717 ), \ 5718 smallJsont*: _Generic((toInsert), \ 5719 baset*: injectNFreeSmallJsonG, \ 5720 bool: injectBoolSmallJsonG, \ 5721 double: injectDoubleSmallJsonG, \ 5722 int64_t: injectIntSmallJsonG, \ 5723 int32_t: injectIntSmallJsonG, \ 5724 uint32_t: injectIntSmallJsonG, \ 5725 uint64_t: injectIntSmallJsonG, \ 5726 char*: injectNFreeSSmallJsonG, \ 5727 char: injectCharSmallJsonG, \ 5728 smallDictt*: injectNFreeDictSmallJsonG, \ 5729 smallArrayt*: insertNSmashSmallJsonG, \ 5730 char **: injectNFreeArraycSmallJsonG, \ 5731 smallBoolt*: injectNFreeSmallBoolSmallJsonG, \ 5732 smallBytest*: injectNFreeSmallBytesSmallJsonG, \ 5733 smallDoublet*: injectNFreeSmallDoubleSmallJsonG, \ 5734 smallIntt*: injectNFreeSmallIntSmallJsonG, \ 5735 smallJsont*: insertNSmashSmallJsonSmallJsonG, \ 5736 smallStringt*: injectNFreeSmallStringSmallJsonG, \ 5737 smallContainert*: injectNFreeSmallContainerSmallJsonG, \ 5738 undefinedt*: injectNFreeUndefinedSmallJsonG, \ 5739 default: injectVoidSmallJsonG \ 5740 ), \ 5741 smallStringt *: _Generic(toInsert, \ 5742 char *: insertSNFreeSmallStringG, \ 5743 char: injectSmallStringG, \ 5744 int: injectSmallStringG, \ 5745 smallJsont *: insertNFreeSmallJsonSmallStringG, \ 5746 smallStringt *: insertNFreeSmallStringG, \ 5747 default: insertSNFreeSmallStringG \ 5748 ) \ 5749 )(self, index, toInsert) 5750 5751 #define injectG(self, index, value) _Generic((self), \ 5752 char *: injectS, \ 5753 const char *: injectS, \ 5754 char **: iInjectS, \ 5755 char ***: _Generic(value, \ 5756 char *: iListInjectS, \ 5757 char: iListInjectCharS, \ 5758 int: iListInjectCharS, \ 5759 default: iListInjectS \ 5760 ), \ 5761 smallArrayt*: _Generic((value), \ 5762 baset*: injectSmallArrayG, \ 5763 bool: injectBoolSmallArrayG, \ 5764 double: injectDoubleSmallArrayG, \ 5765 int64_t: injectIntSmallArrayG, \ 5766 int32_t: injectIntSmallArrayG, \ 5767 uint32_t: injectIntSmallArrayG, \ 5768 uint64_t: injectIntSmallArrayG, \ 5769 char*: injectSSmallArrayG, \ 5770 char: injectCharSmallArrayG, \ 5771 const char*: injectSSmallArrayG, \ 5772 smallDictt*: injectDictSmallArrayG, \ 5773 smallArrayt*: injectArraySmallArrayG, \ 5774 char **: injectArraycSmallArrayG, \ 5775 const char **: injectCArraycSmallArrayG, \ 5776 smallBoolt*: injectSmallBoolSmallArrayG, \ 5777 smallBytest*: injectSmallBytesSmallArrayG, \ 5778 smallDoublet*: injectSmallDoubleSmallArrayG, \ 5779 smallIntt*: injectSmallIntSmallArrayG, \ 5780 smallJsont*: injectSmallJsonSmallArrayG, \ 5781 smallStringt*: injectSmallStringSmallArrayG, \ 5782 smallContainert*: injectSmallContainerSmallArrayG, \ 5783 undefinedt*: injectUndefinedSmallArrayG, \ 5784 default: injectVoidSmallArrayG), \ 5785 smallJsont*: _Generic((value), \ 5786 baset*: injectSmallJsonG, \ 5787 bool: injectBoolSmallJsonG, \ 5788 double: injectDoubleSmallJsonG, \ 5789 int64_t: injectIntSmallJsonG, \ 5790 int32_t: injectIntSmallJsonG, \ 5791 uint32_t: injectIntSmallJsonG, \ 5792 uint64_t: injectIntSmallJsonG, \ 5793 char*: injectSSmallJsonG, \ 5794 char: injectCharSmallJsonG, \ 5795 const char*: injectSSmallJsonG, \ 5796 smallDictt*: injectDictSmallJsonG, \ 5797 smallArrayt*: injectArraySmallJsonG, \ 5798 char **: injectArraycSmallJsonG, \ 5799 const char **: injectCArraycSmallJsonG, \ 5800 smallBoolt*: injectSmallBoolSmallJsonG, \ 5801 smallBytest*: injectSmallBytesSmallJsonG, \ 5802 smallDoublet*: injectSmallDoubleSmallJsonG, \ 5803 smallIntt*: injectSmallIntSmallJsonG, \ 5804 smallJsont*: injectSmallJsonSmallJsonG, \ 5805 smallStringt*: injectSmallStringSmallJsonG, \ 5806 smallContainert*: injectSmallContainerSmallJsonG, \ 5807 undefinedt*: injectUndefinedSmallJsonG, \ 5808 default: injectVoidSmallJsonG), \ 5809 smallStringt *: injectSmallStringG\ 5810 )(self, index, value) 5811 5812 #define injectNFreeG(self, index, value) _Generic((self), \ 5813 char *: injectS, \ 5814 const char *: injectS, \ 5815 char **: iInjectS, \ 5816 char ***: iListInjectS, \ 5817 smallArrayt*: _Generic((value), \ 5818 baset*: injectNFreeSmallArrayG, \ 5819 bool: injectBoolSmallArrayG, \ 5820 double: injectDoubleSmallArrayG, \ 5821 int64_t: injectIntSmallArrayG, \ 5822 int32_t: injectIntSmallArrayG, \ 5823 uint32_t: injectIntSmallArrayG, \ 5824 uint64_t: injectIntSmallArrayG, \ 5825 char*: injectNFreeSSmallArrayG, \ 5826 char: injectCharSmallArrayG, \ 5827 smallDictt*: injectNFreeDictSmallArrayG, \ 5828 smallArrayt*: injectNFreeArraySmallArrayG, \ 5829 char **: injectNFreeArraycSmallArrayG, \ 5830 smallBoolt*: injectNFreeSmallBoolSmallArrayG, \ 5831 smallBytest*: injectNFreeSmallBytesSmallArrayG, \ 5832 smallDoublet*: injectNFreeSmallDoubleSmallArrayG, \ 5833 smallIntt*: injectNFreeSmallIntSmallArrayG, \ 5834 smallJsont*: injectNFreeSmallJsonSmallArrayG, \ 5835 smallStringt*: injectNFreeSmallStringSmallArrayG, \ 5836 smallContainert*: injectNFreeSmallContainerSmallArrayG, \ 5837 undefinedt*: injectNFreeUndefinedSmallArrayG, \ 5838 default: injectVoidSmallArrayG), \ 5839 smallJsont*: _Generic((value), \ 5840 baset*: injectNFreeSmallJsonG, \ 5841 bool: injectBoolSmallJsonG, \ 5842 double: injectDoubleSmallJsonG, \ 5843 int64_t: injectIntSmallJsonG, \ 5844 int32_t: injectIntSmallJsonG, \ 5845 uint32_t: injectIntSmallJsonG, \ 5846 uint64_t: injectIntSmallJsonG, \ 5847 char*: injectNFreeSSmallJsonG, \ 5848 char: injectCharSmallJsonG, \ 5849 smallDictt*: injectNFreeDictSmallJsonG, \ 5850 smallArrayt*: injectNFreeArraySmallJsonG, \ 5851 char **: injectNFreeArraycSmallJsonG, \ 5852 smallBoolt*: injectNFreeSmallBoolSmallJsonG, \ 5853 smallBytest*: injectNFreeSmallBytesSmallJsonG, \ 5854 smallDoublet*: injectNFreeSmallDoubleSmallJsonG, \ 5855 smallIntt*: injectNFreeSmallIntSmallJsonG, \ 5856 smallJsont*: injectNFreeSmallJsonSmallJsonG, \ 5857 smallStringt*: injectNFreeSmallStringSmallJsonG, \ 5858 smallContainert*: injectNFreeSmallContainerSmallJsonG, \ 5859 undefinedt*: injectNFreeUndefinedSmallJsonG, \ 5860 default: injectVoidSmallJsonG), \ 5861 smallStringt *: injectSmallStringG\ 5862 )(self, index, value) 5863 5864 #define findO(self, needle) (self)->f->find(self, needle) 5865 #define findG(self, needle) _Generic((self), \ 5866 char *: _Generic(needle, \ 5867 char *: findS, \ 5868 const char *: findS, \ 5869 char: findCharS, \ 5870 int: findCharS, \ 5871 default: findS \ 5872 ), \ 5873 const char *: _Generic(needle, \ 5874 char *: findS, \ 5875 const char *: findS, \ 5876 char: findCharS, \ 5877 int: findCharS, \ 5878 default: findS \ 5879 ), \ 5880 char **: listIndexOfS , \ 5881 const char **: listIndexOfCG, \ 5882 smallArrayt *: _Generic(needle, \ 5883 char *: indexOfSSmallArrayG, \ 5884 const char *: indexOfSSmallArrayG, \ 5885 char: indexOfCharSmallArrayG, \ 5886 int: indexOfCharSmallArrayG, \ 5887 smallJsont*: indexOfSmallJsonSmallArrayG, \ 5888 smallStringt*: indexOfSmallStringSmallArrayG, \ 5889 default: indexOfSSmallArrayG), \ 5890 smallJsont *: _Generic(needle, \ 5891 char *: findSmallJsonG, \ 5892 const char *: findSmallJsonG, \ 5893 char: findCharSmallJsonG, \ 5894 int: findCharSmallJsonG, \ 5895 smallJsont *: findJsonSmallJsonG, \ 5896 smallStringt *: findSmallStringSmallJsonG \ 5897 ), \ 5898 smallStringt *: _Generic(needle, \ 5899 char *: findSmallStringG, \ 5900 const char *: findSmallStringG, \ 5901 char: findCharSmallStringG, \ 5902 int: findCharSmallStringG, \ 5903 smallJsont *: findSmallJsonSmallStringG, \ 5904 smallStringt *: findSmallStringSmallStringG \ 5905 ) \ 5906 )(self, needle) 5907 5908 #define hasO(self, key) (self)->f->has(self, key) 5909 #define hasG(self, needle) _Generic((self), \ 5910 char *: _Generic(needle, \ 5911 char *: hasS, \ 5912 const char *: hasS, \ 5913 char: hasCharS, \ 5914 int: hasCharS, \ 5915 default: hasS \ 5916 ), \ 5917 const char *: _Generic(needle, \ 5918 char *: hasS, \ 5919 const char *: hasS, \ 5920 char: hasCharS, \ 5921 int: hasCharS, \ 5922 default: hasS \ 5923 ), \ 5924 char **: _Generic(needle, \ 5925 char *: listHasS , \ 5926 const char *: listHasS , \ 5927 char: listHasCharS, \ 5928 int: listHasCharS, \ 5929 default: listHasS \ 5930 ), \ 5931 const char **: _Generic(needle, \ 5932 char *: listHasCG , \ 5933 const char *: listHasCG , \ 5934 char: listHasCharCG, \ 5935 int: listHasCharCG, \ 5936 default: listHasCG \ 5937 ), \ 5938 smallArrayt*: _Generic((needle), \ 5939 baset*: hasSmallArrayG, \ 5940 bool: hasBoolSmallArrayG, \ 5941 double: hasDoubleSmallArrayG, \ 5942 int64_t: hasIntSmallArrayG, \ 5943 int32_t: hasIntSmallArrayG, \ 5944 uint32_t: hasIntSmallArrayG, \ 5945 uint64_t: hasIntSmallArrayG, \ 5946 char*: hasSSmallArrayG, \ 5947 char: hasCharSmallArrayG, \ 5948 const char*: hasSSmallArrayG, \ 5949 smallDictt*: hasDictSmallArrayG, \ 5950 smallArrayt*: hasArraySmallArrayG, \ 5951 char **: hasArraycSmallArrayG, \ 5952 const char **: hasCArraycSmallArrayG, \ 5953 smallBoolt*: hasSmallBoolSmallArrayG, \ 5954 smallBytest*: hasSmallBytesSmallArrayG, \ 5955 smallDoublet*: hasSmallDoubleSmallArrayG, \ 5956 smallIntt*: hasSmallIntSmallArrayG, \ 5957 smallJsont*: hasSmallJsonSmallArrayG, \ 5958 smallStringt*: hasSmallStringSmallArrayG, \ 5959 smallContainert*: hasSmallContainerSmallArrayG, \ 5960 undefinedt*: hasUndefinedSmallArrayG, \ 5961 default: hasUndefinedSmallArrayG), \ 5962 smallJsont*: _Generic((needle), \ 5963 baset*: hasSmallJsonG, \ 5964 bool: hasBoolSmallJsonG, \ 5965 double: hasDoubleSmallJsonG, \ 5966 int64_t: hasIntSmallJsonG, \ 5967 int32_t: hasIntSmallJsonG, \ 5968 uint32_t: hasIntSmallJsonG, \ 5969 uint64_t: hasIntSmallJsonG, \ 5970 char*: hasSSmallJsonG, \ 5971 char: hasCharSmallJsonG, \ 5972 const char*: hasSSmallJsonG, \ 5973 smallDictt*: hasDictSmallJsonG, \ 5974 smallArrayt*: hasArraySmallJsonG, \ 5975 char **: hasArraycSmallJsonG, \ 5976 const char **: hasCArraycSmallJsonG, \ 5977 smallBoolt*: hasSmallBoolSmallJsonG, \ 5978 smallBytest*: hasSmallBytesSmallJsonG, \ 5979 smallDoublet*: hasSmallDoubleSmallJsonG, \ 5980 smallIntt*: hasSmallIntSmallJsonG, \ 5981 smallJsont*: hasSmallJsonSmallJsonG, \ 5982 smallStringt*: hasSmallStringSmallJsonG, \ 5983 smallContainert*: hasSmallContainerSmallJsonG, \ 5984 undefinedt*: hasUndefinedSmallJsonG, \ 5985 default: hasUndefinedSmallJsonG), \ 5986 smallDictt *: _Generic(needle, \ 5987 char *: hasSmallDictG, \ 5988 const char *: hasSmallDictG, \ 5989 char: hasKCharSmallDictG, \ 5990 int: hasKCharSmallDictG, \ 5991 default: hasSmallDictG \ 5992 ), \ 5993 smallStringt *: _Generic(needle, \ 5994 char *: hasSmallStringG, \ 5995 const char *: hasSmallStringG, \ 5996 char: hasCharSmallStringG, \ 5997 int: hasCharSmallStringG, \ 5998 smallJsont *: hasSmallJsonSmallStringG, \ 5999 smallStringt *: hasSmallStringSmallStringG, \ 6000 default: hasSmallStringG \ 6001 ) \ 6002 )(self, needle) 6003 6004 #define indexOfO(self, key) (self)->f->indexOf(self, key) 6005 #define indexOfG(self, needle) _Generic((self), \ 6006 char *: _Generic(needle, \ 6007 char *: indexOfS, \ 6008 const char *: indexOfS, \ 6009 char: indexOfCharS, \ 6010 int: indexOfCharS, \ 6011 default: indexOfS \ 6012 ), \ 6013 const char *: _Generic(needle, \ 6014 char *: indexOfS, \ 6015 const char *: indexOfS, \ 6016 char: indexOfCharS, \ 6017 int: indexOfCharS, \ 6018 default: indexOfS \ 6019 ), \ 6020 char **: _Generic(needle, \ 6021 char *: listIndexOfS , \ 6022 const char *: listIndexOfS , \ 6023 char: listIndexOfCharS , \ 6024 int: listIndexOfCharS , \ 6025 default: listIndexOfS \ 6026 ), \ 6027 const char **: _Generic(needle, \ 6028 char *: listIndexOfCG , \ 6029 const char *: listIndexOfCG , \ 6030 char: listIndexOfCharCG , \ 6031 int: listIndexOfCharCG , \ 6032 default: listIndexOfCG \ 6033 ), \ 6034 smallArrayt*: _Generic((needle), \ 6035 baset*: indexOfSmallArrayG, \ 6036 bool: indexOfBoolSmallArrayG, \ 6037 double: indexOfDoubleSmallArrayG, \ 6038 int64_t: indexOfIntSmallArrayG, \ 6039 int32_t: indexOfIntSmallArrayG, \ 6040 uint32_t: indexOfIntSmallArrayG, \ 6041 uint64_t: indexOfIntSmallArrayG, \ 6042 char*: indexOfSSmallArrayG, \ 6043 char: indexOfCharSmallArrayG, \ 6044 const char*: indexOfSSmallArrayG, \ 6045 smallDictt*: indexOfDictSmallArrayG, \ 6046 smallArrayt*: indexOfArraySmallArrayG, \ 6047 char **: indexOfArraycSmallArrayG, \ 6048 const char **: indexOfCArraycSmallArrayG, \ 6049 smallBoolt*: indexOfSmallBoolSmallArrayG, \ 6050 smallBytest*: indexOfSmallBytesSmallArrayG, \ 6051 smallDoublet*: indexOfSmallDoubleSmallArrayG, \ 6052 smallIntt*: indexOfSmallIntSmallArrayG, \ 6053 smallJsont*: indexOfSmallJsonSmallArrayG, \ 6054 smallStringt*: indexOfSmallStringSmallArrayG, \ 6055 smallContainert*: indexOfSmallContainerSmallArrayG, \ 6056 undefinedt*: indexOfUndefinedSmallArrayG, \ 6057 default: indexOfUndefinedSmallArrayG \ 6058 ), \ 6059 smallJsont*: _Generic((needle), \ 6060 baset*: indexOfSmallJsonG, \ 6061 bool: indexOfBoolSmallJsonG, \ 6062 double: indexOfDoubleSmallJsonG, \ 6063 int64_t: indexOfIntSmallJsonG, \ 6064 int32_t: indexOfIntSmallJsonG, \ 6065 uint32_t: indexOfIntSmallJsonG, \ 6066 uint64_t: indexOfIntSmallJsonG, \ 6067 char*: indexOfSSmallJsonG, \ 6068 char: indexOfCharSmallJsonG, \ 6069 const char*: indexOfSSmallJsonG, \ 6070 smallDictt*: indexOfDictSmallJsonG, \ 6071 smallArrayt*: indexOfArraySmallJsonG, \ 6072 char **: indexOfArraycSmallJsonG, \ 6073 const char **: indexOfCArraycSmallJsonG, \ 6074 smallBoolt*: indexOfSmallBoolSmallJsonG, \ 6075 smallBytest*: indexOfSmallBytesSmallJsonG, \ 6076 smallDoublet*: indexOfSmallDoubleSmallJsonG, \ 6077 smallIntt*: indexOfSmallIntSmallJsonG, \ 6078 smallJsont*: indexOfSmallJsonSmallJsonG, \ 6079 smallStringt*: indexOfSmallStringSmallJsonG, \ 6080 smallContainert*: indexOfSmallContainerSmallJsonG, \ 6081 undefinedt*: indexOfUndefinedSmallJsonG, \ 6082 default: indexOfUndefinedSmallJsonG \ 6083 ), \ 6084 smallDictt*: _Generic((needle), \ 6085 baset*: keyBySmallDictG, \ 6086 bool: keyByBoolSmallDictG, \ 6087 double: keyByDoubleSmallDictG, \ 6088 int64_t: keyByIntSmallDictG, \ 6089 int32_t: keyByIntSmallDictG, \ 6090 uint32_t: keyByIntSmallDictG, \ 6091 uint64_t: keyByIntSmallDictG, \ 6092 char*: keyBySSmallDictG, \ 6093 char: keyByCharSmallDictG, \ 6094 const char*: keyBySSmallDictG, \ 6095 smallDictt*: keyByDictSmallDictG, \ 6096 smallArrayt*: keyByArraySmallDictG, \ 6097 char **: keyByArraycSmallDictG, \ 6098 const char **: keyByCArraycSmallDictG, \ 6099 smallBoolt*: keyBySmallBoolSmallDictG, \ 6100 smallBytest*: keyBySmallBytesSmallDictG, \ 6101 smallDoublet*: keyBySmallDoubleSmallDictG, \ 6102 smallIntt*: keyBySmallIntSmallDictG, \ 6103 smallJsont*: keyBySmallJsonSmallDictG, \ 6104 smallStringt*: keyBySmallStringSmallDictG, \ 6105 smallContainert*: keyBySmallContainerSmallDictG, \ 6106 undefinedt*: keyByUndefinedSmallDictG, \ 6107 default: keyByUndefinedSmallDictG \ 6108 ), \ 6109 smallStringt *: _Generic(needle, \ 6110 char *: indexOfSmallStringG, \ 6111 const char *: indexOfSmallStringG, \ 6112 char: indexOfCharSmallStringG, \ 6113 int: indexOfCharSmallStringG, \ 6114 smallJsont *: indexOfSmallJsonSmallStringG, \ 6115 smallStringt *: indexOfSmallStringSmallStringG, \ 6116 default: indexOfSmallStringG \ 6117 ) \ 6118 )(self, needle) 6119 6120 #define keyByO(self, value) (self)->f->keyBy(self, value) 6121 #define keyByG(self, needle) _Generic((self), \ 6122 char *: _Generic(needle, \ 6123 char *: indexOfS, \ 6124 const char *: indexOfS, \ 6125 char: indexOfCharS, \ 6126 int: indexOfCharS, \ 6127 default: indexOfS \ 6128 ), \ 6129 const char *: _Generic(needle, \ 6130 char *: indexOfS, \ 6131 const char *: indexOfS, \ 6132 char: indexOfCharS, \ 6133 int: indexOfCharS, \ 6134 default: indexOfS \ 6135 ), \ 6136 char **: _Generic(needle, \ 6137 char *: listIndexOfS , \ 6138 const char *: listIndexOfS , \ 6139 char: listIndexOfCharS , \ 6140 int: listIndexOfCharS , \ 6141 default: listIndexOfS \ 6142 ), \ 6143 const char **: _Generic(needle, \ 6144 char *: listIndexOfCG , \ 6145 const char *: listIndexOfCG , \ 6146 char: listIndexOfCharCG , \ 6147 int: listIndexOfCharCG , \ 6148 default: listIndexOfCG \ 6149 ), \ 6150 smallArrayt*: _Generic((needle), \ 6151 baset*: indexOfSmallArrayG, \ 6152 bool: indexOfBoolSmallArrayG, \ 6153 double: indexOfDoubleSmallArrayG, \ 6154 int64_t: indexOfIntSmallArrayG, \ 6155 int32_t: indexOfIntSmallArrayG, \ 6156 uint32_t: indexOfIntSmallArrayG, \ 6157 uint64_t: indexOfIntSmallArrayG, \ 6158 char*: indexOfSSmallArrayG, \ 6159 char: indexOfCharSmallArrayG, \ 6160 const char*: indexOfSSmallArrayG, \ 6161 smallDictt*: indexOfDictSmallArrayG, \ 6162 smallArrayt*: indexOfArraySmallArrayG, \ 6163 char **: indexOfArraycSmallArrayG, \ 6164 const char **: indexOfCArraycSmallArrayG, \ 6165 smallBoolt*: indexOfSmallBoolSmallArrayG, \ 6166 smallBytest*: indexOfSmallBytesSmallArrayG, \ 6167 smallDoublet*: indexOfSmallDoubleSmallArrayG, \ 6168 smallIntt*: indexOfSmallIntSmallArrayG, \ 6169 smallJsont*: indexOfSmallJsonSmallArrayG, \ 6170 smallStringt*: indexOfSmallStringSmallArrayG, \ 6171 smallContainert*: indexOfSmallContainerSmallArrayG, \ 6172 undefinedt*: indexOfUndefinedSmallArrayG, \ 6173 default: indexOfUndefinedSmallArrayG \ 6174 ), \ 6175 smallDictt*: _Generic((needle), \ 6176 baset*: keyBySmallDictG, \ 6177 bool: keyByBoolSmallDictG, \ 6178 double: keyByDoubleSmallDictG, \ 6179 int64_t: keyByIntSmallDictG, \ 6180 int32_t: keyByIntSmallDictG, \ 6181 uint32_t: keyByIntSmallDictG, \ 6182 uint64_t: keyByIntSmallDictG, \ 6183 char*: keyBySSmallDictG, \ 6184 char: keyByCharSmallDictG, \ 6185 const char*: keyBySSmallDictG, \ 6186 smallDictt*: keyByDictSmallDictG, \ 6187 smallArrayt*: keyByArraySmallDictG, \ 6188 char **: keyByArraycSmallDictG, \ 6189 const char **: keyByCArraycSmallDictG, \ 6190 smallBoolt*: keyBySmallBoolSmallDictG, \ 6191 smallBytest*: keyBySmallBytesSmallDictG, \ 6192 smallDoublet*: keyBySmallDoubleSmallDictG, \ 6193 smallIntt*: keyBySmallIntSmallDictG, \ 6194 smallJsont*: keyBySmallJsonSmallDictG, \ 6195 smallStringt*: keyBySmallStringSmallDictG, \ 6196 smallContainert*: keyBySmallContainerSmallDictG, \ 6197 undefinedt*: keyByUndefinedSmallDictG, \ 6198 default: keyByUndefinedSmallDictG \ 6199 ), \ 6200 smallJsont*: _Generic((needle), \ 6201 baset*: keyBySmallJsonG, \ 6202 bool: keyByBoolSmallJsonG, \ 6203 double: keyByDoubleSmallJsonG, \ 6204 int64_t: keyByIntSmallJsonG, \ 6205 int32_t: keyByIntSmallJsonG, \ 6206 uint32_t: keyByIntSmallJsonG, \ 6207 uint64_t: keyByIntSmallJsonG, \ 6208 char*: keyBySSmallJsonG, \ 6209 char: keyByCharSmallJsonG, \ 6210 const char*: keyBySSmallJsonG, \ 6211 smallDictt*: keyByDictSmallJsonG, \ 6212 smallArrayt*: keyByArraySmallJsonG, \ 6213 char **: keyByArraycSmallJsonG, \ 6214 const char **: keyByCArraycSmallJsonG, \ 6215 smallBoolt*: keyBySmallBoolSmallJsonG, \ 6216 smallBytest*: keyBySmallBytesSmallJsonG, \ 6217 smallDoublet*: keyBySmallDoubleSmallJsonG, \ 6218 smallIntt*: keyBySmallIntSmallJsonG, \ 6219 smallJsont*: keyBySmallJsonSmallJsonG, \ 6220 smallStringt*: keyBySmallStringSmallJsonG, \ 6221 smallContainert*: keyBySmallContainerSmallJsonG, \ 6222 undefinedt*: keyByUndefinedSmallJsonG, \ 6223 default: keyByUndefinedSmallJsonG \ 6224 ), \ 6225 smallStringt *: _Generic(needle, \ 6226 char *: indexOfSmallStringG, \ 6227 const char *: indexOfSmallStringG, \ 6228 char: indexOfCharSmallStringG, \ 6229 int: indexOfCharSmallStringG, \ 6230 smallJsont *: indexOfSmallJsonSmallStringG, \ 6231 smallStringt *: indexOfSmallStringSmallStringG, \ 6232 default: indexOfSmallStringG \ 6233 ) \ 6234 )(self, needle) 6235 6236 #define icFindO(self, needle) (self)->f->icFind(self, needle) 6237 #define icFindG(self, needle) _Generic((self), \ 6238 char *: _Generic(needle, \ 6239 char *: icFindS, \ 6240 const char *: icFindS, \ 6241 char: icFindCharS, \ 6242 int: icFindCharS, \ 6243 default: icFindS \ 6244 ), \ 6245 const char *: _Generic(needle, \ 6246 char *: icFindS, \ 6247 const char *: icFindS, \ 6248 char: icFindCharS, \ 6249 int: icFindCharS, \ 6250 default: icFindS \ 6251 ), \ 6252 char **: icListIndexOfS, \ 6253 const char **: icListIndexOfCG, \ 6254 smallArrayt *: _Generic(needle, \ 6255 char *: icIndexOfSSmallArrayG, \ 6256 const char *: icIndexOfSSmallArrayG, \ 6257 char: icIndexOfCharSmallArrayG, \ 6258 int: icIndexOfCharSmallArrayG, \ 6259 smallJsont*: icIndexOfSmallJsonSmallArrayG, \ 6260 smallStringt*: icIndexOfSmallStringSmallArrayG \ 6261 ), \ 6262 smallJsont *: _Generic(needle, \ 6263 char *: icFindSmallJsonG, \ 6264 const char *: icFindSmallJsonG, \ 6265 char: icFindCharSmallJsonG, \ 6266 int: icFindCharSmallJsonG, \ 6267 smallJsont *: icFindJsonSmallJsonG, \ 6268 smallStringt *: icFindSmallStringSmallJsonG \ 6269 ), \ 6270 smallStringt *: _Generic(needle, \ 6271 char *: icFindSmallStringG, \ 6272 const char *: icFindSmallStringG, \ 6273 char: icFindCharSmallStringG, \ 6274 int: icFindCharSmallStringG, \ 6275 smallJsont *: icFindSmallJsonSmallStringG, \ 6276 smallStringt *: icFindSmallStringSmallStringG \ 6277 ) \ 6278 )(self, needle) 6279 6280 #define icHasO(self, key) (self)->f->icHas(self, key) 6281 #define icHasG(self, needle) _Generic((self), \ 6282 char *: _Generic(needle, \ 6283 char *: icHasS, \ 6284 const char *: icHasS, \ 6285 char: icHasCharS, \ 6286 int: icHasCharS, \ 6287 default: icHasS \ 6288 ), \ 6289 const char *: _Generic(needle, \ 6290 char *: icHasS, \ 6291 const char *: icHasS, \ 6292 char: icHasCharS, \ 6293 int: icHasCharS, \ 6294 default: icHasS \ 6295 ), \ 6296 char **: _Generic(needle, \ 6297 char *: icListHasS , \ 6298 const char *: icListHasS , \ 6299 char: icListHasCharS, \ 6300 int: icListHasCharS, \ 6301 default: icListHasS \ 6302 ), \ 6303 const char **: _Generic(needle, \ 6304 char *: icListHasCG , \ 6305 const char *: icListHasCG , \ 6306 char: icListHasCharCG, \ 6307 int: icListHasCharCG, \ 6308 default: icListHasCG \ 6309 ), \ 6310 smallArrayt*: _Generic((needle), \ 6311 baset*: icHasSmallArrayG, \ 6312 bool: hasBoolSmallArrayG, \ 6313 double: hasDoubleSmallArrayG, \ 6314 int64_t: hasIntSmallArrayG, \ 6315 int32_t: hasIntSmallArrayG, \ 6316 uint32_t: hasIntSmallArrayG, \ 6317 uint64_t: hasIntSmallArrayG, \ 6318 char*: icHasSSmallArrayG, \ 6319 char: icHasCharSmallArrayG, \ 6320 const char*: icHasSSmallArrayG, \ 6321 smallDictt*: icHasDictSmallArrayG, \ 6322 smallArrayt*: icHasArraySmallArrayG, \ 6323 char **: icHasArraycSmallArrayG, \ 6324 const char **: icHasCArraycSmallArrayG, \ 6325 smallBoolt*: hasSmallBoolSmallArrayG, \ 6326 smallBytest*: hasSmallBytesSmallArrayG, \ 6327 smallDoublet*: hasSmallDoubleSmallArrayG, \ 6328 smallIntt*: hasSmallIntSmallArrayG, \ 6329 smallJsont*: icHasSmallJsonSmallArrayG, \ 6330 smallStringt*: icHasSmallStringSmallArrayG, \ 6331 smallContainert*: hasSmallContainerSmallArrayG, \ 6332 undefinedt*: hasUndefinedSmallArrayG, \ 6333 default: hasUndefinedSmallArrayG), \ 6334 smallJsont*: _Generic((needle), \ 6335 baset*: icHasSmallJsonG, \ 6336 bool: hasBoolSmallJsonG, \ 6337 double: hasDoubleSmallJsonG, \ 6338 int64_t: hasIntSmallJsonG, \ 6339 int32_t: hasIntSmallJsonG, \ 6340 uint32_t: hasIntSmallJsonG, \ 6341 uint64_t: hasIntSmallJsonG, \ 6342 char*: icHasSSmallJsonG, \ 6343 char: icHasCharSmallJsonG, \ 6344 const char*: icHasSSmallJsonG, \ 6345 smallDictt*: icHasDictSmallJsonG, \ 6346 smallArrayt*: icHasArraySmallJsonG, \ 6347 char **: icHasArraycSmallJsonG, \ 6348 const char **: icHasCArraycSmallJsonG, \ 6349 smallBoolt*: hasSmallBoolSmallJsonG, \ 6350 smallBytest*: hasSmallBytesSmallJsonG, \ 6351 smallDoublet*: hasSmallDoubleSmallJsonG, \ 6352 smallIntt*: hasSmallIntSmallJsonG, \ 6353 smallJsont*: hasSmallJsonSmallJsonG, \ 6354 smallStringt*: icHasSmallStringSmallJsonG, \ 6355 smallContainert*: hasSmallContainerSmallJsonG, \ 6356 undefinedt*: hasUndefinedSmallJsonG, \ 6357 default: hasUndefinedSmallJsonG), \ 6358 smallDictt *: _Generic(needle, \ 6359 char *: hasSmallDictG, \ 6360 const char *: hasSmallDictG, \ 6361 char: hasKCharSmallDictG, \ 6362 int: hasKCharSmallDictG, \ 6363 default: hasSmallDictG \ 6364 ), \ 6365 smallStringt *: _Generic(needle, \ 6366 char *: icHasSmallStringG, \ 6367 const char *: icHasSmallStringG, \ 6368 char: icHasCharSmallStringG, \ 6369 int: icHasCharSmallStringG, \ 6370 smallJsont *: icHasSmallJsonSmallStringG, \ 6371 smallStringt *: icHasSmallStringSmallStringG, \ 6372 default: icHasSmallStringG \ 6373 ) \ 6374 )(self, needle) 6375 6376 #define icIndexOfO(self, key) (self)->f->icIndexOf(self, key) 6377 #define icIndexOfG(self, needle) _Generic((self), \ 6378 char *: _Generic(needle, \ 6379 char *: icIndexOfS, \ 6380 const char *: icIndexOfS, \ 6381 char: icIndexOfCharS, \ 6382 int: icIndexOfCharS, \ 6383 default: icIndexOfS \ 6384 ), \ 6385 const char *: _Generic(needle, \ 6386 char *: icIndexOfS, \ 6387 const char *: icIndexOfS, \ 6388 char: icIndexOfCharS, \ 6389 int: icIndexOfCharS, \ 6390 default: icIndexOfS \ 6391 ), \ 6392 char **: _Generic(needle, \ 6393 char *: icListIndexOfS , \ 6394 const char *: icListIndexOfS , \ 6395 char: icListIndexOfCharS , \ 6396 int: icListIndexOfCharS , \ 6397 default: icListIndexOfS \ 6398 ), \ 6399 const char **: _Generic(needle, \ 6400 char *: icListIndexOfCG , \ 6401 const char *: icListIndexOfCG , \ 6402 char: icListIndexOfCharCG , \ 6403 int: icListIndexOfCharCG , \ 6404 default: icListIndexOfCG \ 6405 ), \ 6406 smallArrayt*: _Generic((needle), \ 6407 baset*: icIndexOfSmallArrayG, \ 6408 bool: indexOfBoolSmallArrayG, \ 6409 double: indexOfDoubleSmallArrayG, \ 6410 int64_t: indexOfIntSmallArrayG, \ 6411 int32_t: indexOfIntSmallArrayG, \ 6412 uint32_t: indexOfIntSmallArrayG, \ 6413 uint64_t: indexOfIntSmallArrayG, \ 6414 char*: icIndexOfSSmallArrayG, \ 6415 char: icIndexOfCharSmallArrayG, \ 6416 const char*: icIndexOfSSmallArrayG, \ 6417 smallDictt*: icIndexOfDictSmallArrayG, \ 6418 smallArrayt*: icIndexOfArraySmallArrayG, \ 6419 char **: icIndexOfArraycSmallArrayG, \ 6420 const char **: icIndexOfCArraycSmallArrayG, \ 6421 smallBoolt*: indexOfSmallBoolSmallArrayG, \ 6422 smallBytest*: indexOfSmallBytesSmallArrayG, \ 6423 smallDoublet*: indexOfSmallDoubleSmallArrayG, \ 6424 smallIntt*: indexOfSmallIntSmallArrayG, \ 6425 smallJsont*: icIndexOfSmallJsonSmallArrayG, \ 6426 smallStringt*: icIndexOfSmallStringSmallArrayG, \ 6427 smallContainert*: indexOfSmallContainerSmallArrayG, \ 6428 undefinedt*: indexOfUndefinedSmallArrayG, \ 6429 default: indexOfUndefinedSmallArrayG \ 6430 ), \ 6431 smallJsont*: _Generic((needle), \ 6432 baset*: icIndexOfSmallJsonG, \ 6433 bool: indexOfBoolSmallJsonG, \ 6434 double: indexOfDoubleSmallJsonG, \ 6435 int64_t: indexOfIntSmallJsonG, \ 6436 int32_t: indexOfIntSmallJsonG, \ 6437 uint32_t: indexOfIntSmallJsonG, \ 6438 uint64_t: indexOfIntSmallJsonG, \ 6439 char*: icIndexOfSSmallJsonG, \ 6440 char: icIndexOfCharSmallJsonG, \ 6441 const char*: icIndexOfSSmallJsonG, \ 6442 smallDictt*: icIndexOfDictSmallJsonG, \ 6443 smallArrayt*: icIndexOfArraySmallJsonG, \ 6444 char **: icIndexOfArraycSmallJsonG, \ 6445 const char **: icIndexOfCArraycSmallJsonG, \ 6446 smallBoolt*: indexOfSmallBoolSmallJsonG, \ 6447 smallBytest*: indexOfSmallBytesSmallJsonG, \ 6448 smallDoublet*: indexOfSmallDoubleSmallJsonG, \ 6449 smallIntt*: indexOfSmallIntSmallJsonG, \ 6450 smallJsont*: indexOfSmallJsonSmallJsonG, \ 6451 smallStringt*: icIndexOfSmallStringSmallJsonG, \ 6452 smallContainert*: indexOfSmallContainerSmallJsonG, \ 6453 undefinedt*: indexOfUndefinedSmallJsonG, \ 6454 default: indexOfUndefinedSmallJsonG \ 6455 ), \ 6456 smallDictt*: _Generic((needle), \ 6457 baset*: icKeyBySmallDictG, \ 6458 bool: keyByBoolSmallDictG, \ 6459 double: keyByDoubleSmallDictG, \ 6460 int64_t: keyByIntSmallDictG, \ 6461 int32_t: keyByIntSmallDictG, \ 6462 uint32_t: keyByIntSmallDictG, \ 6463 uint64_t: keyByIntSmallDictG, \ 6464 char*: icKeyBySSmallDictG, \ 6465 char: icKeyByCharSmallDictG, \ 6466 const char*: icKeyBySSmallDictG, \ 6467 smallDictt*: icKeyByDictSmallDictG, \ 6468 smallArrayt*: icKeyByArraySmallDictG, \ 6469 char **: icKeyByArraycSmallDictG, \ 6470 const char **: icKeyByCArraycSmallDictG, \ 6471 smallBoolt*: keyBySmallBoolSmallDictG, \ 6472 smallBytest*: keyBySmallBytesSmallDictG, \ 6473 smallDoublet*: keyBySmallDoubleSmallDictG, \ 6474 smallIntt*: keyBySmallIntSmallDictG, \ 6475 smallJsont*: icKeyBySmallJsonSmallDictG, \ 6476 smallStringt*: icKeyBySmallStringSmallDictG, \ 6477 smallContainert*: keyBySmallContainerSmallDictG, \ 6478 undefinedt*: keyByUndefinedSmallDictG, \ 6479 default: keyByUndefinedSmallDictG \ 6480 ), \ 6481 smallStringt *: _Generic(needle, \ 6482 char *: icIndexOfSmallStringG, \ 6483 const char *: icIndexOfSmallStringG, \ 6484 char: icIndexOfCharSmallStringG, \ 6485 int: icIndexOfCharSmallStringG, \ 6486 smallJsont *: icIndexOfSmallJsonSmallStringG, \ 6487 smallStringt *: icIndexOfSmallStringSmallStringG, \ 6488 default: icIndexOfSmallStringG \ 6489 ) \ 6490 )(self, needle) 6491 6492 #define icKeyByO(self, value) (self)->f->icKeyBy(self, value) 6493 #define icKeyByG(self, needle) _Generic((self), \ 6494 char *: _Generic(needle, \ 6495 char *: icIndexOfS, \ 6496 const char *: icIndexOfS, \ 6497 char: icIndexOfCharS, \ 6498 int: icIndexOfCharS, \ 6499 default: icIndexOfS \ 6500 ), \ 6501 const char *: _Generic(needle, \ 6502 char *: icIndexOfS, \ 6503 const char *: icIndexOfS, \ 6504 char: icIndexOfCharS, \ 6505 int: icIndexOfCharS, \ 6506 default: icIndexOfS \ 6507 ), \ 6508 char **: _Generic(needle, \ 6509 char *: icListIndexOfS , \ 6510 const char *: icListIndexOfS , \ 6511 char: icListIndexOfCharS , \ 6512 int: icListIndexOfCharS , \ 6513 default: icListIndexOfS \ 6514 ), \ 6515 const char **: _Generic(needle, \ 6516 char *: icListIndexOfCG , \ 6517 const char *: icListIndexOfCG , \ 6518 char: icListIndexOfCharCG , \ 6519 int: icListIndexOfCharCG , \ 6520 default: icListIndexOfCG \ 6521 ), \ 6522 smallArrayt*: _Generic((needle), \ 6523 baset*: icIndexOfSmallArrayG, \ 6524 bool: indexOfBoolSmallArrayG, \ 6525 double: indexOfDoubleSmallArrayG, \ 6526 int64_t: indexOfIntSmallArrayG, \ 6527 int32_t: indexOfIntSmallArrayG, \ 6528 uint32_t: indexOfIntSmallArrayG, \ 6529 uint64_t: indexOfIntSmallArrayG, \ 6530 char*: icIndexOfSSmallArrayG, \ 6531 char: icIndexOfCharSmallArrayG, \ 6532 const char*: icIndexOfSSmallArrayG, \ 6533 smallDictt*: icIndexOfDictSmallArrayG, \ 6534 smallArrayt*: icIndexOfArraySmallArrayG, \ 6535 char **: icIndexOfArraycSmallArrayG, \ 6536 const char **: icIndexOfCArraycSmallArrayG, \ 6537 smallBoolt*: indexOfSmallBoolSmallArrayG, \ 6538 smallBytest*: indexOfSmallBytesSmallArrayG, \ 6539 smallDoublet*: indexOfSmallDoubleSmallArrayG, \ 6540 smallIntt*: indexOfSmallIntSmallArrayG, \ 6541 smallJsont*: icIndexOfSmallJsonSmallArrayG, \ 6542 smallStringt*: icIndexOfSmallStringSmallArrayG, \ 6543 smallContainert*: indexOfSmallContainerSmallArrayG, \ 6544 undefinedt*: indexOfUndefinedSmallArrayG, \ 6545 default: indexOfUndefinedSmallArrayG \ 6546 ), \ 6547 smallDictt*: _Generic((needle), \ 6548 baset*: icKeyBySmallDictG, \ 6549 bool: keyByBoolSmallDictG, \ 6550 double: keyByDoubleSmallDictG, \ 6551 int64_t: keyByIntSmallDictG, \ 6552 int32_t: keyByIntSmallDictG, \ 6553 uint32_t: keyByIntSmallDictG, \ 6554 uint64_t: keyByIntSmallDictG, \ 6555 char*: icKeyBySSmallDictG, \ 6556 char: icKeyByCharSmallDictG, \ 6557 const char*: icKeyBySSmallDictG, \ 6558 smallDictt*: icKeyByDictSmallDictG, \ 6559 smallArrayt*: icKeyByArraySmallDictG, \ 6560 char **: icKeyByArraycSmallDictG, \ 6561 const char **: icKeyByCArraycSmallDictG, \ 6562 smallBoolt*: keyBySmallBoolSmallDictG, \ 6563 smallBytest*: keyBySmallBytesSmallDictG, \ 6564 smallDoublet*: keyBySmallDoubleSmallDictG, \ 6565 smallIntt*: keyBySmallIntSmallDictG, \ 6566 smallJsont*: icKeyBySmallJsonSmallDictG, \ 6567 smallStringt*: icKeyBySmallStringSmallDictG, \ 6568 smallContainert*: keyBySmallContainerSmallDictG, \ 6569 undefinedt*: keyByUndefinedSmallDictG, \ 6570 default: keyByUndefinedSmallDictG \ 6571 ), \ 6572 smallJsont*: _Generic((needle), \ 6573 baset*: icKeyBySmallJsonG, \ 6574 bool: keyByBoolSmallJsonG, \ 6575 double: keyByDoubleSmallJsonG, \ 6576 int64_t: keyByIntSmallJsonG, \ 6577 int32_t: keyByIntSmallJsonG, \ 6578 uint32_t: keyByIntSmallJsonG, \ 6579 uint64_t: keyByIntSmallJsonG, \ 6580 char*: icKeyBySSmallJsonG, \ 6581 char: icKeyByCharSmallJsonG, \ 6582 const char*: icKeyBySSmallJsonG, \ 6583 smallDictt*: icKeyByDictSmallJsonG, \ 6584 smallArrayt*: icKeyByArraySmallJsonG, \ 6585 char **: icKeyByArraycSmallJsonG, \ 6586 const char **: icKeyByCArraycSmallJsonG, \ 6587 smallBoolt*: keyBySmallBoolSmallJsonG, \ 6588 smallBytest*: keyBySmallBytesSmallJsonG, \ 6589 smallDoublet*: keyBySmallDoubleSmallJsonG, \ 6590 smallIntt*: keyBySmallIntSmallJsonG, \ 6591 smallJsont*: keyBySmallJsonSmallJsonG, \ 6592 smallStringt*: icKeyBySmallStringSmallJsonG, \ 6593 smallContainert*: keyBySmallContainerSmallJsonG, \ 6594 undefinedt*: keyByUndefinedSmallJsonG, \ 6595 default: keyByUndefinedSmallJsonG \ 6596 ), \ 6597 smallStringt *: _Generic(needle, \ 6598 char *: icIndexOfSmallStringG, \ 6599 const char *: icIndexOfSmallStringG, \ 6600 char: icIndexOfCharSmallStringG, \ 6601 int: icIndexOfCharSmallStringG, \ 6602 smallJsont *: icIndexOfSmallJsonSmallStringG, \ 6603 smallStringt *: icIndexOfSmallStringSmallStringG, \ 6604 default: icIndexOfSmallStringG \ 6605 ) \ 6606 )(self, needle) 6607 6608 #define emptyO(self) (self)->f->empty(self) 6609 #define emptyG(self) _Generic((self), \ 6610 char **: iEmptySF, \ 6611 char ***: iListEmptySF, \ 6612 smallArrayt *: emptySmallArrayG, \ 6613 smallDictt *: emptySmallDictG, \ 6614 smallJsont *: emptySmallJsonG, \ 6615 smallStringt *: emptySmallStringG \ 6616 )(self) 6617 6618 #define isEmptyO(self) (self)->f->isEmpty(self) 6619 #define isEmptyG(self) _Generic((self), \ 6620 char *: isEmptyS, \ 6621 const char *: isEmptyS, \ 6622 char **: listIsEmptyS, \ 6623 smallArrayt *: isEmptySmallArrayG, \ 6624 smallBytest *: isEmptySmallBytesG, \ 6625 smallDictt *: isEmptySmallDictG, \ 6626 smallJsont *: isEmptySmallJsonG, \ 6627 smallStringt *: isEmptySmallStringG \ 6628 )(self) 6629 6630 #define isBlankO(self) (self)->f->isBlank(self) 6631 #define isBlankG(self) _Generic((self), \ 6632 char *: isBlankS, \ 6633 const char *: isBlankS, \ 6634 char **: listIsBlankS, \ 6635 smallArrayt *: isBlankSmallArrayG, \ 6636 smallDictt *: isEmptySmallDictG, \ 6637 smallJsont *: isBlankSmallJsonG, \ 6638 smallStringt *: isBlankSmallStringG \ 6639 )(self) 6640 6641 #define fromArrayO(self, array, size) (self)->f->fromArray(self, array, size) 6642 #define fromArrayG(self, array, size) _Generic((self), \ 6643 char **: _Generic(array, \ 6644 char **: listFromArrayG, \ 6645 const char **: listFromCArrayG \ 6646 ), \ 6647 smallArrayt *: _Generic(array, \ 6648 char **: fromArraySmallArrayG, \ 6649 const char **: fromCArraySmallArrayG), \ 6650 smallJsont *: _Generic(array, \ 6651 char **: fromArraySmallJsonG, \ 6652 const char **: fromCArraySmallJsonG) \ 6653 )(self, array, size) 6654 6655 #define splitO(self, delim) (self)->f->split(self, delim) 6656 #define splitG(self, delim) _Generic((self), \ 6657 char *: _Generic(delim, \ 6658 char *: split, \ 6659 const char *: split, \ 6660 char: splitChar, \ 6661 int: splitChar, \ 6662 default: split \ 6663 ), \ 6664 const char *: _Generic(delim, \ 6665 char *: split, \ 6666 const char *: split, \ 6667 char: splitChar, \ 6668 int: splitChar, \ 6669 default: split \ 6670 ), \ 6671 smallJsont *: _Generic(delim, \ 6672 char *: splitSmallJsonG, \ 6673 const char *: splitSmallJsonG, \ 6674 char: splitCharSmallJsonG, \ 6675 int: splitCharSmallJsonG, \ 6676 smallJsont *: splitSmallJsonSmallJsonG, \ 6677 smallStringt *: splitSmallStringSmallJsonG, \ 6678 default: splitSmallJsonG \ 6679 ), \ 6680 smallStringt *: _Generic(delim, \ 6681 char *: splitSmallStringG, \ 6682 const char *: splitSmallStringG, \ 6683 char: splitCharSmallStringG, \ 6684 int: splitCharSmallStringG, \ 6685 smallJsont *: splitSmallJsonSmallStringG, \ 6686 smallStringt *: splitSmallStringSmallStringG, \ 6687 default: splitSmallStringG \ 6688 ), \ 6689 btt: _Generic(delim, \ 6690 char*: splitCharB, \ 6691 const char*: splitCharB, \ 6692 btt: splitB, \ 6693 const btt: splitB, \ 6694 btt*: splitDPB, \ 6695 const btt*: splitDPB, \ 6696 default: splitB), \ 6697 const btt: _Generic(delim, \ 6698 char*: splitCharB, \ 6699 const char*: splitCharB, \ 6700 btt: splitB, \ 6701 const btt: splitB, \ 6702 btt*: splitDPB, \ 6703 const btt*: splitDPB, \ 6704 default: splitB), \ 6705 btt*: _Generic(delim, \ 6706 char*: splitPCharB, \ 6707 const char*: splitPCharB, \ 6708 btt: splitPB, \ 6709 const btt: splitPB, \ 6710 btt*: splitPDPB, \ 6711 const btt*: splitPDPB, \ 6712 default: splitPB),\ 6713 const btt*: _Generic(delim, \ 6714 char*: splitPCharB, \ 6715 const char*: splitPCharB, \ 6716 btt: splitPB, \ 6717 const btt: splitPB, \ 6718 btt*: splitPDPB, \ 6719 const btt*: splitPDPB, \ 6720 default: splitPB)\ 6721 )(self, delim) 6722 6723 //TODO create splitS generic 6724 6725 #define icSplitO(self, delim) (self)->f->icSplit(self, delim) 6726 #define icSplitG(self, delim) _Generic((self), \ 6727 char *: _Generic(delim, \ 6728 char *: icSplit, \ 6729 const char *: icSplit, \ 6730 char: icSplitChar, \ 6731 int: icSplitChar, \ 6732 default: icSplit \ 6733 ), \ 6734 const char *: _Generic(delim, \ 6735 char *: icSplit, \ 6736 const char *: icSplit, \ 6737 char: icSplitChar, \ 6738 int: icSplitChar, \ 6739 default: icSplit \ 6740 ), \ 6741 smallJsont *: _Generic(delim, \ 6742 char *: icSplitSmallJsonG, \ 6743 const char *: icSplitSmallJsonG, \ 6744 char: icSplitCharSmallJsonG, \ 6745 int: icSplitCharSmallJsonG, \ 6746 smallJsont *: icSplitSmallJsonSmallJsonG, \ 6747 smallStringt *: icSplitSmallStringSmallJsonG \ 6748 ), \ 6749 smallStringt *: _Generic(delim, \ 6750 char *: icSplitSmallStringG, \ 6751 const char *: icSplitSmallStringG, \ 6752 char: icSplitCharSmallStringG, \ 6753 int: icSplitCharSmallStringG, \ 6754 smallJsont *: icSplitSmallJsonSmallStringG, \ 6755 smallStringt *: icSplitSmallStringSmallStringG \ 6756 ) \ 6757 )(self, delim) 6758 6759 #define joinO(self, delim) (self)->f->join(self, delim) 6760 #define joinG(self, delim) _Generic((self), \ 6761 char **: _Generic(delim, \ 6762 char *: join, \ 6763 const char *: join, \ 6764 char: joinChar, \ 6765 int: joinChar, \ 6766 default: join \ 6767 ), \ 6768 const char **: _Generic(delim, \ 6769 char *: joinCG, \ 6770 const char *: joinCG, \ 6771 char: joinCharCG, \ 6772 int: joinCharCG, \ 6773 default: joinCG \ 6774 ), \ 6775 smallArrayt *: _Generic(delim, \ 6776 char *: joinSmallArrayG, \ 6777 const char*: joinSmallArrayG, \ 6778 char: joinCharSmallArrayG, \ 6779 int: joinCharSmallArrayG, \ 6780 smallJsont *: joinSmallJsonSmallArrayG, \ 6781 smallStringt *: joinSmallStringSmallArrayG \ 6782 ), \ 6783 smallJsont *: _Generic(delim, \ 6784 char *: joinSmallJsonG, \ 6785 const char*: joinSmallJsonG, \ 6786 char: joinCharSmallJsonG, \ 6787 int: joinCharSmallJsonG, \ 6788 smallJsont *: joinSmallJsonSmallJsonG, \ 6789 smallStringt *: joinSmallStringSmallJsonG \ 6790 ) \ 6791 )(self, delim) 6792 6793 #define joinSO(self, delim) (self)->f->join(self, delim) 6794 #define joinSG(self, delim) _Generic((self), \ 6795 char **: _Generic(delim, \ 6796 char *: join, \ 6797 const char *: join, \ 6798 char: joinChar, \ 6799 int: joinChar, \ 6800 default: join \ 6801 ), \ 6802 const char **: _Generic(delim, \ 6803 char *: joinCG, \ 6804 const char *: joinCG, \ 6805 char: joinCharCG, \ 6806 int: joinCharCG, \ 6807 default: joinCG \ 6808 ), \ 6809 smallArrayt *: _Generic(delim, \ 6810 char *: joinSSmallArrayG, \ 6811 const char*: joinSSmallArrayG, \ 6812 char: joinCharSSmallArrayG, \ 6813 int: joinCharSSmallArrayG, \ 6814 smallJsont *: joinSmallJsonSSmallArrayG, \ 6815 smallStringt *: joinSmallStringSSmallArrayG \ 6816 ), \ 6817 smallJsont *: _Generic(delim, \ 6818 char *: joinSSmallJsonG, \ 6819 const char*: joinSSmallJsonG, \ 6820 char: joinCharSSmallJsonG, \ 6821 int: joinCharSSmallJsonG, \ 6822 smallJsont *: joinSmallJsonSSmallJsonG, \ 6823 smallStringt *: joinSmallStringSSmallJsonG \ 6824 ) \ 6825 )(self, delim) 6826 6827 #define extractO(self, delim1, delim2) (self)->f->extract(self, delim1, delim2) 6828 #define extractG(self, delim1, delim2) _Generic((self), \ 6829 char *: _Generic(delim1, \ 6830 char *: _Generic(delim2, \ 6831 char *: extractS , \ 6832 const char *: extractS , \ 6833 char: extractSCharS , \ 6834 int: extractSCharS, \ 6835 default: extractS \ 6836 ), \ 6837 const char *: _Generic(delim2, \ 6838 char *: extractS , \ 6839 const char *: extractS , \ 6840 char: extractSCharS , \ 6841 int: extractSCharS, \ 6842 default: extractS \ 6843 ), \ 6844 char: _Generic(delim2, \ 6845 char *: extractCharSS , \ 6846 const char *: extractCharSS , \ 6847 char: extractCharCharS , \ 6848 int: extractCharCharS, \ 6849 default: extractCharSS \ 6850 ), \ 6851 int: _Generic(delim2, \ 6852 char *: extractCharSS , \ 6853 const char *: extractCharSS , \ 6854 char: extractCharCharS , \ 6855 int: extractCharCharS, \ 6856 default: extractCharSS \ 6857 ), \ 6858 default: extractS \ 6859 ), \ 6860 const char *: _Generic(delim1, \ 6861 char *: _Generic(delim2, \ 6862 char *: extractS , \ 6863 const char *: extractS , \ 6864 char: extractSCharS , \ 6865 int: extractSCharS, \ 6866 default: extractS \ 6867 ), \ 6868 const char *: _Generic(delim2, \ 6869 char *: extractS , \ 6870 const char *: extractS , \ 6871 char: extractSCharS , \ 6872 int: extractSCharS, \ 6873 default: extractS \ 6874 ), \ 6875 char: _Generic(delim2, \ 6876 char *: extractCharSS , \ 6877 const char *: extractCharSS , \ 6878 char: extractCharCharS , \ 6879 int: extractCharCharS, \ 6880 default: extractCharSS \ 6881 ), \ 6882 int: _Generic(delim2, \ 6883 char *: extractCharSS , \ 6884 const char *: extractCharSS , \ 6885 char: extractCharCharS , \ 6886 int: extractCharCharS, \ 6887 default: extractCharSS \ 6888 ), \ 6889 default: extractS \ 6890 ), \ 6891 smallJsont *: _Generic(delim1, \ 6892 char *: _Generic(delim2, \ 6893 char *: extractSmallJsonG, \ 6894 const char *: extractSmallJsonG, \ 6895 char: extractSCharSmallJsonG, \ 6896 int: extractSCharSmallJsonG, \ 6897 smallJsont *: extractSSmallJsonSmallJsonG, \ 6898 smallStringt *: extractSSmallStringSmallJsonG \ 6899 ), \ 6900 const char *: _Generic(delim2, \ 6901 char *: extractSmallJsonG, \ 6902 const char *: extractSmallJsonG, \ 6903 char: extractSCharSmallJsonG, \ 6904 int: extractSCharSmallJsonG, \ 6905 smallJsont *: extractSSmallJsonSmallJsonG, \ 6906 smallStringt *: extractSSmallStringSmallJsonG \ 6907 ),\ 6908 char: _Generic(delim2, \ 6909 char *: extractCharSSmallJsonG, \ 6910 const char *: extractCharSSmallJsonG, \ 6911 char: extractCharCharSmallJsonG, \ 6912 int: extractCharCharSmallJsonG, \ 6913 smallJsont *: extractCharSmallJsonSmallJsonG, \ 6914 smallStringt *: extractCharSmallStringSmallJsonG \ 6915 ),\ 6916 int: _Generic(delim2, \ 6917 char *: extractCharSSmallJsonG, \ 6918 const char *: extractCharSSmallJsonG, \ 6919 char: extractCharCharSmallJsonG, \ 6920 int: extractCharCharSmallJsonG, \ 6921 smallJsont *: extractCharSmallJsonSmallJsonG, \ 6922 smallStringt *: extractCharSmallStringSmallJsonG \ 6923 ),\ 6924 smallJsont *: _Generic(delim2, \ 6925 char *: extractSmallJsonSSmallJsonG, \ 6926 const char *: extractSmallJsonSSmallJsonG, \ 6927 char: extractSmallJsonCharSmallJsonG, \ 6928 int: extractSmallJsonCharSmallJsonG, \ 6929 smallJsont *: extractSmallJsonSmallJsonSmallJsonG, \ 6930 smallStringt *: extractSmallJsonSmallStringSmallJsonG \ 6931 ),\ 6932 smallStringt *: _Generic(delim2, \ 6933 char *: extractSmallStringSSmallJsonG, \ 6934 const char *: extractSmallStringSSmallJsonG, \ 6935 char: extractSmallStringCharSmallJsonG, \ 6936 int: extractSmallStringCharSmallJsonG, \ 6937 smallJsont *: extractSmallStringSmallJsonSmallJsonG, \ 6938 smallStringt *: extractSmallStringSmallStringSmallJsonG \ 6939 )\ 6940 ), \ 6941 smallStringt *: _Generic(delim1, \ 6942 char *: _Generic(delim2, \ 6943 char *: extractSmallStringG, \ 6944 const char *: extractSmallStringG, \ 6945 char: extractSCharSmallStringG, \ 6946 int: extractSCharSmallStringG, \ 6947 smallJsont *: extractSSmallJsonSmallStringG, \ 6948 smallStringt *: extractSSmallStringSmallStringG \ 6949 ), \ 6950 const char *: _Generic(delim2, \ 6951 char *: extractSmallStringG, \ 6952 const char *: extractSmallStringG, \ 6953 char: extractSCharSmallStringG, \ 6954 int: extractSCharSmallStringG, \ 6955 smallJsont *: extractSSmallJsonSmallStringG, \ 6956 smallStringt *: extractSSmallStringSmallStringG \ 6957 ),\ 6958 char: _Generic(delim2, \ 6959 char *: extractCharSSmallStringG, \ 6960 const char *: extractCharSSmallStringG, \ 6961 char: extractCharCharSmallStringG, \ 6962 int: extractCharCharSmallStringG, \ 6963 smallJsont *: extractCharSmallJsonSmallStringG, \ 6964 smallStringt *: extractCharSmallStringSmallStringG \ 6965 ),\ 6966 int: _Generic(delim2, \ 6967 char *: extractCharSSmallStringG, \ 6968 const char *: extractCharSSmallStringG, \ 6969 char: extractCharCharSmallStringG, \ 6970 int: extractCharCharSmallStringG, \ 6971 smallJsont *: extractCharSmallJsonSmallStringG, \ 6972 smallStringt *: extractCharSmallStringSmallStringG \ 6973 ),\ 6974 smallJsont *: _Generic(delim2, \ 6975 char *: extractSmallJsonSSmallStringG, \ 6976 const char *: extractSmallJsonSSmallStringG, \ 6977 char: extractSmallJsonCharSmallStringG, \ 6978 int: extractSmallJsonCharSmallStringG, \ 6979 smallJsont *: extractSmallJsonSmallJsonSmallStringG, \ 6980 smallStringt *: extractSmallJsonSmallStringSmallStringG \ 6981 ),\ 6982 smallStringt *: _Generic(delim2, \ 6983 char *: extractSmallStringSSmallStringG, \ 6984 const char *: extractSmallStringSSmallStringG, \ 6985 char: extractSmallStringCharSmallStringG, \ 6986 int: extractSmallStringCharSmallStringG, \ 6987 smallJsont *: extractSmallStringSmallJsonSmallStringG, \ 6988 smallStringt *: extractSmallStringSmallStringSmallStringG \ 6989 )\ 6990 ) \ 6991 )(self, delim1, delim2) 6992 6993 #define icExtractO(self, delim1, delim2) (self)->f->icExtract(self, delim1, delim2) 6994 #define icExtractG(self, delim1, delim2) _Generic((self), \ 6995 char *: _Generic(delim1, \ 6996 char *: _Generic(delim2, \ 6997 char *: icExtractS , \ 6998 const char *: icExtractS , \ 6999 char: icExtractSCharS , \ 7000 int: icExtractSCharS, \ 7001 default: icExtractS \ 7002 ), \ 7003 const char *: _Generic(delim2, \ 7004 char *: icExtractS , \ 7005 const char *: icExtractS , \ 7006 char: icExtractSCharS , \ 7007 int: icExtractSCharS, \ 7008 default: icExtractS \ 7009 ), \ 7010 char: _Generic(delim2, \ 7011 char *: icExtractCharSS , \ 7012 const char *: icExtractCharSS , \ 7013 char: icExtractCharCharS , \ 7014 int: icExtractCharCharS, \ 7015 default: icExtractCharSS \ 7016 ), \ 7017 int: _Generic(delim2, \ 7018 char *: icExtractCharSS , \ 7019 const char *: icExtractCharSS , \ 7020 char: icExtractCharCharS , \ 7021 int: icExtractCharCharS, \ 7022 default: icExtractCharSS \ 7023 ), \ 7024 default: icExtractS \ 7025 ), \ 7026 const char *: _Generic(delim1, \ 7027 char *: _Generic(delim2, \ 7028 char *: icExtractS , \ 7029 const char *: icExtractS , \ 7030 char: icExtractSCharS , \ 7031 int: icExtractSCharS, \ 7032 default: icExtractS \ 7033 ), \ 7034 const char *: _Generic(delim2, \ 7035 char *: icExtractS , \ 7036 const char *: icExtractS , \ 7037 char: icExtractSCharS , \ 7038 int: icExtractSCharS, \ 7039 default: icExtractS \ 7040 ), \ 7041 char: _Generic(delim2, \ 7042 char *: icExtractCharSS , \ 7043 const char *: icExtractCharSS , \ 7044 char: icExtractCharCharS , \ 7045 int: icExtractCharCharS, \ 7046 default: icExtractCharSS \ 7047 ), \ 7048 int: _Generic(delim2, \ 7049 char *: icExtractCharSS , \ 7050 const char *: icExtractCharSS , \ 7051 char: icExtractCharCharS , \ 7052 int: icExtractCharCharS, \ 7053 default: icExtractCharSS \ 7054 ), \ 7055 default: icExtractS \ 7056 ), \ 7057 smallJsont *: _Generic(delim1, \ 7058 char *: _Generic(delim2, \ 7059 char *: icExtractSmallJsonG, \ 7060 const char *: icExtractSmallJsonG, \ 7061 char: icExtractSCharSmallJsonG, \ 7062 int: icExtractSCharSmallJsonG, \ 7063 smallJsont *: icExtractSSmallJsonSmallJsonG, \ 7064 smallStringt *: icExtractSSmallStringSmallJsonG \ 7065 ), \ 7066 const char *: _Generic(delim2, \ 7067 char *: icExtractSmallJsonG, \ 7068 const char *: icExtractSmallJsonG, \ 7069 char: icExtractSCharSmallJsonG, \ 7070 int: icExtractSCharSmallJsonG, \ 7071 smallJsont *: icExtractSSmallJsonSmallJsonG, \ 7072 smallStringt *: icExtractSSmallStringSmallJsonG \ 7073 ),\ 7074 char: _Generic(delim2, \ 7075 char *: icExtractCharSSmallJsonG, \ 7076 const char *: icExtractCharSSmallJsonG, \ 7077 char: icExtractCharCharSmallJsonG, \ 7078 int: icExtractCharCharSmallJsonG, \ 7079 smallJsont *: icExtractCharSmallJsonSmallJsonG, \ 7080 smallStringt *: icExtractCharSmallStringSmallJsonG \ 7081 ),\ 7082 int: _Generic(delim2, \ 7083 char *: icExtractCharSSmallJsonG, \ 7084 const char *: icExtractCharSSmallJsonG, \ 7085 char: icExtractCharCharSmallJsonG, \ 7086 int: icExtractCharCharSmallJsonG, \ 7087 smallJsont *: icExtractCharSmallJsonSmallJsonG, \ 7088 smallStringt *: icExtractCharSmallStringSmallJsonG \ 7089 ),\ 7090 smallJsont *: _Generic(delim2, \ 7091 char *: icExtractSmallJsonSSmallJsonG, \ 7092 const char *: icExtractSmallJsonSSmallJsonG, \ 7093 char: icExtractSmallJsonCharSmallJsonG, \ 7094 int: icExtractSmallJsonCharSmallJsonG, \ 7095 smallJsont *: icExtractSmallJsonSmallJsonSmallJsonG, \ 7096 smallStringt *: icExtractSmallJsonSmallStringSmallJsonG \ 7097 ),\ 7098 smallStringt *: _Generic(delim2, \ 7099 char *: icExtractSmallStringSSmallJsonG, \ 7100 const char *: icExtractSmallStringSSmallJsonG, \ 7101 char: icExtractSmallStringCharSmallJsonG, \ 7102 int: icExtractSmallStringCharSmallJsonG, \ 7103 smallJsont *: icExtractSmallStringSmallJsonSmallJsonG, \ 7104 smallStringt *: icExtractSmallStringSmallStringSmallJsonG \ 7105 )\ 7106 ), \ 7107 smallStringt *: _Generic(delim1, \ 7108 char *: _Generic(delim2, \ 7109 char *: icExtractSmallStringG, \ 7110 const char *: icExtractSmallStringG, \ 7111 char: icExtractSCharSmallStringG, \ 7112 int: icExtractSCharSmallStringG, \ 7113 smallJsont *: icExtractSSmallJsonSmallStringG, \ 7114 smallStringt *: icExtractSSmallStringSmallStringG \ 7115 ), \ 7116 const char *: _Generic(delim2, \ 7117 char *: icExtractSmallStringG, \ 7118 const char *: icExtractSmallStringG, \ 7119 char: icExtractSCharSmallStringG, \ 7120 int: icExtractSCharSmallStringG, \ 7121 smallJsont *: icExtractSSmallJsonSmallStringG, \ 7122 smallStringt *: icExtractSSmallStringSmallStringG \ 7123 ),\ 7124 char: _Generic(delim2, \ 7125 char *: icExtractCharSSmallStringG, \ 7126 const char *: icExtractCharSSmallStringG, \ 7127 char: icExtractCharCharSmallStringG, \ 7128 int: icExtractCharCharSmallStringG, \ 7129 smallJsont *: icExtractCharSmallJsonSmallStringG, \ 7130 smallStringt *: icExtractCharSmallStringSmallStringG \ 7131 ),\ 7132 int: _Generic(delim2, \ 7133 char *: icExtractCharSSmallStringG, \ 7134 const char *: icExtractCharSSmallStringG, \ 7135 char: icExtractCharCharSmallStringG, \ 7136 int: icExtractCharCharSmallStringG, \ 7137 smallJsont *: icExtractCharSmallJsonSmallStringG, \ 7138 smallStringt *: icExtractCharSmallStringSmallStringG \ 7139 ),\ 7140 smallJsont *: _Generic(delim2, \ 7141 char *: icExtractSmallJsonSSmallStringG, \ 7142 const char *: icExtractSmallJsonSSmallStringG, \ 7143 char: icExtractSmallJsonCharSmallStringG, \ 7144 int: icExtractSmallJsonCharSmallStringG, \ 7145 smallJsont *: icExtractSmallJsonSmallJsonSmallStringG, \ 7146 smallStringt *: icExtractSmallJsonSmallStringSmallStringG \ 7147 ),\ 7148 smallStringt *: _Generic(delim2, \ 7149 char *: icExtractSmallStringSSmallStringG, \ 7150 const char *: icExtractSmallStringSSmallStringG, \ 7151 char: icExtractSmallStringCharSmallStringG, \ 7152 int: icExtractSmallStringCharSmallStringG, \ 7153 smallJsont *: icExtractSmallStringSmallJsonSmallStringG, \ 7154 smallStringt *: icExtractSmallStringSmallStringSmallStringG \ 7155 )\ 7156 ) \ 7157 )(self, delim1, delim2) 7158 7159 #define reverseO(self) (self)->f->reverse(self) 7160 #define reverseG(self) _Generic((self), \ 7161 char **: listReverseS, \ 7162 char ***: iListReverseS, \ 7163 smallArrayt *: reverseSmallArrayG, \ 7164 smallJsont *: reverseSmallJsonG \ 7165 )(self) 7166 7167 #define addO(self, array) (self)->f->add(self, array) 7168 #define addG(self, list) _Generic((self), \ 7169 char *: appendS, \ 7170 const char *: appendS, \ 7171 char **: _Generic(list, \ 7172 char **: listAddS, \ 7173 const char **: listAddCG, \ 7174 default: listAddS \ 7175 ), \ 7176 smallStringt *: appendSmallStringG, \ 7177 smallArrayt *: addSmallArrayG, \ 7178 smallJsont *: _Generic(list, \ 7179 smallArrayt *: addSmallJsonG, \ 7180 smallJsont *: addJsonSmallJsonG, \ 7181 default: addJsonSmallJsonG \ 7182 ) \ 7183 )(self, list) 7184 7185 #define sortO(self) (self)->f->sort(self) 7186 #define sortG(self) _Generic((self), \ 7187 char **: listSortS, \ 7188 char ***: iListSortS, \ 7189 smallArrayt *: sortSmallArrayG, \ 7190 smallJsont *: sortSmallJsonG \ 7191 )(self) 7192 7193 #define binarySearchO(self, value) (self)->f->binarySearch(self, value) 7194 #define binarySearchG(self, string) _Generic((self), \ 7195 char **: _Generic(string, \ 7196 char *: listBinarySearchS, \ 7197 const char *: listBinarySearchS, \ 7198 char: listBinarySearchCharS, \ 7199 int: listBinarySearchCharS, \ 7200 default: listBinarySearchS \ 7201 ), \ 7202 smallArrayt *: _Generic((string), \ 7203 baset*: binarySearchSmallArrayG, \ 7204 bool: binarySearchBoolSmallArrayG, \ 7205 double: binarySearchDoubleSmallArrayG, \ 7206 int64_t: binarySearchIntSmallArrayG, \ 7207 int32_t: binarySearchIntSmallArrayG, \ 7208 uint32_t: binarySearchIntSmallArrayG, \ 7209 uint64_t: binarySearchIntSmallArrayG, \ 7210 char*: binarySearchSSmallArrayG, \ 7211 const char*: binarySearchSSmallArrayG, \ 7212 char: binarySearchCharSmallArrayG, \ 7213 smallDictt*: binarySearchDictSmallArrayG, \ 7214 smallArrayt*: binarySearchArraySmallArrayG, \ 7215 char **: binarySearchArraycSmallArrayG, \ 7216 const char **: binarySearchCArraycSmallArrayG, \ 7217 smallBoolt*: binarySearchSmallBoolSmallArrayG, \ 7218 smallBytest*: binarySearchSmallBytesSmallArrayG, \ 7219 smallDoublet*: binarySearchSmallDoubleSmallArrayG, \ 7220 smallIntt*: binarySearchSmallIntSmallArrayG, \ 7221 smallJsont*: binarySearchSmallJsonSmallArrayG, \ 7222 smallStringt*: binarySearchSmallStringSmallArrayG, \ 7223 smallContainert*: binarySearchSmallContainerSmallArrayG, \ 7224 undefinedt*: binarySearchUndefinedSmallArrayG, \ 7225 default: binarySearchUndefinedSmallArrayG \ 7226 ), \ 7227 smallJsont *: _Generic((string), \ 7228 baset*: binarySearchSmallJsonG, \ 7229 bool: binarySearchBoolSmallJsonG, \ 7230 double: binarySearchDoubleSmallJsonG, \ 7231 int64_t: binarySearchIntSmallJsonG, \ 7232 int32_t: binarySearchIntSmallJsonG, \ 7233 uint32_t: binarySearchIntSmallJsonG, \ 7234 uint64_t: binarySearchIntSmallJsonG, \ 7235 char*: binarySearchSSmallJsonG, \ 7236 const char*: binarySearchSSmallJsonG, \ 7237 char: binarySearchCharSmallJsonG, \ 7238 smallDictt*: binarySearchDictSmallJsonG, \ 7239 smallArrayt*: binarySearchArraySmallJsonG, \ 7240 char **: binarySearchArraycSmallJsonG, \ 7241 const char **: binarySearchCArraycSmallJsonG, \ 7242 smallBoolt*: binarySearchSmallBoolSmallJsonG, \ 7243 smallBytest*: binarySearchSmallBytesSmallJsonG, \ 7244 smallDoublet*: binarySearchSmallDoubleSmallJsonG, \ 7245 smallIntt*: binarySearchSmallIntSmallJsonG, \ 7246 smallJsont*: binarySearchSmallJsonSmallJsonG, \ 7247 smallStringt*: binarySearchSmallStringSmallJsonG, \ 7248 smallContainert*: binarySearchSmallContainerSmallJsonG, \ 7249 undefinedt*: binarySearchUndefinedSmallJsonG, \ 7250 default: binarySearchUndefinedSmallJsonG \ 7251 ) \ 7252 )(self, string) 7253 7254 #define icSortO(self) (self)->f->icSort(self) 7255 #define icSortG(self) _Generic((self), \ 7256 char **: icListSortS, \ 7257 char ***: iicListSortS, \ 7258 smallArrayt *: icSortSmallArrayG, \ 7259 smallJsont *: icSortSmallJsonG \ 7260 )(self) 7261 7262 #define icBinarySearchO(self, value) (self)->f->icBinarySearch(self, value) 7263 #define icBinarySearchG(self, string) _Generic((self), \ 7264 char **: _Generic(string, \ 7265 char *: icListBinarySearchS, \ 7266 const char *: icListBinarySearchS, \ 7267 char: icListBinarySearchCharS, \ 7268 int: icListBinarySearchCharS, \ 7269 default: icListBinarySearchS \ 7270 ), \ 7271 smallArrayt *: _Generic((string), \ 7272 baset*: icBinarySearchSmallArrayG, \ 7273 bool: binarySearchBoolSmallArrayG, \ 7274 double: binarySearchDoubleSmallArrayG, \ 7275 int64_t: binarySearchIntSmallArrayG, \ 7276 int32_t: binarySearchIntSmallArrayG, \ 7277 uint32_t: binarySearchIntSmallArrayG, \ 7278 uint64_t: binarySearchIntSmallArrayG, \ 7279 char*: icBinarySearchSSmallArrayG, \ 7280 const char*: icBinarySearchSSmallArrayG, \ 7281 char: icBinarySearchCharSmallArrayG, \ 7282 smallDictt*: icBinarySearchDictSmallArrayG, \ 7283 smallArrayt*: icBinarySearchArraySmallArrayG, \ 7284 char **: icBinarySearchArraycSmallArrayG, \ 7285 const char **: icBinarySearchCArraycSmallArrayG, \ 7286 smallBoolt*: binarySearchSmallBoolSmallArrayG, \ 7287 smallBytest*: binarySearchSmallBytesSmallArrayG, \ 7288 smallDoublet*: binarySearchSmallDoubleSmallArrayG, \ 7289 smallIntt*: binarySearchSmallIntSmallArrayG, \ 7290 smallJsont*: icBinarySearchSmallJsonSmallArrayG, \ 7291 smallStringt*: icBinarySearchSmallStringSmallArrayG, \ 7292 smallContainert*: binarySearchSmallContainerSmallArrayG, \ 7293 undefinedt*: binarySearchUndefinedSmallArrayG, \ 7294 default: binarySearchUndefinedSmallArrayG \ 7295 ), \ 7296 smallJsont *: _Generic((string), \ 7297 baset*: icBinarySearchSmallJsonG, \ 7298 bool: binarySearchBoolSmallJsonG, \ 7299 double: binarySearchDoubleSmallJsonG, \ 7300 int64_t: binarySearchIntSmallJsonG, \ 7301 int32_t: binarySearchIntSmallJsonG, \ 7302 uint32_t: binarySearchIntSmallJsonG, \ 7303 uint64_t: binarySearchIntSmallJsonG, \ 7304 char*: icBinarySearchSSmallJsonG, \ 7305 const char*: icBinarySearchSSmallJsonG, \ 7306 char: icBinarySearchCharSmallJsonG, \ 7307 smallDictt*: icBinarySearchDictSmallJsonG, \ 7308 smallArrayt*: icBinarySearchArraySmallJsonG, \ 7309 char **: icBinarySearchArraycSmallJsonG, \ 7310 const char **: icBinarySearchCArraycSmallJsonG, \ 7311 smallBoolt*: binarySearchSmallBoolSmallJsonG, \ 7312 smallBytest*: binarySearchSmallBytesSmallJsonG, \ 7313 smallDoublet*: binarySearchSmallDoubleSmallJsonG, \ 7314 smallIntt*: binarySearchSmallIntSmallJsonG, \ 7315 smallJsont*: binarySearchSmallJsonSmallJsonG, \ 7316 smallStringt*: icBinarySearchSmallStringSmallJsonG, \ 7317 smallContainert*: binarySearchSmallContainerSmallJsonG, \ 7318 undefinedt*: binarySearchUndefinedSmallJsonG, \ 7319 default: binarySearchUndefinedSmallJsonG \ 7320 ) \ 7321 )(self, string) 7322 7323 #define compactO(self) (self)->f->compact(self) 7324 #define compactG(self) _Generic((self), \ 7325 char **: listCompactS, \ 7326 char ***: iListCompactS, \ 7327 smallArrayt *: compactSmallArrayG, \ 7328 smallJsont *: compactSmallJsonG \ 7329 )(self) 7330 7331 #define parseO(self, input) (self)->f->parse(self, input) 7332 #define parseG(self, input) _Generic(input, \ 7333 char *: parseSmallJsonG, \ 7334 const char *: parseSmallJsonG, \ 7335 smallJsont *: parseSmallJsonSmallJsonG, \ 7336 smallStringt *: parseSmallStringSmallJsonG \ 7337 )(self, input) 7338 7339 #define parseYMLO(self, input) (self)->f->parseYML(self, input) 7340 #define parseYMLG(self, input) _Generic(input, \ 7341 char *: parseYMLSmallJsonG, \ 7342 const char *: parseYMLSmallJsonG, \ 7343 smallJsont *: parseYMLSmallJsonSmallJsonG, \ 7344 smallStringt *: parseYMLSmallStringSmallJsonG \ 7345 )(self, input) 7346 7347 //TODO stringifySmallJson rtChar rtSmallStringt 7348 //TODO toYMLSmallJson rtChar rtSmallStringt 7349 7350 7351 #define execG(cmd, out, err) _Generic(cmd, \ 7352 char *: execO, \ 7353 const char *: execO, \ 7354 smallJsont *: execSmallJsonO, \ 7355 smallStringt *: execSmallStringO \ 7356 )(cmd, out, err) 7357 7358 #define renameG(src, dst) _Generic(src, \ 7359 char *: _Generic(dst, \ 7360 char *: shRename, \ 7361 const char *: shRename, \ 7362 smallJsont *: renameSSmallJsonO, \ 7363 smallStringt *: renameSO \ 7364 ), \ 7365 const char*: _Generic(dst, \ 7366 char *: shRename, \ 7367 const char *: shRename, \ 7368 smallJsont *: renameSSmallJsonO, \ 7369 smallStringt *: renameSO \ 7370 ), \ 7371 smallJsont *: _Generic(dst, \ 7372 char *: renameSmallJsonOS, \ 7373 const char *: renameSmallJsonOS, \ 7374 smallJsont *: renameSmallJsonSmallJson, \ 7375 smallStringt *: renameSmallJsonO \ 7376 ), \ 7377 smallStringt *: _Generic(dst, \ 7378 char *: renameOS, \ 7379 const char *: renameOS, \ 7380 smallJsont *: renameOSmallJson, \ 7381 smallStringt *: renameO \ 7382 ) \ 7383 )(src, dst) 7384 7385 #define moveG(src, dst) _Generic(src, \ 7386 char *: _Generic(dst, \ 7387 char *: shMove, \ 7388 const char *: shMove, \ 7389 smallJsont *: moveSSmallJsonO, \ 7390 smallStringt *: moveSO \ 7391 ), \ 7392 const char*: _Generic(dst, \ 7393 char *: shMove, \ 7394 const char *: shMove, \ 7395 smallJsont *: moveSSmallJsonO, \ 7396 smallStringt *: moveSO \ 7397 ), \ 7398 smallJsont *: _Generic(dst, \ 7399 char *: moveSmallJsonOS, \ 7400 const char *: moveSmallJsonOS, \ 7401 smallJsont *: moveSmallJsonSmallJson, \ 7402 smallStringt *: moveSmallJsonO \ 7403 ), \ 7404 smallStringt *: _Generic(dst, \ 7405 char *: moveOS, \ 7406 const char *: moveOS, \ 7407 smallJsont *: moveOSmallJson, \ 7408 smallStringt *: moveO \ 7409 ) \ 7410 )(src, dst) 7411 7412 /** 7413 * log array or dictionary, one line per element 7414 */ 7415 #define logO(self) (self)->f->log(self) 7416 #define logG(self) _Generic(self, \ 7417 smallArrayt *: logSmallArrayG, \ 7418 smallDictt *: logSmallDictG, \ 7419 smallJsont *: logSmallJsonG, \ 7420 char **: listPrintS, \ 7421 const char **: listPrintCG \ 7422 )(self) 7423 7424 7425 /** 7426 * log variable and its value 7427 * 7428 * Example: 7429 * logVarG(k) 7430 * k=14 7431 */ 7432 #define logVarG(var)\ 7433 do {\ 7434 char *UNIQVAR(tmpString) = toStringG(var);\ 7435 logD("%s=%s\n", stringifyExpr(var), UNIQVAR(tmpString));\ 7436 free(UNIQVAR(tmpString));\ 7437 } while(0); 7438 7439 #define logMVarG(mask, var)\ 7440 do {\ 7441 char *UNIQVAR(tmpString) = toStringG(var);\ 7442 logMD(mask, "%s=%s\n", stringifyExpr(var), UNIQVAR(tmpString));\ 7443 free(UNIQVAR(tmpString));\ 7444 } while(0); 7445 7446 /** 7447 * log type, variable and its value 7448 * 7449 * Example: 7450 * logTVarG(k) 7451 * int k=14 7452 */ 7453 #define logTVarG(var)\ 7454 do {\ 7455 char *UNIQVAR(tmpString) = toStringG(var);\ 7456 logD("%s %s=%s\n", getOTypeG(var), stringifyExpr(var), UNIQVAR(tmpString));\ 7457 free(UNIQVAR(tmpString));\ 7458 } while(0); 7459 7460 #define logMTVarG(mask, var)\ 7461 do {\ 7462 char *UNIQVAR(tmpString) = toStringG(var);\ 7463 logMD(mask, "%s %s=%s\n", getOTypeG(var), stringifyExpr(var), UNIQVAR(tmpString));\ 7464 free(UNIQVAR(tmpString));\ 7465 } while(0); 7466 7467 #define logTypeG(var) logD("%s %s\n", getOTypeG(var), stringifyExpr(var)) 7468 7469 /** 7470 * cat for smallArray and smallString 7471 */ 7472 #define catO(self, ...) (self)->f->cat((self), __VA_ARGS__, NULL) 7473 #define catG catO 7474 #define catSO(self, ...) (self)->f->catSt((self), __VA_ARGS__, NULL) 7475 #define catSG catSO 7476 7477 #define pushManyO(self, ...) (self)->f->pushMany(self, __VA_ARGS__, NULL) 7478 #define pushManyG pushManyO 7479 7480 #define pushManySO(self, ...) (self)->f->pushManyS(self, __VA_ARGS__, NULL) 7481 #define pushManySG pushManySO 7482 7483 #define pushNFreeManyO(self, ...) (self)->f->pushNFreeMany(self, __VA_ARGS__, NULL) 7484 #define pushNFreeManyG pushNFreeManyO 7485 7486 #define pushNFreeManySO(self, ...) (self)->f->pushNFreeManyS(self, __VA_ARGS__, NULL) 7487 #define pushNFreeManySG pushNFreeManySO 7488 7489 7490 // smallBytes pushBuffer 7491 #define pushBufferO(self, data, size) (self)->f->pushBuffer(self, data, size) 7492 #define pushBufferG pushBufferO 7493 7494 7495 #define setTopSO setTopStringO 7496 #define setTopSG setTopStringO 7497 7498 // generated with utils/oGMacros 7499 7500 #define escapeO(self) (self)->f->escape(self) 7501 #define escapeG escapeO 7502 7503 #define disposeO(self) (self)->f->dispose(self) 7504 #define disposeG disposeO 7505 7506 #define helpO(self) (self)->f->help(self) 7507 #define helpG helpO 7508 7509 #define resetO(self) (self)->f->reset(self) 7510 #define resetG resetO 7511 7512 #define getsoO(self) (self)->f->getso(self) 7513 #define getsoG getsoO 7514 7515 #define setsoO(self, so) (self)->f->setso(self, so) 7516 #define setsoG setsoO 7517 7518 #define mirrorO(self) (self)->f->mirror(self) 7519 #define mirrorG mirrorO 7520 7521 #define fromCArrayO(self, array, size) (self)->f->fromCArray(self, array, size) 7522 #define fromCArrayG fromCArrayO 7523 7524 #define fromArrayNFreeO(self, array, size) (self)->f->fromArrayNFree(self, array, size) 7525 #define fromArrayNFreeG fromArrayNFreeO 7526 7527 #define pushCharO(self, c) (self)->f->pushChar(self, c) 7528 #define pushCharG pushCharO 7529 7530 #define pushArraycO(self, array) (self)->f->pushArrayc(self, array) 7531 #define pushArraycG pushArraycO 7532 7533 #define pushCArraycO(self, array) (self)->f->pushCArrayc(self, array) 7534 #define pushCArraycG pushCArraycO 7535 7536 #define pushNFreeArraycO(self, array) (self)->f->pushNFreeArrayc(self, array) 7537 #define pushNFreeArraycG pushNFreeArraycO 7538 7539 #define pushNFreeSmallBytesO(self, value) (self)->f->pushNFreeSmallBytes(self, value) 7540 #define pushNFreeSmallBytesG pushNFreeSmallBytesO 7541 7542 #define popSmallBytesO(self) (self)->f->popSmallBytes(self) 7543 #define popSmallBytesG popSmallBytesO 7544 7545 #define popNumO(self) (self)->f->popNum(self) 7546 #define popNumG popNumO 7547 7548 #define prependUndefinedO(self) (self)->f->prependUndefined(self) 7549 #define prependUndefinedG prependUndefinedO 7550 7551 #define prependBoolO(self, value) (self)->f->prependBool(self, value) 7552 #define prependBoolG prependBoolO 7553 7554 #define prependDoubleO(self, value) (self)->f->prependDouble(self, value) 7555 #define prependDoubleG prependDoubleO 7556 7557 #define prependIntO(self, value) (self)->f->prependInt(self, value) 7558 #define prependIntG prependIntO 7559 7560 #define prependSO(self, string) (self)->f->prependS(self, string) 7561 #define prependSG prependSO 7562 7563 #define prependCharO(self, c) (self)->f->prependChar(self, c) 7564 #define prependCharG prependCharO 7565 7566 #define prependDictO(self, dict) (self)->f->prependDict(self, dict) 7567 #define prependDictG prependDictO 7568 7569 #define prependArrayO(self, array) (self)->f->prependArray(self, array) 7570 #define prependArrayG prependArrayO 7571 7572 #define prependArraycO(self, array) (self)->f->prependArrayc(self, array) 7573 #define prependArraycG prependArraycO 7574 7575 #define prependCArraycO(self, array) (self)->f->prependCArrayc(self, array) 7576 #define prependCArraycG prependCArraycO 7577 7578 #define prependSmallBoolO(self, value) (self)->f->prependSmallBool(self, value) 7579 #define prependSmallBoolG prependSmallBoolO 7580 7581 #define prependSmallBytesO(self, value) (self)->f->prependSmallBytes(self, value) 7582 #define prependSmallBytesG prependSmallBytesO 7583 7584 #define prependSmallDoubleO(self, value) (self)->f->prependSmallDouble(self, value) 7585 #define prependSmallDoubleG prependSmallDoubleO 7586 7587 #define prependSmallIntO(self, value) (self)->f->prependSmallInt(self, value) 7588 #define prependSmallIntG prependSmallIntO 7589 7590 #define prependSmallContainerO(self, container) (self)->f->prependSmallContainer(self, container) 7591 #define prependSmallContainerG prependSmallContainerO 7592 7593 #define prependNFreeUndefinedO(self, u) (self)->f->prependNFreeUndefined(self, u) 7594 #define prependNFreeUndefinedG prependNFreeUndefinedO 7595 7596 #define prependNFreeSO(self, string) (self)->f->prependNFreeS(self, string) 7597 #define prependNFreeSG prependNFreeSO 7598 7599 #define prependNFreeDictO(self, dict) (self)->f->prependNFreeDict(self, dict) 7600 #define prependNFreeDictG prependNFreeDictO 7601 7602 #define prependNFreeArrayO(self, array) (self)->f->prependNFreeArray(self, array) 7603 #define prependNFreeArrayG prependNFreeArrayO 7604 7605 #define prependNFreeArraycO(self, array) (self)->f->prependNFreeArrayc(self, array) 7606 #define prependNFreeArraycG prependNFreeArraycO 7607 7608 #define prependNFreeSmallBoolO(self, value) (self)->f->prependNFreeSmallBool(self, value) 7609 #define prependNFreeSmallBoolG prependNFreeSmallBoolO 7610 7611 #define prependNFreeSmallBytesO(self, value) (self)->f->prependNFreeSmallBytes(self, value) 7612 #define prependNFreeSmallBytesG prependNFreeSmallBytesO 7613 7614 #define prependNFreeSmallDoubleO(self, value) (self)->f->prependNFreeSmallDouble(self, value) 7615 #define prependNFreeSmallDoubleG prependNFreeSmallDoubleO 7616 7617 #define prependNFreeSmallIntO(self, value) (self)->f->prependNFreeSmallInt(self, value) 7618 #define prependNFreeSmallIntG prependNFreeSmallIntO 7619 7620 #define prependNFreeSmallStringO(self, string) (self)->f->prependNFreeSmallString(self, string) 7621 #define prependNFreeSmallStringG prependNFreeSmallStringO 7622 7623 #define prependNFreeSmallContainerO(self, container) (self)->f->prependNFreeSmallContainer(self, container) 7624 #define prependNFreeSmallContainerG prependNFreeSmallContainerO 7625 7626 #define dequeueUndefinedO(self) (self)->f->dequeueUndefined(self) 7627 #define dequeueUndefinedG dequeueUndefinedO 7628 7629 #define dequeueBoolO(self) (self)->f->dequeueBool(self) 7630 #define dequeueBoolG dequeueBoolO 7631 7632 #define dequeueDoubleO(self) (self)->f->dequeueDouble(self) 7633 #define dequeueDoubleG dequeueDoubleO 7634 7635 #define dequeueIntO(self) (self)->f->dequeueInt(self) 7636 #define dequeueIntG dequeueIntO 7637 7638 #define dequeueInt32O(self) (self)->f->dequeueInt32(self) 7639 #define dequeueInt32G dequeueInt32O 7640 7641 #define dequeueUintO(self) (self)->f->dequeueUint(self) 7642 #define dequeueUintG dequeueUintO 7643 7644 #define dequeueUint32O(self) (self)->f->dequeueUint32(self) 7645 #define dequeueUint32G dequeueUint32O 7646 7647 #define dequeueSO(self) (self)->f->dequeueS(self) 7648 #define dequeueSG dequeueSO 7649 7650 #define dequeueDictO(self) (self)->f->dequeueDict(self) 7651 #define dequeueDictG dequeueDictO 7652 7653 #define dequeueArrayO(self) (self)->f->dequeueArray(self) 7654 #define dequeueArrayG dequeueArrayO 7655 7656 #define dequeueSmallBoolO(self) (self)->f->dequeueSmallBool(self) 7657 #define dequeueSmallBoolG dequeueSmallBoolO 7658 7659 #define dequeueSmallBytesO(self) (self)->f->dequeueSmallBytes(self) 7660 #define dequeueSmallBytesG dequeueSmallBytesO 7661 7662 #define dequeueSmallDoubleO(self) (self)->f->dequeueSmallDouble(self) 7663 #define dequeueSmallDoubleG dequeueSmallDoubleO 7664 7665 #define dequeueSmallIntO(self) (self)->f->dequeueSmallInt(self) 7666 #define dequeueSmallIntG dequeueSmallIntO 7667 7668 #define dequeueSmallStringO(self) (self)->f->dequeueSmallString(self) 7669 #define dequeueSmallStringG dequeueSmallStringO 7670 7671 #define dequeueVoidO(self) (self)->f->dequeueVoid(self) 7672 #define dequeueVoidG dequeueVoidO 7673 7674 #define dequeueSmallContainerO(self) (self)->f->dequeueSmallContainer(self) 7675 #define dequeueSmallContainerG dequeueSmallContainerO 7676 7677 #define dequeueNumO(self) (self)->f->dequeueNum(self) 7678 #define dequeueNumG dequeueNumO 7679 7680 #define appendArrayO(self, array) (self)->f->appendArray(self, array) 7681 #define appendArrayG appendArrayO 7682 7683 #define appendCArrayO(self, array) (self)->f->appendCArray(self, array) 7684 #define appendCArrayG appendCArrayO 7685 7686 #define appendNSmashArrayO(self, array) (self)->f->appendNSmashArray(self, array) 7687 #define appendNSmashArrayG appendNSmashArrayO 7688 7689 #define cropElemUndefinedO(self, index) (self)->f->cropElemUndefined(self, index) 7690 #define cropElemUndefinedG cropElemUndefinedO 7691 7692 #define cropElemBoolO(self, index) (self)->f->cropElemBool(self, index) 7693 #define cropElemBoolG cropElemBoolO 7694 7695 #define cropElemDoubleO(self, index) (self)->f->cropElemDouble(self, index) 7696 #define cropElemDoubleG cropElemDoubleO 7697 7698 #define cropElemIntO(self, index) (self)->f->cropElemInt(self, index) 7699 #define cropElemIntG cropElemIntO 7700 7701 #define cropElemInt32O(self, index) (self)->f->cropElemInt32(self, index) 7702 #define cropElemInt32G cropElemInt32O 7703 7704 #define cropElemUintO(self, index) (self)->f->cropElemUint(self, index) 7705 #define cropElemUintG cropElemUintO 7706 7707 #define cropElemUint32O(self, index) (self)->f->cropElemUint32(self, index) 7708 #define cropElemUint32G cropElemUint32O 7709 7710 #define cropElemSO(self, index) (self)->f->cropElemS(self, index) 7711 #define cropElemSG cropElemSO 7712 7713 #define cropElemDictO(self, index) (self)->f->cropElemDict(self, index) 7714 #define cropElemDictG cropElemDictO 7715 7716 #define cropElemArrayO(self, index) (self)->f->cropElemArray(self, index) 7717 #define cropElemArrayG cropElemArrayO 7718 7719 #define cropElemSmallBoolO(self, index) (self)->f->cropElemSmallBool(self, index) 7720 #define cropElemSmallBoolG cropElemSmallBoolO 7721 7722 #define cropElemSmallBytesO(self, index) (self)->f->cropElemSmallBytes(self, index) 7723 #define cropElemSmallBytesG cropElemSmallBytesO 7724 7725 #define cropElemSmallDoubleO(self, index) (self)->f->cropElemSmallDouble(self, index) 7726 #define cropElemSmallDoubleG cropElemSmallDoubleO 7727 7728 #define cropElemSmallIntO(self, index) (self)->f->cropElemSmallInt(self, index) 7729 #define cropElemSmallIntG cropElemSmallIntO 7730 7731 #define cropElemSmallJsonO(self, index) (self)->f->cropElemSmallJson(self, index) 7732 #define cropElemSmallJsonG cropElemSmallJsonO 7733 7734 #define cropElemVoidO(self, index) (self)->f->cropElemVoid(self, index) 7735 #define cropElemVoidG cropElemVoidO 7736 7737 #define cropElemSmallContainerO(self, index) (self)->f->cropElemSmallContainer(self, index) 7738 #define cropElemSmallContainerG cropElemSmallContainerO 7739 7740 #define injectUndefinedO(self, index) (self)->f->injectUndefined(self, index) 7741 #define injectUndefinedG injectUndefinedO 7742 7743 #define injectBoolO(self, index, toInject) (self)->f->injectBool(self, index, toInject) 7744 #define injectBoolG injectBoolO 7745 7746 #define injectDoubleO(self, index, toInject) (self)->f->injectDouble(self, index, toInject) 7747 #define injectDoubleG injectDoubleO 7748 7749 #define injectIntO(self, index, toInject) (self)->f->injectInt(self, index, toInject) 7750 #define injectIntG injectIntO 7751 7752 #define injectSO(self, index, toInject) (self)->f->injectS(self, index, toInject) 7753 #define injectSG injectSO 7754 7755 #define injectCharO(self, index, c) (self)->f->injectChar(self, index, c) 7756 #define injectCharG injectCharO 7757 7758 #define injectDictO(self, index, toInject) (self)->f->injectDict(self, index, toInject) 7759 #define injectDictG injectDictO 7760 7761 #define injectArrayO(self, index, toInject) (self)->f->injectArray(self, index, toInject) 7762 #define injectArrayG injectArrayO 7763 7764 #define injectArraycO(self, index, toInject) (self)->f->injectArrayc(self, index, toInject) 7765 #define injectArraycG injectArraycO 7766 7767 #define injectCArraycO(self, index, toInject) (self)->f->injectCArrayc(self, index, toInject) 7768 #define injectCArraycG injectCArraycO 7769 7770 #define injectSmallBoolO(self, index, toInject) (self)->f->injectSmallBool(self, index, toInject) 7771 #define injectSmallBoolG injectSmallBoolO 7772 7773 #define injectSmallBytesO(self, index, toInject) (self)->f->injectSmallBytes(self, index, toInject) 7774 #define injectSmallBytesG injectSmallBytesO 7775 7776 #define injectSmallDoubleO(self, index, toInject) (self)->f->injectSmallDouble(self, index, toInject) 7777 #define injectSmallDoubleG injectSmallDoubleO 7778 7779 #define injectSmallIntO(self, index, toInject) (self)->f->injectSmallInt(self, index, toInject) 7780 #define injectSmallIntG injectSmallIntO 7781 7782 #define injectSmallContainerO(self, index, toInject) (self)->f->injectSmallContainer(self, index, toInject) 7783 #define injectSmallContainerG injectSmallContainerO 7784 7785 #define injectNFreeUndefinedO(self, index, u) (self)->f->injectNFreeUndefined(self, index, u) 7786 #define injectNFreeUndefinedG injectNFreeUndefinedO 7787 7788 #define injectNFreeSO(self, index, toInject) (self)->f->injectNFreeS(self, index, toInject) 7789 #define injectNFreeSG injectNFreeSO 7790 7791 #define injectNFreeDictO(self, index, toInject) (self)->f->injectNFreeDict(self, index, toInject) 7792 #define injectNFreeDictG injectNFreeDictO 7793 7794 #define injectNFreeArrayO(self, index, toInject) (self)->f->injectNFreeArray(self, index, toInject) 7795 #define injectNFreeArrayG injectNFreeArrayO 7796 7797 #define injectNFreeArraycO(self, index, toInject) (self)->f->injectNFreeArrayc(self, index, toInject) 7798 #define injectNFreeArraycG injectNFreeArraycO 7799 7800 #define injectNFreeSmallBoolO(self, index, toInject) (self)->f->injectNFreeSmallBool(self, index, toInject) 7801 #define injectNFreeSmallBoolG injectNFreeSmallBoolO 7802 7803 #define injectNFreeSmallBytesO(self, index, toInject) (self)->f->injectNFreeSmallBytes(self, index, toInject) 7804 #define injectNFreeSmallBytesG injectNFreeSmallBytesO 7805 7806 #define injectNFreeSmallDoubleO(self, index, toInject) (self)->f->injectNFreeSmallDouble(self, index, toInject) 7807 #define injectNFreeSmallDoubleG injectNFreeSmallDoubleO 7808 7809 #define injectNFreeSmallIntO(self, index, toInject) (self)->f->injectNFreeSmallInt(self, index, toInject) 7810 #define injectNFreeSmallIntG injectNFreeSmallIntO 7811 7812 #define injectNFreeSmallStringO(self, index, toInject) (self)->f->injectNFreeSmallString(self, index, toInject) 7813 #define injectNFreeSmallStringG injectNFreeSmallStringO 7814 7815 #define injectNFreeSmallContainerO(self, index, toInject) (self)->f->injectNFreeSmallContainer(self, index, toInject) 7816 #define injectNFreeSmallContainerG injectNFreeSmallContainerO 7817 7818 #define sortFO(self, compareFunction) (self)->f->sortF(self, compareFunction) 7819 #define sortFG sortFO 7820 7821 #define equalO(self, array) (self)->f->equal(self, array) 7822 #define equalG equalO 7823 7824 #define equalSmallJsonO(self, array) (self)->f->equalSmallJson(self, array) 7825 #define equalSmallJsonG equalSmallJsonO 7826 7827 #define equalArrayO(self, p2) (self)->f->equalArray(self, p2) 7828 #define equalArrayG equalArrayO 7829 7830 #define equalCArrayO(self, p2) (self)->f->equalCArray(self, p2) 7831 #define equalCArrayG equalCArrayO 7832 7833 #define equalBaseO(self, p2) (self)->f->equalBase(self, p2) 7834 #define equalBaseG equalBaseO 7835 7836 #define icEqualO(self, array) (self)->f->icEqual(self, array) 7837 #define icEqualG icEqualO 7838 7839 #define icEqualSmallJsonO(self, array) (self)->f->icEqualSmallJson(self, array) 7840 #define icEqualSmallJsonG icEqualSmallJsonO 7841 7842 #define setAtCharO(self, index, c) (self)->f->setAtChar(self, index, c) 7843 #define setAtCharG setAtCharO 7844 7845 #define setAtArraycO(self, index, array) (self)->f->setAtArrayc(self, index, array) 7846 #define setAtArraycG setAtArraycO 7847 7848 #define setAtCArraycO(self, index, array) (self)->f->setAtCArrayc(self, index, array) 7849 #define setAtCArraycG setAtCArraycO 7850 7851 #define setAtSmallBytesO(self, index, value) (self)->f->setAtSmallBytes(self, index, value) 7852 #define setAtSmallBytesG setAtSmallBytesO 7853 7854 #define setAtNFreeArraycO(self, index, array) (self)->f->setAtNFreeArrayc(self, index, array) 7855 #define setAtNFreeArraycG setAtNFreeArraycO 7856 7857 #define setAtNFreeSmallBytesO(self, index, value) (self)->f->setAtNFreeSmallBytes(self, index, value) 7858 #define setAtNFreeSmallBytesG setAtNFreeSmallBytesO 7859 7860 #define setPAtSmallJsonO(self, index, json) (self)->f->setPAtSmallJson(self, index, json) 7861 #define setPAtSmallJsonG setPAtSmallJsonO 7862 7863 #define setPAtNFreeSmallJsonO(self, index, json) (self)->f->setPAtNFreeSmallJson(self, index, json) 7864 #define setPAtNFreeSmallJsonG setPAtNFreeSmallJsonO 7865 7866 #define hasUndefinedO(self, u) (self)->f->hasUndefined(self, u) 7867 #define hasUndefinedG hasUndefinedO 7868 7869 #define hasBoolO(self, value) (self)->f->hasBool(self, value) 7870 #define hasBoolG hasBoolO 7871 7872 #define hasDoubleO(self, value) (self)->f->hasDouble(self, value) 7873 #define hasDoubleG hasDoubleO 7874 7875 #define hasIntO(self, value) (self)->f->hasInt(self, value) 7876 #define hasIntG hasIntO 7877 7878 #define hasSO(self, string) (self)->f->hasS(self, string) 7879 #define hasSG hasSO 7880 7881 #define hasCharO(self, c) (self)->f->hasChar(self, c) 7882 #define hasCharG hasCharO 7883 7884 #define hasDictO(self, dict) (self)->f->hasDict(self, dict) 7885 #define hasDictG hasDictO 7886 7887 #define hasArrayO(self, array) (self)->f->hasArray(self, array) 7888 #define hasArrayG hasArrayO 7889 7890 #define hasArraycO(self, array) (self)->f->hasArrayc(self, array) 7891 #define hasArraycG hasArraycO 7892 7893 #define hasCArraycO(self, array) (self)->f->hasCArrayc(self, array) 7894 #define hasCArraycG hasCArraycO 7895 7896 #define hasSmallBoolO(self, value) (self)->f->hasSmallBool(self, value) 7897 #define hasSmallBoolG hasSmallBoolO 7898 7899 #define hasSmallBytesO(self, value) (self)->f->hasSmallBytes(self, value) 7900 #define hasSmallBytesG hasSmallBytesO 7901 7902 #define hasSmallDoubleO(self, value) (self)->f->hasSmallDouble(self, value) 7903 #define hasSmallDoubleG hasSmallDoubleO 7904 7905 #define hasSmallIntO(self, value) (self)->f->hasSmallInt(self, value) 7906 #define hasSmallIntG hasSmallIntO 7907 7908 #define hasSmallContainerO(self, container) (self)->f->hasSmallContainer(self, container) 7909 #define hasSmallContainerG hasSmallContainerO 7910 7911 #define indexOfUndefinedO(self, u) (self)->f->indexOfUndefined(self, u) 7912 #define indexOfUndefinedG indexOfUndefinedO 7913 7914 #define indexOfBoolO(self, value) (self)->f->indexOfBool(self, value) 7915 #define indexOfBoolG indexOfBoolO 7916 7917 #define indexOfDoubleO(self, value) (self)->f->indexOfDouble(self, value) 7918 #define indexOfDoubleG indexOfDoubleO 7919 7920 #define indexOfIntO(self, value) (self)->f->indexOfInt(self, value) 7921 #define indexOfIntG indexOfIntO 7922 7923 #define indexOfSO(self, string) (self)->f->indexOfS(self, string) 7924 #define indexOfSG indexOfSO 7925 7926 #define indexOfCharO(self, c) (self)->f->indexOfChar(self, c) 7927 #define indexOfCharG indexOfCharO 7928 7929 #define indexOfDictO(self, dict) (self)->f->indexOfDict(self, dict) 7930 #define indexOfDictG indexOfDictO 7931 7932 #define indexOfArrayO(self, array) (self)->f->indexOfArray(self, array) 7933 #define indexOfArrayG indexOfArrayO 7934 7935 #define indexOfArraycO(self, array) (self)->f->indexOfArrayc(self, array) 7936 #define indexOfArraycG indexOfArraycO 7937 7938 #define indexOfCArraycO(self, array) (self)->f->indexOfCArrayc(self, array) 7939 #define indexOfCArraycG indexOfCArraycO 7940 7941 #define indexOfSmallBoolO(self, value) (self)->f->indexOfSmallBool(self, value) 7942 #define indexOfSmallBoolG indexOfSmallBoolO 7943 7944 #define indexOfSmallBytesO(self, value) (self)->f->indexOfSmallBytes(self, value) 7945 #define indexOfSmallBytesG indexOfSmallBytesO 7946 7947 #define indexOfSmallDoubleO(self, value) (self)->f->indexOfSmallDouble(self, value) 7948 #define indexOfSmallDoubleG indexOfSmallDoubleO 7949 7950 #define indexOfSmallIntO(self, value) (self)->f->indexOfSmallInt(self, value) 7951 #define indexOfSmallIntG indexOfSmallIntO 7952 7953 #define binarySearchUndefinedO(self, u) (self)->f->binarySearchUndefined(self, u) 7954 #define binarySearchUndefinedG binarySearchUndefinedO 7955 7956 #define binarySearchBoolO(self, value) (self)->f->binarySearchBool(self, value) 7957 #define binarySearchBoolG binarySearchBoolO 7958 7959 #define binarySearchDoubleO(self, value) (self)->f->binarySearchDouble(self, value) 7960 #define binarySearchDoubleG binarySearchDoubleO 7961 7962 #define binarySearchIntO(self, value) (self)->f->binarySearchInt(self, value) 7963 #define binarySearchIntG binarySearchIntO 7964 7965 #define binarySearchSO(self, string) (self)->f->binarySearchS(self, string) 7966 #define binarySearchSG binarySearchSO 7967 7968 #define binarySearchCharO(self, c) (self)->f->binarySearchChar(self, c) 7969 #define binarySearchCharG binarySearchCharO 7970 7971 #define binarySearchDictO(self, dict) (self)->f->binarySearchDict(self, dict) 7972 #define binarySearchDictG binarySearchDictO 7973 7974 #define binarySearchArrayO(self, array) (self)->f->binarySearchArray(self, array) 7975 #define binarySearchArrayG binarySearchArrayO 7976 7977 #define binarySearchArraycO(self, array) (self)->f->binarySearchArrayc(self, array) 7978 #define binarySearchArraycG binarySearchArraycO 7979 7980 #define binarySearchCArraycO(self, array) (self)->f->binarySearchCArrayc(self, array) 7981 #define binarySearchCArraycG binarySearchCArraycO 7982 7983 #define binarySearchSmallBoolO(self, value) (self)->f->binarySearchSmallBool(self, value) 7984 #define binarySearchSmallBoolG binarySearchSmallBoolO 7985 7986 #define binarySearchSmallBytesO(self, value) (self)->f->binarySearchSmallBytes(self, value) 7987 #define binarySearchSmallBytesG binarySearchSmallBytesO 7988 7989 #define binarySearchSmallDoubleO(self, value) (self)->f->binarySearchSmallDouble(self, value) 7990 #define binarySearchSmallDoubleG binarySearchSmallDoubleO 7991 7992 #define binarySearchSmallIntO(self, value) (self)->f->binarySearchSmallInt(self, value) 7993 #define binarySearchSmallIntG binarySearchSmallIntO 7994 7995 #define binarySearchSmallStringO(self, string) (self)->f->binarySearchSmallString(self, string) 7996 #define binarySearchSmallStringG binarySearchSmallStringO 7997 7998 #define icHasSO(self, string) (self)->f->icHasS(self, string) 7999 #define icHasSG icHasSO 8000 8001 #define icHasCharO(self, c) (self)->f->icHasChar(self, c) 8002 #define icHasCharG icHasCharO 8003 8004 #define icHasDictO(self, dict) (self)->f->icHasDict(self, dict) 8005 #define icHasDictG icHasDictO 8006 8007 #define icHasArrayO(self, array) (self)->f->icHasArray(self, array) 8008 #define icHasArrayG icHasArrayO 8009 8010 #define icHasArraycO(self, array) (self)->f->icHasArrayc(self, array) 8011 #define icHasArraycG icHasArraycO 8012 8013 #define icHasCArraycO(self, array) (self)->f->icHasCArrayc(self, array) 8014 #define icHasCArraycG icHasCArraycO 8015 8016 #define icIndexOfSO(self, string) (self)->f->icIndexOfS(self, string) 8017 #define icIndexOfSG icIndexOfSO 8018 8019 #define icIndexOfCharO(self, c) (self)->f->icIndexOfChar(self, c) 8020 #define icIndexOfCharG icIndexOfCharO 8021 8022 #define icIndexOfDictO(self, dict) (self)->f->icIndexOfDict(self, dict) 8023 #define icIndexOfDictG icIndexOfDictO 8024 8025 #define icIndexOfArrayO(self, array) (self)->f->icIndexOfArray(self, array) 8026 #define icIndexOfArrayG icIndexOfArrayO 8027 8028 #define icIndexOfArraycO(self, array) (self)->f->icIndexOfArrayc(self, array) 8029 #define icIndexOfArraycG icIndexOfArraycO 8030 8031 #define icIndexOfCArraycO(self, array) (self)->f->icIndexOfCArrayc(self, array) 8032 #define icIndexOfCArraycG icIndexOfCArraycO 8033 8034 #define icBinarySearchSO(self, string) (self)->f->icBinarySearchS(self, string) 8035 #define icBinarySearchSG icBinarySearchSO 8036 8037 #define icBinarySearchCharO(self, c) (self)->f->icBinarySearchChar(self, c) 8038 #define icBinarySearchCharG icBinarySearchCharO 8039 8040 #define icBinarySearchDictO(self, dict) (self)->f->icBinarySearchDict(self, dict) 8041 #define icBinarySearchDictG icBinarySearchDictO 8042 8043 #define icBinarySearchArrayO(self, array) (self)->f->icBinarySearchArray(self, array) 8044 #define icBinarySearchArrayG icBinarySearchArrayO 8045 8046 #define icBinarySearchArraycO(self, array) (self)->f->icBinarySearchArrayc(self, array) 8047 #define icBinarySearchArraycG icBinarySearchArraycO 8048 8049 #define icBinarySearchCArraycO(self, array) (self)->f->icBinarySearchCArrayc(self, array) 8050 #define icBinarySearchCArraycG icBinarySearchCArraycO 8051 8052 #define icBinarySearchSmallStringO(self, string) (self)->f->icBinarySearchSmallString(self, string) 8053 #define icBinarySearchSmallStringG icBinarySearchSmallStringO 8054 8055 #define forEachO(self, closure, funcElem) (self)->f->forEach(self, closure, funcElem) 8056 #define forEachG forEachO 8057 8058 #define enumerateO(self, closure, funcElem) (self)->f->enumerate(self, closure, funcElem) 8059 #define enumerateG enumerateO 8060 8061 #define iterStartO(self) (self)->f->iterStart(self) 8062 #define iterStartG iterStartO 8063 8064 #define iterStartLastO(self) (self)->f->iterStartLast(self) 8065 #define iterStartLastG iterStartLastO 8066 8067 #define iterStartFromO(self, index) (self)->f->iterStartFrom(self, index) 8068 #define iterStartFromG iterStartFromO 8069 8070 #define iterStartFromStepO(self, index, step) (self)->f->iterStartFromStep(self, index, step) 8071 #define iterStartFromStepG iterStartFromStepO 8072 8073 #define iterNextO(self) (self)->f->iterNext(self) 8074 #define iterNextG iterNextO 8075 8076 #define iterElementO(self) (self)->f->iterElement(self) 8077 #define iterElementG iterElementO 8078 8079 #define iterIndexO(self) (self)->f->iterIndex(self) 8080 #define iterIndexG iterIndexO 8081 8082 #define iterStepO(self) (self)->f->iterStep(self) 8083 #define iterStepG iterStepO 8084 8085 #define joinCharO(self, c) (self)->f->joinChar(self, c) 8086 #define joinCharG joinCharO 8087 8088 #define joinSmallStringO(self, delim) (self)->f->joinSmallString(self, delim) 8089 #define joinSmallStringG joinSmallStringO 8090 8091 #define joinCharSO(self, c) (self)->f->joinCharS(self, c) 8092 #define joinCharSG joinCharSO 8093 8094 #define joinSmallJsonSO(self, delim) (self)->f->joinSmallJsonS(self, delim) 8095 #define joinSmallJsonSG joinSmallJsonSO 8096 8097 #define joinSmallStringSO(self, delim) (self)->f->joinSmallStringS(self, delim) 8098 #define joinSmallStringSG joinSmallStringSO 8099 8100 #define zipSmallJsonSmallJsonO(self, array1, array2) (self)->f->zipSmallJsonSmallJson(self, array1, array2) 8101 #define zipSmallJsonSmallJsonG zipSmallJsonSmallJsonO 8102 8103 #define zipSmallJsonCharO(self, array1, array2) (self)->f->zipSmallJsonChar(self, array1, array2) 8104 #define zipSmallJsonCharG zipSmallJsonCharO 8105 8106 #define zipSmallJsonCCharO(self, array1, array2) (self)->f->zipSmallJsonCChar(self, array1, array2) 8107 #define zipSmallJsonCCharG zipSmallJsonCCharO 8108 8109 #define zipArrayO(self, array1, array2) (self)->f->zipArray(self, array1, array2) 8110 #define zipArrayG zipArrayO 8111 8112 #define zipCArrayO(self, array1, array2) (self)->f->zipCArray(self, array1, array2) 8113 #define zipCArrayG zipCArrayO 8114 8115 #define zipCharO(self, array1, array2) (self)->f->zipChar(self, array1, array2) 8116 #define zipCharG zipCharO 8117 8118 #define zipCCharO(self, array1, array2) (self)->f->zipCChar(self, array1, array2) 8119 #define zipCCharG zipCCharO 8120 8121 #define zipArrayCharO(self, array1, array2) (self)->f->zipArrayChar(self, array1, array2) 8122 #define zipArrayCharG zipArrayCharO 8123 8124 #define zipCArrayCharO(self, array1, array2) (self)->f->zipCArrayChar(self, array1, array2) 8125 #define zipCArrayCharG zipCArrayCharO 8126 8127 #define zipArrayCCharO(self, array1, array2) (self)->f->zipArrayCChar(self, array1, array2) 8128 #define zipArrayCCharG zipArrayCCharO 8129 8130 #define zipCArrayCCharO(self, array1, array2) (self)->f->zipCArrayCChar(self, array1, array2) 8131 #define zipCArrayCCharG zipCArrayCCharO 8132 8133 #define readTextSmallStringO(self, filePath) (self)->f->readTextSmallString(self, filePath) 8134 #define readTextSmallStringG readTextSmallStringO 8135 8136 #define readStreamO(self, fp) (self)->f->readStream(self, fp) 8137 #define readStreamG readStreamO 8138 8139 #define writeTextSmallStringO(self, filePath) (self)->f->writeTextSmallString(self, filePath) 8140 #define writeTextSmallStringG writeTextSmallStringO 8141 8142 #define writeStreamO(self, fp) (self)->f->writeStream(self, fp) 8143 #define writeStreamG writeStreamO 8144 8145 #define appendTextO(self, filePath) (self)->f->appendText(self, filePath) 8146 #define appendTextG appendTextO 8147 8148 #define appendTextSmallStringO(self, filePath) (self)->f->appendTextSmallString(self, filePath) 8149 #define appendTextSmallStringG appendTextSmallStringO 8150 8151 #define typeStringO(self, index) (self)->f->typeString(self, index) 8152 #define typeStringG typeStringO 8153 8154 #define typeSmallStringO(self, index) (self)->f->typeSmallString(self, index) 8155 #define typeSmallStringG typeSmallStringO 8156 8157 #define typeO(self, index) (self)->f->type(self, index) 8158 #define typeG typeO 8159 8160 #define typeStringsO(self) (self)->f->typeStrings(self) 8161 #define typeStringsG typeStringsO 8162 8163 #define typeSmallStringsO(self) (self)->f->typeSmallStrings(self) 8164 #define typeSmallStringsG typeSmallStringsO 8165 8166 #define typesO(self) (self)->f->types(self) 8167 #define typesG typesO 8168 8169 #define isETypeO(self, index, type) (self)->f->isEType(self, index, type) 8170 #define isETypeG isETypeO 8171 8172 #define isEUndefinedO(self, index) (self)->f->isEUndefined(self, index) 8173 #define isEUndefinedG isEUndefinedO 8174 8175 #define isEBoolO(self, index) (self)->f->isEBool(self, index) 8176 #define isEBoolG isEBoolO 8177 8178 #define isEContainerO(self, index) (self)->f->isEContainer(self, index) 8179 #define isEContainerG isEContainerO 8180 8181 #define isEDictO(self, index) (self)->f->isEDict(self, index) 8182 #define isEDictG isEDictO 8183 8184 #define isEDoubleO(self, index) (self)->f->isEDouble(self, index) 8185 #define isEDoubleG isEDoubleO 8186 8187 #define isEIntO(self, index) (self)->f->isEInt(self, index) 8188 #define isEIntG isEIntO 8189 8190 #define isEStringO(self, index) (self)->f->isEString(self, index) 8191 #define isEStringG isEStringO 8192 8193 #define isEFaststringO(self, index) (self)->f->isEFaststring(self, index) 8194 #define isEFaststringG isEFaststringO 8195 8196 #define isEArrayO(self, index) (self)->f->isEArray(self, index) 8197 #define isEArrayG isEArrayO 8198 8199 #define isEBytesO(self, index) (self)->f->isEBytes(self, index) 8200 #define isEBytesG isEBytesO 8201 8202 #define areAllETypeO(self, type) (self)->f->areAllEType(self, type) 8203 #define areAllETypeG areAllETypeO 8204 8205 #define areAllEUndefinedO(self) (self)->f->areAllEUndefined(self) 8206 #define areAllEUndefinedG areAllEUndefinedO 8207 8208 #define areAllEBoolO(self) (self)->f->areAllEBool(self) 8209 #define areAllEBoolG areAllEBoolO 8210 8211 #define areAllEContainerO(self) (self)->f->areAllEContainer(self) 8212 #define areAllEContainerG areAllEContainerO 8213 8214 #define areAllEDictO(self) (self)->f->areAllEDict(self) 8215 #define areAllEDictG areAllEDictO 8216 8217 #define areAllEDoubleO(self) (self)->f->areAllEDouble(self) 8218 #define areAllEDoubleG areAllEDoubleO 8219 8220 #define areAllEIntO(self) (self)->f->areAllEInt(self) 8221 #define areAllEIntG areAllEIntO 8222 8223 #define areAllEStringO(self) (self)->f->areAllEString(self) 8224 #define areAllEStringG areAllEStringO 8225 8226 #define areAllEFaststringO(self) (self)->f->areAllEFaststring(self) 8227 #define areAllEFaststringG areAllEFaststringO 8228 8229 #define areAllEArrayO(self) (self)->f->areAllEArray(self) 8230 #define areAllEArrayG areAllEArrayO 8231 8232 #define areAllEBytesO(self) (self)->f->areAllEBytes(self) 8233 #define areAllEBytesG areAllEBytesO 8234 8235 #define setInt64O(self, p2) (self)->f->setInt64(self, p2) 8236 #define setInt64G setInt64O 8237 8238 #define setInt32O(self, p2) (self)->f->setInt32(self, p2) 8239 #define setInt32G setInt32O 8240 8241 #define setUint32O(self, p2) (self)->f->setUint32(self, p2) 8242 #define setUint32G setUint32O 8243 8244 #define setUint64O(self, p2) (self)->f->setUint64(self, p2) 8245 #define setUint64G setUint64O 8246 8247 #define equalCharO(self, p2) (self)->f->equalChar(self, p2) 8248 #define equalCharG equalCharO 8249 8250 #define equalBoolO(self, p2) (self)->f->equalBool(self, p2) 8251 #define equalBoolG equalBoolO 8252 8253 #define equalDoubleO(self, p2) (self)->f->equalDouble(self, p2) 8254 #define equalDoubleG equalDoubleO 8255 8256 #define equalInt64O(self, p2) (self)->f->equalInt64(self, p2) 8257 #define equalInt64G equalInt64O 8258 8259 #define equalInt32O(self, p2) (self)->f->equalInt32(self, p2) 8260 #define equalInt32G equalInt32O 8261 8262 #define equalUint32O(self, p2) (self)->f->equalUint32(self, p2) 8263 #define equalUint32G equalUint32O 8264 8265 #define equalUint64O(self, p2) (self)->f->equalUint64(self, p2) 8266 #define equalUint64G equalUint64O 8267 8268 #define equalSmallDoubleO(self, p2) (self)->f->equalSmallDouble(self, p2) 8269 #define equalSmallDoubleG equalSmallDoubleO 8270 8271 #define equalSmallIntO(self, p2) (self)->f->equalSmallInt(self, p2) 8272 #define equalSmallIntG equalSmallIntO 8273 8274 #define equalSmallStringO(self, p2) (self)->f->equalSmallString(self, p2) 8275 #define equalSmallStringG equalSmallStringO 8276 8277 #define appendFileSmallStringO(self, filePath) (self)->f->appendFileSmallString(self, filePath) 8278 #define appendFileSmallStringG appendFileSmallStringO 8279 8280 #define equalSmallBoolO(self, value) (self)->f->equalSmallBool(self, value) 8281 #define equalSmallBoolG equalSmallBoolO 8282 8283 #define setClassDataFreeO(self, free) (self)->f->setClassDataFree(self, free) 8284 #define setClassDataFreeG setClassDataFreeO 8285 8286 #define setObjectDataFreeO(self, free) (self)->f->setObjectDataFree(self, free) 8287 #define setObjectDataFreeG setObjectDataFreeO 8288 8289 #define setClassDataToStringO(self, toString) (self)->f->setClassDataToString(self, toString) 8290 #define setClassDataToStringG setClassDataToStringO 8291 8292 #define setObjectDataToStringO(self, toString) (self)->f->setObjectDataToString(self, toString) 8293 #define setObjectDataToStringG setObjectDataToStringO 8294 8295 #define setClassDataDuplicateO(self, duplicate) (self)->f->setClassDataDuplicate(self, duplicate) 8296 #define setClassDataDuplicateG setClassDataDuplicateO 8297 8298 #define setObjectDataDuplicateO(self, duplicate) (self)->f->setObjectDataDuplicate(self, duplicate) 8299 #define setObjectDataDuplicateG setObjectDataDuplicateO 8300 8301 #define setCharO(self, key, c) (self)->f->setChar(self, key, c) 8302 #define setCharG setCharO 8303 8304 #define setArraycO(self, key, array) (self)->f->setArrayc(self, key, array) 8305 #define setArraycG setArraycO 8306 8307 #define setCArraycO(self, key, array) (self)->f->setCArrayc(self, key, array) 8308 #define setCArraycG setCArraycO 8309 8310 #define setKCharO(self, key, value) (self)->f->setKChar(self, key, value) 8311 #define setKCharG setKCharO 8312 8313 #define setUndefinedKCharO(self, key) (self)->f->setUndefinedKChar(self, key) 8314 #define setUndefinedKCharG setUndefinedKCharO 8315 8316 #define setBoolKCharO(self, key, value) (self)->f->setBoolKChar(self, key, value) 8317 #define setBoolKCharG setBoolKCharO 8318 8319 #define setDoubleKCharO(self, key, value) (self)->f->setDoubleKChar(self, key, value) 8320 #define setDoubleKCharG setDoubleKCharO 8321 8322 #define setIntKCharO(self, key, value) (self)->f->setIntKChar(self, key, value) 8323 #define setIntKCharG setIntKCharO 8324 8325 #define setSKCharO(self, key, string) (self)->f->setSKChar(self, key, string) 8326 #define setSKCharG setSKCharO 8327 8328 #define setCharKCharO(self, key, c) (self)->f->setCharKChar(self, key, c) 8329 #define setCharKCharG setCharKCharO 8330 8331 #define setDictKCharO(self, key, dict) (self)->f->setDictKChar(self, key, dict) 8332 #define setDictKCharG setDictKCharO 8333 8334 #define setArrayKCharO(self, key, array) (self)->f->setArrayKChar(self, key, array) 8335 #define setArrayKCharG setArrayKCharO 8336 8337 #define setArraycKCharO(self, key, array) (self)->f->setArraycKChar(self, key, array) 8338 #define setArraycKCharG setArraycKCharO 8339 8340 #define setCArraycKCharO(self, key, array) (self)->f->setCArraycKChar(self, key, array) 8341 #define setCArraycKCharG setCArraycKCharO 8342 8343 #define setSmallBoolKCharO(self, key, value) (self)->f->setSmallBoolKChar(self, key, value) 8344 #define setSmallBoolKCharG setSmallBoolKCharO 8345 8346 #define setSmallBytesKCharO(self, key, value) (self)->f->setSmallBytesKChar(self, key, value) 8347 #define setSmallBytesKCharG setSmallBytesKCharO 8348 8349 #define setSmallDoubleKCharO(self, key, value) (self)->f->setSmallDoubleKChar(self, key, value) 8350 #define setSmallDoubleKCharG setSmallDoubleKCharO 8351 8352 #define setSmallIntKCharO(self, key, value) (self)->f->setSmallIntKChar(self, key, value) 8353 #define setSmallIntKCharG setSmallIntKCharO 8354 8355 #define setSmallJsonKCharO(self, key, value) (self)->f->setSmallJsonKChar(self, key, value) 8356 #define setSmallJsonKCharG setSmallJsonKCharO 8357 8358 #define setSmallStringKCharO(self, key, string) (self)->f->setSmallStringKChar(self, key, string) 8359 #define setSmallStringKCharG setSmallStringKCharO 8360 8361 #define setSmallContainerKCharO(self, key, container) (self)->f->setSmallContainerKChar(self, key, container) 8362 #define setSmallContainerKCharG setSmallContainerKCharO 8363 8364 #define setNFreeArraycO(self, key, array) (self)->f->setNFreeArrayc(self, key, array) 8365 #define setNFreeArraycG setNFreeArraycO 8366 8367 #define setNFreeSmallBytesO(self, key, value) (self)->f->setNFreeSmallBytes(self, key, value) 8368 #define setNFreeSmallBytesG setNFreeSmallBytesO 8369 8370 #define setNFreeKCharO(self, key, value) (self)->f->setNFreeKChar(self, key, value) 8371 #define setNFreeKCharG setNFreeKCharO 8372 8373 #define setNFreeUndefinedKCharO(self, key, u) (self)->f->setNFreeUndefinedKChar(self, key, u) 8374 #define setNFreeUndefinedKCharG setNFreeUndefinedKCharO 8375 8376 #define setNFreeSKCharO(self, key, string) (self)->f->setNFreeSKChar(self, key, string) 8377 #define setNFreeSKCharG setNFreeSKCharO 8378 8379 #define setNFreeDictKCharO(self, key, dict) (self)->f->setNFreeDictKChar(self, key, dict) 8380 #define setNFreeDictKCharG setNFreeDictKCharO 8381 8382 #define setNFreeArrayKCharO(self, key, array) (self)->f->setNFreeArrayKChar(self, key, array) 8383 #define setNFreeArrayKCharG setNFreeArrayKCharO 8384 8385 #define setNFreeArraycKCharO(self, key, array) (self)->f->setNFreeArraycKChar(self, key, array) 8386 #define setNFreeArraycKCharG setNFreeArraycKCharO 8387 8388 #define setNFreeSmallBoolKCharO(self, key, value) (self)->f->setNFreeSmallBoolKChar(self, key, value) 8389 #define setNFreeSmallBoolKCharG setNFreeSmallBoolKCharO 8390 8391 #define setNFreeSmallBytesKCharO(self, key, value) (self)->f->setNFreeSmallBytesKChar(self, key, value) 8392 #define setNFreeSmallBytesKCharG setNFreeSmallBytesKCharO 8393 8394 #define setNFreeSmallDoubleKCharO(self, key, value) (self)->f->setNFreeSmallDoubleKChar(self, key, value) 8395 #define setNFreeSmallDoubleKCharG setNFreeSmallDoubleKCharO 8396 8397 #define setNFreeSmallIntKCharO(self, key, value) (self)->f->setNFreeSmallIntKChar(self, key, value) 8398 #define setNFreeSmallIntKCharG setNFreeSmallIntKCharO 8399 8400 #define setNFreeSmallJsonKCharO(self, key, value) (self)->f->setNFreeSmallJsonKChar(self, key, value) 8401 #define setNFreeSmallJsonKCharG setNFreeSmallJsonKCharO 8402 8403 #define setNFreeSmallStringKCharO(self, key, string) (self)->f->setNFreeSmallStringKChar(self, key, string) 8404 #define setNFreeSmallStringKCharG setNFreeSmallStringKCharO 8405 8406 #define setNFreeSmallContainerKCharO(self, key, container) (self)->f->setNFreeSmallContainerKChar(self, key, container) 8407 #define setNFreeSmallContainerKCharG setNFreeSmallContainerKCharO 8408 8409 #define setPSmallJsonO(self, key, json) (self)->f->setPSmallJson(self, key, json) 8410 #define setPSmallJsonG setPSmallJsonO 8411 8412 #define setNFreePSmallJsonO(self, key, json) (self)->f->setNFreePSmallJson(self, key, json) 8413 #define setNFreePSmallJsonG setNFreePSmallJsonO 8414 8415 #define setPArrayKCharO(self, key, array) (self)->f->setPArrayKChar(self, key, array) 8416 #define setPArrayKCharG setPArrayKCharO 8417 8418 #define setPDictKCharO(self, key, dict) (self)->f->setPDictKChar(self, key, dict) 8419 #define setPDictKCharG setPDictKCharO 8420 8421 #define setPSmallJsonKCharO(self, key, json) (self)->f->setPSmallJsonKChar(self, key, json) 8422 #define setPSmallJsonKCharG setPSmallJsonKCharO 8423 8424 #define setPSmallStringKCharO(self, key, string) (self)->f->setPSmallStringKChar(self, key, string) 8425 #define setPSmallStringKCharG setPSmallStringKCharO 8426 8427 #define setNFreePArrayKCharO(self, key, array) (self)->f->setNFreePArrayKChar(self, key, array) 8428 #define setNFreePArrayKCharG setNFreePArrayKCharO 8429 8430 #define setNFreePDictKCharO(self, key, dict) (self)->f->setNFreePDictKChar(self, key, dict) 8431 #define setNFreePDictKCharG setNFreePDictKCharO 8432 8433 #define setNFreePSmallJsonKCharO(self, key, json) (self)->f->setNFreePSmallJsonKChar(self, key, json) 8434 #define setNFreePSmallJsonKCharG setNFreePSmallJsonKCharO 8435 8436 #define setNFreePSmallStringKCharO(self, key, string) (self)->f->setNFreePSmallStringKChar(self, key, string) 8437 #define setNFreePSmallStringKCharG setNFreePSmallStringKCharO 8438 8439 #define getSmallBytesO(self, key) (self)->f->getSmallBytes(self, key) 8440 #define getSmallBytesG getSmallBytesO 8441 8442 #define getKCharO(self, key) (self)->f->getKChar(self, key) 8443 #define getKCharG getKCharO 8444 8445 #define getUndefinedKCharO(self, key) (self)->f->getUndefinedKChar(self, key) 8446 #define getUndefinedKCharG getUndefinedKCharO 8447 8448 #define getBoolKCharO(self, key) (self)->f->getBoolKChar(self, key) 8449 #define getBoolKCharG getBoolKCharO 8450 8451 #define getBoolPKCharO(self, key) (self)->f->getBoolPKChar(self, key) 8452 #define getBoolPKCharG getBoolPKCharO 8453 8454 #define getDoubleKCharO(self, key) (self)->f->getDoubleKChar(self, key) 8455 #define getDoubleKCharG getDoubleKCharO 8456 8457 #define getDoublePKCharO(self, key) (self)->f->getDoublePKChar(self, key) 8458 #define getDoublePKCharG getDoublePKCharO 8459 8460 #define getIntKCharO(self, key) (self)->f->getIntKChar(self, key) 8461 #define getIntKCharG getIntKCharO 8462 8463 #define getIntPKCharO(self, key) (self)->f->getIntPKChar(self, key) 8464 #define getIntPKCharG getIntPKCharO 8465 8466 #define getInt32KCharO(self, key) (self)->f->getInt32KChar(self, key) 8467 #define getInt32KCharG getInt32KCharO 8468 8469 #define getInt32PKCharO(self, key) (self)->f->getInt32PKChar(self, key) 8470 #define getInt32PKCharG getInt32PKCharO 8471 8472 #define getUintKCharO(self, key) (self)->f->getUintKChar(self, key) 8473 #define getUintKCharG getUintKCharO 8474 8475 #define getUintPKCharO(self, key) (self)->f->getUintPKChar(self, key) 8476 #define getUintPKCharG getUintPKCharO 8477 8478 #define getUint32KCharO(self, key) (self)->f->getUint32KChar(self, key) 8479 #define getUint32KCharG getUint32KCharO 8480 8481 #define getUint32PKCharO(self, key) (self)->f->getUint32PKChar(self, key) 8482 #define getUint32PKCharG getUint32PKCharO 8483 8484 #define getSKCharO(self, key) (self)->f->getSKChar(self, key) 8485 #define getSKCharG getSKCharO 8486 8487 #define getDictKCharO(self, key) (self)->f->getDictKChar(self, key) 8488 #define getDictKCharG getDictKCharO 8489 8490 #define getArrayKCharO(self, key) (self)->f->getArrayKChar(self, key) 8491 #define getArrayKCharG getArrayKCharO 8492 8493 #define getSmallBoolKCharO(self, key) (self)->f->getSmallBoolKChar(self, key) 8494 #define getSmallBoolKCharG getSmallBoolKCharO 8495 8496 #define getSmallBytesKCharO(self, key) (self)->f->getSmallBytesKChar(self, key) 8497 #define getSmallBytesKCharG getSmallBytesKCharO 8498 8499 #define getSmallDoubleKCharO(self, key) (self)->f->getSmallDoubleKChar(self, key) 8500 #define getSmallDoubleKCharG getSmallDoubleKCharO 8501 8502 #define getSmallIntKCharO(self, key) (self)->f->getSmallIntKChar(self, key) 8503 #define getSmallIntKCharG getSmallIntKCharO 8504 8505 #define getSmallJsonKCharO(self, key) (self)->f->getSmallJsonKChar(self, key) 8506 #define getSmallJsonKCharG getSmallJsonKCharO 8507 8508 #define getSmallStringKCharO(self, key) (self)->f->getSmallStringKChar(self, key) 8509 #define getSmallStringKCharG getSmallStringKCharO 8510 8511 #define getVoidKCharO(self, key) (self)->f->getVoidKChar(self, key) 8512 #define getVoidKCharG getVoidKCharO 8513 8514 #define getSmallContainerKCharO(self, key) (self)->f->getSmallContainerKChar(self, key) 8515 #define getSmallContainerKCharG getSmallContainerKCharO 8516 8517 #define getNDupSmallBytesO(self, key) (self)->f->getNDupSmallBytes(self, key) 8518 #define getNDupSmallBytesG getNDupSmallBytesO 8519 8520 #define getNDupKCharO(self, key) (self)->f->getNDupKChar(self, key) 8521 #define getNDupKCharG getNDupKCharO 8522 8523 #define getNDupUndefinedKCharO(self, key) (self)->f->getNDupUndefinedKChar(self, key) 8524 #define getNDupUndefinedKCharG getNDupUndefinedKCharO 8525 8526 #define getNDupBoolKCharO(self, key) (self)->f->getNDupBoolKChar(self, key) 8527 #define getNDupBoolKCharG getNDupBoolKCharO 8528 8529 #define getNDupDoubleKCharO(self, key) (self)->f->getNDupDoubleKChar(self, key) 8530 #define getNDupDoubleKCharG getNDupDoubleKCharO 8531 8532 #define getNDupIntKCharO(self, key) (self)->f->getNDupIntKChar(self, key) 8533 #define getNDupIntKCharG getNDupIntKCharO 8534 8535 #define getNDupInt32KCharO(self, key) (self)->f->getNDupInt32KChar(self, key) 8536 #define getNDupInt32KCharG getNDupInt32KCharO 8537 8538 #define getNDupUintKCharO(self, key) (self)->f->getNDupUintKChar(self, key) 8539 #define getNDupUintKCharG getNDupUintKCharO 8540 8541 #define getNDupUint32KCharO(self, key) (self)->f->getNDupUint32KChar(self, key) 8542 #define getNDupUint32KCharG getNDupUint32KCharO 8543 8544 #define getNDupSKCharO(self, key) (self)->f->getNDupSKChar(self, key) 8545 #define getNDupSKCharG getNDupSKCharO 8546 8547 #define getNDupDictKCharO(self, key) (self)->f->getNDupDictKChar(self, key) 8548 #define getNDupDictKCharG getNDupDictKCharO 8549 8550 #define getNDupArrayKCharO(self, key) (self)->f->getNDupArrayKChar(self, key) 8551 #define getNDupArrayKCharG getNDupArrayKCharO 8552 8553 #define getNDupSmallBoolKCharO(self, key) (self)->f->getNDupSmallBoolKChar(self, key) 8554 #define getNDupSmallBoolKCharG getNDupSmallBoolKCharO 8555 8556 #define getNDupSmallBytesKCharO(self, key) (self)->f->getNDupSmallBytesKChar(self, key) 8557 #define getNDupSmallBytesKCharG getNDupSmallBytesKCharO 8558 8559 #define getNDupSmallDoubleKCharO(self, key) (self)->f->getNDupSmallDoubleKChar(self, key) 8560 #define getNDupSmallDoubleKCharG getNDupSmallDoubleKCharO 8561 8562 #define getNDupSmallIntKCharO(self, key) (self)->f->getNDupSmallIntKChar(self, key) 8563 #define getNDupSmallIntKCharG getNDupSmallIntKCharO 8564 8565 #define getNDupSmallJsonKCharO(self, key) (self)->f->getNDupSmallJsonKChar(self, key) 8566 #define getNDupSmallJsonKCharG getNDupSmallJsonKCharO 8567 8568 #define getNDupSmallStringKCharO(self, key) (self)->f->getNDupSmallStringKChar(self, key) 8569 #define getNDupSmallStringKCharG getNDupSmallStringKCharO 8570 8571 #define getNDupVoidKCharO(self, key) (self)->f->getNDupVoidKChar(self, key) 8572 #define getNDupVoidKCharG getNDupVoidKCharO 8573 8574 #define getNDupSmallContainerKCharO(self, key) (self)->f->getNDupSmallContainerKChar(self, key) 8575 #define getNDupSmallContainerKCharG getNDupSmallContainerKCharO 8576 8577 #define delKCharO(self, key) (self)->f->delKChar(self, key) 8578 #define delKCharG delKCharO 8579 8580 #define removeKCharO(self, key) (self)->f->removeKChar(self, key) 8581 #define removeKCharG removeKCharO 8582 8583 #define hasKCharO(self, key) (self)->f->hasKChar(self, key) 8584 #define hasKCharG hasKCharO 8585 8586 #define keyByUndefinedO(self, u) (self)->f->keyByUndefined(self, u) 8587 #define keyByUndefinedG keyByUndefinedO 8588 8589 #define keyByBoolO(self, value) (self)->f->keyByBool(self, value) 8590 #define keyByBoolG keyByBoolO 8591 8592 #define keyByDoubleO(self, value) (self)->f->keyByDouble(self, value) 8593 #define keyByDoubleG keyByDoubleO 8594 8595 #define keyByIntO(self, value) (self)->f->keyByInt(self, value) 8596 #define keyByIntG keyByIntO 8597 8598 #define keyBySO(self, string) (self)->f->keyByS(self, string) 8599 #define keyBySG keyBySO 8600 8601 #define keyByCharO(self, c) (self)->f->keyByChar(self, c) 8602 #define keyByCharG keyByCharO 8603 8604 #define keyByDictO(self, dict) (self)->f->keyByDict(self, dict) 8605 #define keyByDictG keyByDictO 8606 8607 #define keyByArrayO(self, array) (self)->f->keyByArray(self, array) 8608 #define keyByArrayG keyByArrayO 8609 8610 #define keyByArraycO(self, array) (self)->f->keyByArrayc(self, array) 8611 #define keyByArraycG keyByArraycO 8612 8613 #define keyByCArraycO(self, array) (self)->f->keyByCArrayc(self, array) 8614 #define keyByCArraycG keyByCArraycO 8615 8616 #define keyBySmallBoolO(self, value) (self)->f->keyBySmallBool(self, value) 8617 #define keyBySmallBoolG keyBySmallBoolO 8618 8619 #define keyBySmallBytesO(self, value) (self)->f->keyBySmallBytes(self, value) 8620 #define keyBySmallBytesG keyBySmallBytesO 8621 8622 #define keyBySmallDoubleO(self, value) (self)->f->keyBySmallDouble(self, value) 8623 #define keyBySmallDoubleG keyBySmallDoubleO 8624 8625 #define keyBySmallIntO(self, value) (self)->f->keyBySmallInt(self, value) 8626 #define keyBySmallIntG keyBySmallIntO 8627 8628 #define keyBySmallStringO(self, string) (self)->f->keyBySmallString(self, string) 8629 #define keyBySmallStringG keyBySmallStringO 8630 8631 #define keyBySmallContainerO(self, container) (self)->f->keyBySmallContainer(self, container) 8632 #define keyBySmallContainerG keyBySmallContainerO 8633 8634 #define icKeyBySO(self, string) (self)->f->icKeyByS(self, string) 8635 #define icKeyBySG icKeyBySO 8636 8637 #define icKeyByCharO(self, c) (self)->f->icKeyByChar(self, c) 8638 #define icKeyByCharG icKeyByCharO 8639 8640 #define icKeyByDictO(self, dict) (self)->f->icKeyByDict(self, dict) 8641 #define icKeyByDictG icKeyByDictO 8642 8643 #define icKeyByArrayO(self, array) (self)->f->icKeyByArray(self, array) 8644 #define icKeyByArrayG icKeyByArrayO 8645 8646 #define icKeyByArraycO(self, array) (self)->f->icKeyByArrayc(self, array) 8647 #define icKeyByArraycG icKeyByArraycO 8648 8649 #define icKeyByCArraycO(self, array) (self)->f->icKeyByCArrayc(self, array) 8650 #define icKeyByCArraycG icKeyByCArraycO 8651 8652 #define icKeyBySmallStringO(self, string) (self)->f->icKeyBySmallString(self, string) 8653 #define icKeyBySmallStringG icKeyBySmallStringO 8654 8655 #define keysO(self) (self)->f->keys(self) 8656 #define keysG keysO 8657 8658 #define keysSmallStringO(self) (self)->f->keysSmallString(self) 8659 #define keysSmallStringG keysSmallStringO 8660 8661 #define valuesO(self) (self)->f->values(self) 8662 #define valuesG valuesO 8663 8664 #define icEqualBaseO(self, p2) (self)->f->icEqualBase(self, p2) 8665 #define icEqualBaseG icEqualBaseO 8666 8667 #define iterStartKeyO(self) (self)->f->iterStartKey(self) 8668 #define iterStartKeyG iterStartKeyO 8669 8670 #define iterNextKeyO(self) (self)->f->iterNextKey(self) 8671 #define iterNextKeyG iterNextKeyO 8672 8673 #define iterKeyO(self) (self)->f->iterKey(self) 8674 #define iterKeyG iterKeyO 8675 8676 #define zipSmallJsonVArrayO(self, keys, values) (self)->f->zipSmallJsonVArray(self, keys, values) 8677 #define zipSmallJsonVArrayG zipSmallJsonVArrayO 8678 8679 #define zipSmallJsonVCArrayO(self, keys, values) (self)->f->zipSmallJsonVCArray(self, keys, values) 8680 #define zipSmallJsonVCArrayG zipSmallJsonVCArrayO 8681 8682 #define zipArrayArrayO(self, keys, values) (self)->f->zipArrayArray(self, keys, values) 8683 #define zipArrayArrayG zipArrayArrayO 8684 8685 #define zipCArrayArrayO(self, keys, values) (self)->f->zipCArrayArray(self, keys, values) 8686 #define zipCArrayArrayG zipCArrayArrayO 8687 8688 #define zipArrayCArrayO(self, keys, values) (self)->f->zipArrayCArray(self, keys, values) 8689 #define zipArrayCArrayG zipArrayCArrayO 8690 8691 #define zipCArrayCArrayO(self, keys, values) (self)->f->zipCArrayCArray(self, keys, values) 8692 #define zipCArrayCArrayG zipCArrayCArrayO 8693 8694 #define zipVArrayO(self, keys, values) (self)->f->zipVArray(self, keys, values) 8695 #define zipVArrayG zipVArrayO 8696 8697 #define zipVCArrayO(self, keys, values) (self)->f->zipVCArray(self, keys, values) 8698 #define zipVCArrayG zipVCArrayO 8699 8700 #define toArrayO(self) (self)->f->toArray(self) 8701 #define toArrayG toArrayO 8702 8703 #define typeStringKCharO(self, key) (self)->f->typeStringKChar(self, key) 8704 #define typeStringKCharG typeStringKCharO 8705 8706 #define typeSmallStringKCharO(self, key) (self)->f->typeSmallStringKChar(self, key) 8707 #define typeSmallStringKCharG typeSmallStringKCharO 8708 8709 #define typeKCharO(self, key) (self)->f->typeKChar(self, key) 8710 #define typeKCharG typeKCharO 8711 8712 #define equalChaO(self, p2) (self)->f->equalCha(self, p2) 8713 #define equalChaG equalChaO 8714 8715 #define getTopTypeO(self) (self)->f->getTopType(self) 8716 #define getTopTypeG getTopTypeO 8717 8718 #define setTypeUndefinedO(self) (self)->f->setTypeUndefined(self) 8719 #define setTypeUndefinedG setTypeUndefinedO 8720 8721 #define setTypeBoolO(self) (self)->f->setTypeBool(self) 8722 #define setTypeBoolG setTypeBoolO 8723 8724 #define setTypeDoubleO(self) (self)->f->setTypeDouble(self) 8725 #define setTypeDoubleG setTypeDoubleO 8726 8727 #define setTypeIntO(self) (self)->f->setTypeInt(self) 8728 #define setTypeIntG setTypeIntO 8729 8730 #define setTypeStringO(self) (self)->f->setTypeString(self) 8731 #define setTypeStringG setTypeStringO 8732 8733 #define setTypeDictO(self) (self)->f->setTypeDict(self) 8734 #define setTypeDictG setTypeDictO 8735 8736 #define setTypeArrayO(self) (self)->f->setTypeArray(self) 8737 #define setTypeArrayG setTypeArrayO 8738 8739 #define setTopBoolO(self, value) (self)->f->setTopBool(self, value) 8740 #define setTopBoolG setTopBoolO 8741 8742 #define setTopDoubleO(self, value) (self)->f->setTopDouble(self, value) 8743 #define setTopDoubleG setTopDoubleO 8744 8745 #define setTopIntO(self, value) (self)->f->setTopInt(self, value) 8746 #define setTopIntG setTopIntO 8747 8748 #define setTopStringO(self, value) (self)->f->setTopString(self, value) 8749 #define setTopStringG setTopStringO 8750 8751 #define setTopCharO(self, c) (self)->f->setTopChar(self, c) 8752 #define setTopCharG setTopCharO 8753 8754 #define setTopDictO(self, value) (self)->f->setTopDict(self, value) 8755 #define setTopDictG setTopDictO 8756 8757 #define setTopArrayO(self, value) (self)->f->setTopArray(self, value) 8758 #define setTopArrayG setTopArrayO 8759 8760 #define setTopArraycO(self, value) (self)->f->setTopArrayc(self, value) 8761 #define setTopArraycG setTopArraycO 8762 8763 #define setTopCArraycO(self, value) (self)->f->setTopCArrayc(self, value) 8764 #define setTopCArraycG setTopCArraycO 8765 8766 #define setTopSmallBoolO(self, value) (self)->f->setTopSmallBool(self, value) 8767 #define setTopSmallBoolG setTopSmallBoolO 8768 8769 #define setTopSmallDoubleO(self, value) (self)->f->setTopSmallDouble(self, value) 8770 #define setTopSmallDoubleG setTopSmallDoubleO 8771 8772 #define setTopSmallIntO(self, value) (self)->f->setTopSmallInt(self, value) 8773 #define setTopSmallIntG setTopSmallIntO 8774 8775 #define setTopSmallStringO(self, value) (self)->f->setTopSmallString(self, value) 8776 #define setTopSmallStringG setTopSmallStringO 8777 8778 #define setTopNFreeBoolO(self, value) (self)->f->setTopNFreeBool(self, value) 8779 #define setTopNFreeBoolG setTopNFreeBoolO 8780 8781 #define setTopNFreeDoubleO(self, value) (self)->f->setTopNFreeDouble(self, value) 8782 #define setTopNFreeDoubleG setTopNFreeDoubleO 8783 8784 #define setTopNFreeIntO(self, value) (self)->f->setTopNFreeInt(self, value) 8785 #define setTopNFreeIntG setTopNFreeIntO 8786 8787 #define setTopNFreeStringO(self, value) (self)->f->setTopNFreeString(self, value) 8788 #define setTopNFreeStringG setTopNFreeStringO 8789 8790 #define setTopNFreeDictO(self, value) (self)->f->setTopNFreeDict(self, value) 8791 #define setTopNFreeDictG setTopNFreeDictO 8792 8793 #define setTopNFreeArrayO(self, value) (self)->f->setTopNFreeArray(self, value) 8794 #define setTopNFreeArrayG setTopNFreeArrayO 8795 8796 #define setTopNFreeArraycO(self, value) (self)->f->setTopNFreeArrayc(self, value) 8797 #define setTopNFreeArraycG setTopNFreeArraycO 8798 8799 #define setTopNFreeSmallBoolO(self, value) (self)->f->setTopNFreeSmallBool(self, value) 8800 #define setTopNFreeSmallBoolG setTopNFreeSmallBoolO 8801 8802 #define setTopNFreeSmallDoubleO(self, value) (self)->f->setTopNFreeSmallDouble(self, value) 8803 #define setTopNFreeSmallDoubleG setTopNFreeSmallDoubleO 8804 8805 #define setTopNFreeSmallIntO(self, value) (self)->f->setTopNFreeSmallInt(self, value) 8806 #define setTopNFreeSmallIntG setTopNFreeSmallIntO 8807 8808 #define setTopNFreeSmallStringO(self, value) (self)->f->setTopNFreeSmallString(self, value) 8809 #define setTopNFreeSmallStringG setTopNFreeSmallStringO 8810 8811 #define fromArrayDictO(self, items) (self)->f->fromArrayDict(self, items) 8812 #define fromArrayDictG fromArrayDictO 8813 8814 #define toArrayDictO(self) (self)->f->toArrayDict(self) 8815 #define toArrayDictG toArrayDictO 8816 8817 #define getTopUndefinedO(self) (self)->f->getTopUndefined(self) 8818 #define getTopUndefinedG getTopUndefinedO 8819 8820 #define getTopBoolO(self) (self)->f->getTopBool(self) 8821 #define getTopBoolG getTopBoolO 8822 8823 #define getTopBoolPO(self) (self)->f->getTopBoolP(self) 8824 #define getTopBoolPG getTopBoolPO 8825 8826 #define getTopDoubleO(self) (self)->f->getTopDouble(self) 8827 #define getTopDoubleG getTopDoubleO 8828 8829 #define getTopDoublePO(self) (self)->f->getTopDoubleP(self) 8830 #define getTopDoublePG getTopDoublePO 8831 8832 #define getTopIntO(self) (self)->f->getTopInt(self) 8833 #define getTopIntG getTopIntO 8834 8835 #define getTopIntPO(self) (self)->f->getTopIntP(self) 8836 #define getTopIntPG getTopIntPO 8837 8838 #define getTopInt32O(self) (self)->f->getTopInt32(self) 8839 #define getTopInt32G getTopInt32O 8840 8841 #define getTopInt32PO(self) (self)->f->getTopInt32P(self) 8842 #define getTopInt32PG getTopInt32PO 8843 8844 #define getTopUintO(self) (self)->f->getTopUint(self) 8845 #define getTopUintG getTopUintO 8846 8847 #define getTopUintPO(self) (self)->f->getTopUintP(self) 8848 #define getTopUintPG getTopUintPO 8849 8850 #define getTopUint32O(self) (self)->f->getTopUint32(self) 8851 #define getTopUint32G getTopUint32O 8852 8853 #define getTopUint32PO(self) (self)->f->getTopUint32P(self) 8854 #define getTopUint32PG getTopUint32PO 8855 8856 #define getTopSO(self) (self)->f->getTopS(self) 8857 #define getTopSG getTopSO 8858 8859 #define getTopDictO(self) (self)->f->getTopDict(self) 8860 #define getTopDictG getTopDictO 8861 8862 #define getTopArrayO(self) (self)->f->getTopArray(self) 8863 #define getTopArrayG getTopArrayO 8864 8865 #define getTopSmallBoolO(self) (self)->f->getTopSmallBool(self) 8866 #define getTopSmallBoolG getTopSmallBoolO 8867 8868 #define getTopSmallDoubleO(self) (self)->f->getTopSmallDouble(self) 8869 #define getTopSmallDoubleG getTopSmallDoubleO 8870 8871 #define getTopSmallIntO(self) (self)->f->getTopSmallInt(self) 8872 #define getTopSmallIntG getTopSmallIntO 8873 8874 #define getTopSmallStringO(self) (self)->f->getTopSmallString(self) 8875 #define getTopSmallStringG getTopSmallStringO 8876 8877 #define keyIsO(self, key) (self)->f->keyIs(self, key) 8878 #define keyIsG keyIsO 8879 8880 #define keyIsSO(self, key) (self)->f->keyIsS(self, key) 8881 #define keyIsSG keyIsSO 8882 8883 #define makeKeyO(self, key) (self)->f->makeKey(self, key) 8884 #define makeKeyG makeKeyO 8885 8886 #define iMakeKeyO(self, key) (self)->f->iMakeKey(self, key) 8887 #define iMakeKeyG iMakeKeyO 8888 8889 #define bMakeKeyO(self, dest, key) (self)->f->bMakeKey(self, dest, key) 8890 #define bMakeKeyG bMakeKeyO 8891 8892 #define bLMakeKeyO(self, dest, size, key) (self)->f->bLMakeKey(self, dest, size, key) 8893 #define bLMakeKeyG bLMakeKeyO 8894 8895 #define makeKeyLenO(self, key) (self)->f->makeKeyLen(self, key) 8896 #define makeKeyLenG makeKeyLenO 8897 8898 #define mergeDictO(self, smallDict) (self)->f->mergeDict(self, smallDict) 8899 #define mergeDictG mergeDictO 8900 8901 #define mergeDictNSmashO(self, smallDict) (self)->f->mergeDictNSmash(self, smallDict) 8902 #define mergeDictNSmashG mergeDictNSmashO 8903 8904 #define addJsonO(self, array) (self)->f->addJson(self, array) 8905 #define addJsonG addJsonO 8906 8907 #define cropSO(self, start, end) (self)->f->cropS(self, start, end) 8908 #define cropSG cropSO 8909 8910 #define cropElemAtO(self, index) (self)->f->cropElemAt(self, index) 8911 #define cropElemAtG cropElemAtO 8912 8913 #define cropElemAtUndefinedO(self, index) (self)->f->cropElemAtUndefined(self, index) 8914 #define cropElemAtUndefinedG cropElemAtUndefinedO 8915 8916 #define cropElemAtBoolO(self, index) (self)->f->cropElemAtBool(self, index) 8917 #define cropElemAtBoolG cropElemAtBoolO 8918 8919 #define cropElemAtDoubleO(self, index) (self)->f->cropElemAtDouble(self, index) 8920 #define cropElemAtDoubleG cropElemAtDoubleO 8921 8922 #define cropElemAtIntO(self, index) (self)->f->cropElemAtInt(self, index) 8923 #define cropElemAtIntG cropElemAtIntO 8924 8925 #define cropElemAtInt32O(self, index) (self)->f->cropElemAtInt32(self, index) 8926 #define cropElemAtInt32G cropElemAtInt32O 8927 8928 #define cropElemAtUintO(self, index) (self)->f->cropElemAtUint(self, index) 8929 #define cropElemAtUintG cropElemAtUintO 8930 8931 #define cropElemAtUint32O(self, index) (self)->f->cropElemAtUint32(self, index) 8932 #define cropElemAtUint32G cropElemAtUint32O 8933 8934 #define cropElemAtSO(self, index) (self)->f->cropElemAtS(self, index) 8935 #define cropElemAtSG cropElemAtSO 8936 8937 #define cropElemAtCharO(self, index) (self)->f->cropElemAtChar(self, index) 8938 #define cropElemAtCharG cropElemAtCharO 8939 8940 #define cropElemAtDictO(self, index) (self)->f->cropElemAtDict(self, index) 8941 #define cropElemAtDictG cropElemAtDictO 8942 8943 #define cropElemAtArrayO(self, index) (self)->f->cropElemAtArray(self, index) 8944 #define cropElemAtArrayG cropElemAtArrayO 8945 8946 #define cropElemAtSmallBoolO(self, index) (self)->f->cropElemAtSmallBool(self, index) 8947 #define cropElemAtSmallBoolG cropElemAtSmallBoolO 8948 8949 #define cropElemAtSmallBytesO(self, index) (self)->f->cropElemAtSmallBytes(self, index) 8950 #define cropElemAtSmallBytesG cropElemAtSmallBytesO 8951 8952 #define cropElemAtSmallDoubleO(self, index) (self)->f->cropElemAtSmallDouble(self, index) 8953 #define cropElemAtSmallDoubleG cropElemAtSmallDoubleO 8954 8955 #define cropElemAtSmallIntO(self, index) (self)->f->cropElemAtSmallInt(self, index) 8956 #define cropElemAtSmallIntG cropElemAtSmallIntO 8957 8958 #define cropElemAtSmallStringO(self, index) (self)->f->cropElemAtSmallString(self, index) 8959 #define cropElemAtSmallStringG cropElemAtSmallStringO 8960 8961 #define cropElemAtVoidO(self, index) (self)->f->cropElemAtVoid(self, index) 8962 #define cropElemAtVoidG cropElemAtVoidO 8963 8964 #define cropElemAtSmallContainerO(self, index) (self)->f->cropElemAtSmallContainer(self, index) 8965 #define cropElemAtSmallContainerG cropElemAtSmallContainerO 8966 8967 #define cropElemKeyO(self, key) (self)->f->cropElemKey(self, key) 8968 #define cropElemKeyG cropElemKeyO 8969 8970 #define cropElemKeyUndefinedO(self, key) (self)->f->cropElemKeyUndefined(self, key) 8971 #define cropElemKeyUndefinedG cropElemKeyUndefinedO 8972 8973 #define cropElemKeyBoolO(self, key) (self)->f->cropElemKeyBool(self, key) 8974 #define cropElemKeyBoolG cropElemKeyBoolO 8975 8976 #define cropElemKeyDoubleO(self, key) (self)->f->cropElemKeyDouble(self, key) 8977 #define cropElemKeyDoubleG cropElemKeyDoubleO 8978 8979 #define cropElemKeyIntO(self, key) (self)->f->cropElemKeyInt(self, key) 8980 #define cropElemKeyIntG cropElemKeyIntO 8981 8982 #define cropElemKeyInt32O(self, key) (self)->f->cropElemKeyInt32(self, key) 8983 #define cropElemKeyInt32G cropElemKeyInt32O 8984 8985 #define cropElemKeyUintO(self, key) (self)->f->cropElemKeyUint(self, key) 8986 #define cropElemKeyUintG cropElemKeyUintO 8987 8988 #define cropElemKeyUint32O(self, key) (self)->f->cropElemKeyUint32(self, key) 8989 #define cropElemKeyUint32G cropElemKeyUint32O 8990 8991 #define cropElemKeySO(self, key) (self)->f->cropElemKeyS(self, key) 8992 #define cropElemKeySG cropElemKeySO 8993 8994 #define cropElemKeyDictO(self, key) (self)->f->cropElemKeyDict(self, key) 8995 #define cropElemKeyDictG cropElemKeyDictO 8996 8997 #define cropElemKeyArrayO(self, key) (self)->f->cropElemKeyArray(self, key) 8998 #define cropElemKeyArrayG cropElemKeyArrayO 8999 9000 #define cropElemKeySmallBoolO(self, key) (self)->f->cropElemKeySmallBool(self, key) 9001 #define cropElemKeySmallBoolG cropElemKeySmallBoolO 9002 9003 #define cropElemKeySmallBytesO(self, key) (self)->f->cropElemKeySmallBytes(self, key) 9004 #define cropElemKeySmallBytesG cropElemKeySmallBytesO 9005 9006 #define cropElemKeySmallDoubleO(self, key) (self)->f->cropElemKeySmallDouble(self, key) 9007 #define cropElemKeySmallDoubleG cropElemKeySmallDoubleO 9008 9009 #define cropElemKeySmallIntO(self, key) (self)->f->cropElemKeySmallInt(self, key) 9010 #define cropElemKeySmallIntG cropElemKeySmallIntO 9011 9012 #define cropElemKeySmallStringO(self, key) (self)->f->cropElemKeySmallString(self, key) 9013 #define cropElemKeySmallStringG cropElemKeySmallStringO 9014 9015 #define cropElemKeyVoidO(self, key) (self)->f->cropElemKeyVoid(self, key) 9016 #define cropElemKeyVoidG cropElemKeyVoidO 9017 9018 #define cropElemKeySmallContainerO(self, key) (self)->f->cropElemKeySmallContainer(self, key) 9019 #define cropElemKeySmallContainerG cropElemKeySmallContainerO 9020 9021 #define insertStringO(self, index, toInsert) (self)->f->insertString(self, index, toInsert) 9022 #define insertStringG insertStringO 9023 9024 #define insertSO(self, index, toInsert) (self)->f->insertS(self, index, toInsert) 9025 #define insertSG insertSO 9026 9027 #define insertNFreeStringO(self, index, toInsert) (self)->f->insertNFreeString(self, index, toInsert) 9028 #define insertNFreeStringG insertNFreeStringO 9029 9030 #define insertSNFreeO(self, index, toInsert) (self)->f->insertSNFree(self, index, toInsert) 9031 #define insertSNFreeG insertSNFreeO 9032 9033 #define uniqCharO(self, c) (self)->f->uniqChar(self, c) 9034 #define uniqCharG uniqCharO 9035 9036 #define icUniqCharO(self, c) (self)->f->icUniqChar(self, c) 9037 #define icUniqCharG icUniqCharO 9038 9039 #define findCharO(self, c) (self)->f->findChar(self, c) 9040 #define findCharG findCharO 9041 9042 #define findJsonO(self, needle) (self)->f->findJson(self, needle) 9043 #define findJsonG findJsonO 9044 9045 #define icFindCharO(self, c) (self)->f->icFindChar(self, c) 9046 #define icFindCharG icFindCharO 9047 9048 #define icFindJsonO(self, needle) (self)->f->icFindJson(self, needle) 9049 #define icFindJsonG icFindJsonO 9050 9051 #define replaceCharSO(self, olds, news, max) (self)->f->replaceCharS(self, olds, news, max) 9052 #define replaceCharSG replaceCharSO 9053 9054 #define replaceSCharO(self, olds, news, max) (self)->f->replaceSChar(self, olds, news, max) 9055 #define replaceSCharG replaceSCharO 9056 9057 #define replaceCharCharO(self, olds, news, max) (self)->f->replaceCharChar(self, olds, news, max) 9058 #define replaceCharCharG replaceCharCharO 9059 9060 #define replaceSmallStringSmallStringO(self, olds, news, max) (self)->f->replaceSmallStringSmallString(self, olds, news, max) 9061 #define replaceSmallStringSmallStringG replaceSmallStringSmallStringO 9062 9063 #define replaceSmallStringSO(self, olds, news, max) (self)->f->replaceSmallStringS(self, olds, news, max) 9064 #define replaceSmallStringSG replaceSmallStringSO 9065 9066 #define replaceSmallStringCharO(self, olds, news, max) (self)->f->replaceSmallStringChar(self, olds, news, max) 9067 #define replaceSmallStringCharG replaceSmallStringCharO 9068 9069 #define replaceSSmallStringO(self, olds, news, max) (self)->f->replaceSSmallString(self, olds, news, max) 9070 #define replaceSSmallStringG replaceSSmallStringO 9071 9072 #define replaceCharSmallStringO(self, olds, news, max) (self)->f->replaceCharSmallString(self, olds, news, max) 9073 #define replaceCharSmallStringG replaceCharSmallStringO 9074 9075 #define replaceJsonJsonO(self, olds, news, max) (self)->f->replaceJsonJson(self, olds, news, max) 9076 #define replaceJsonJsonG replaceJsonJsonO 9077 9078 #define replaceJsonSmallStringO(self, olds, news, max) (self)->f->replaceJsonSmallString(self, olds, news, max) 9079 #define replaceJsonSmallStringG replaceJsonSmallStringO 9080 9081 #define replaceJsonSO(self, olds, news, max) (self)->f->replaceJsonS(self, olds, news, max) 9082 #define replaceJsonSG replaceJsonSO 9083 9084 #define replaceJsonCharO(self, olds, news, max) (self)->f->replaceJsonChar(self, olds, news, max) 9085 #define replaceJsonCharG replaceJsonCharO 9086 9087 #define replaceSmallStringJsonO(self, olds, news, max) (self)->f->replaceSmallStringJson(self, olds, news, max) 9088 #define replaceSmallStringJsonG replaceSmallStringJsonO 9089 9090 #define replaceSJsonO(self, olds, news, max) (self)->f->replaceSJson(self, olds, news, max) 9091 #define replaceSJsonG replaceSJsonO 9092 9093 #define replaceCharJsonO(self, olds, news, max) (self)->f->replaceCharJson(self, olds, news, max) 9094 #define replaceCharJsonG replaceCharJsonO 9095 9096 #define icReplaceCharSO(self, olds, news, max) (self)->f->icReplaceCharS(self, olds, news, max) 9097 #define icReplaceCharSG icReplaceCharSO 9098 9099 #define icReplaceSCharO(self, olds, news, max) (self)->f->icReplaceSChar(self, olds, news, max) 9100 #define icReplaceSCharG icReplaceSCharO 9101 9102 #define icReplaceCharCharO(self, olds, news, max) (self)->f->icReplaceCharChar(self, olds, news, max) 9103 #define icReplaceCharCharG icReplaceCharCharO 9104 9105 #define icReplaceSmallStringSmallStringO(self, olds, news, max) (self)->f->icReplaceSmallStringSmallString(self, olds, news, max) 9106 #define icReplaceSmallStringSmallStringG icReplaceSmallStringSmallStringO 9107 9108 #define icReplaceSmallStringSO(self, olds, news, max) (self)->f->icReplaceSmallStringS(self, olds, news, max) 9109 #define icReplaceSmallStringSG icReplaceSmallStringSO 9110 9111 #define icReplaceSmallStringCharO(self, olds, news, max) (self)->f->icReplaceSmallStringChar(self, olds, news, max) 9112 #define icReplaceSmallStringCharG icReplaceSmallStringCharO 9113 9114 #define icReplaceSSmallStringO(self, olds, news, max) (self)->f->icReplaceSSmallString(self, olds, news, max) 9115 #define icReplaceSSmallStringG icReplaceSSmallStringO 9116 9117 #define icReplaceCharSmallStringO(self, olds, news, max) (self)->f->icReplaceCharSmallString(self, olds, news, max) 9118 #define icReplaceCharSmallStringG icReplaceCharSmallStringO 9119 9120 #define icReplaceJsonJsonO(self, olds, news, max) (self)->f->icReplaceJsonJson(self, olds, news, max) 9121 #define icReplaceJsonJsonG icReplaceJsonJsonO 9122 9123 #define icReplaceJsonSmallStringO(self, olds, news, max) (self)->f->icReplaceJsonSmallString(self, olds, news, max) 9124 #define icReplaceJsonSmallStringG icReplaceJsonSmallStringO 9125 9126 #define icReplaceJsonSO(self, olds, news, max) (self)->f->icReplaceJsonS(self, olds, news, max) 9127 #define icReplaceJsonSG icReplaceJsonSO 9128 9129 #define icReplaceJsonCharO(self, olds, news, max) (self)->f->icReplaceJsonChar(self, olds, news, max) 9130 #define icReplaceJsonCharG icReplaceJsonCharO 9131 9132 #define icReplaceSmallStringJsonO(self, olds, news, max) (self)->f->icReplaceSmallStringJson(self, olds, news, max) 9133 #define icReplaceSmallStringJsonG icReplaceSmallStringJsonO 9134 9135 #define icReplaceSJsonO(self, olds, news, max) (self)->f->icReplaceSJson(self, olds, news, max) 9136 #define icReplaceSJsonG icReplaceSJsonO 9137 9138 #define icReplaceCharJsonO(self, olds, news, max) (self)->f->icReplaceCharJson(self, olds, news, max) 9139 #define icReplaceCharJsonG icReplaceCharJsonO 9140 9141 #define icEqualSmallStringO(self, string) (self)->f->icEqualSmallString(self, string) 9142 #define icEqualSmallStringG icEqualSmallStringO 9143 9144 #define icEqualSO(self, string) (self)->f->icEqualS(self, string) 9145 #define icEqualSG icEqualSO 9146 9147 #define icEqualCharO(self, c) (self)->f->icEqualChar(self, c) 9148 #define icEqualCharG icEqualCharO 9149 9150 #define equalISO(self, string, index) (self)->f->equalIS(self, string, index) 9151 #define equalISG equalISO 9152 9153 #define equalICharO(self, c, index) (self)->f->equalIChar(self, c, index) 9154 #define equalICharG equalICharO 9155 9156 #define equalIJsonO(self, string, index) (self)->f->equalIJson(self, string, index) 9157 #define equalIJsonG equalIJsonO 9158 9159 #define equalISmallStringO(self, string, index) (self)->f->equalISmallString(self, string, index) 9160 #define equalISmallStringG equalISmallStringO 9161 9162 #define startsWithSO(self, string) (self)->f->startsWithS(self, string) 9163 #define startsWithSG startsWithSO 9164 9165 #define startsWithCharO(self, c) (self)->f->startsWithChar(self, c) 9166 #define startsWithCharG startsWithCharO 9167 9168 #define startsWithSmallStringO(self, string) (self)->f->startsWithSmallString(self, string) 9169 #define startsWithSmallStringG startsWithSmallStringO 9170 9171 #define startsWithJsonO(self, string) (self)->f->startsWithJson(self, string) 9172 #define startsWithJsonG startsWithJsonO 9173 9174 #define endsWithSO(self, string) (self)->f->endsWithS(self, string) 9175 #define endsWithSG endsWithSO 9176 9177 #define endsWithCharO(self, c) (self)->f->endsWithChar(self, c) 9178 #define endsWithCharG endsWithCharO 9179 9180 #define endsWithSmallStringO(self, string) (self)->f->endsWithSmallString(self, string) 9181 #define endsWithSmallStringG endsWithSmallStringO 9182 9183 #define endsWithJsonO(self, string) (self)->f->endsWithJson(self, string) 9184 #define endsWithJsonG endsWithJsonO 9185 9186 #define countSO(self, string) (self)->f->countS(self, string) 9187 #define countSG countSO 9188 9189 #define countCharO(self, c) (self)->f->countChar(self, c) 9190 #define countCharG countCharO 9191 9192 #define countSmallStringO(self, string) (self)->f->countSmallString(self, string) 9193 #define countSmallStringG countSmallStringO 9194 9195 #define countJsonO(self, string) (self)->f->countJson(self, string) 9196 #define countJsonG countJsonO 9197 9198 #define icStartsWithSO(self, string) (self)->f->icStartsWithS(self, string) 9199 #define icStartsWithSG icStartsWithSO 9200 9201 #define icStartsWithCharO(self, c) (self)->f->icStartsWithChar(self, c) 9202 #define icStartsWithCharG icStartsWithCharO 9203 9204 #define icStartsWithSmallStringO(self, string) (self)->f->icStartsWithSmallString(self, string) 9205 #define icStartsWithSmallStringG icStartsWithSmallStringO 9206 9207 #define icStartsWithJsonO(self, string) (self)->f->icStartsWithJson(self, string) 9208 #define icStartsWithJsonG icStartsWithJsonO 9209 9210 #define icEndsWithSO(self, string) (self)->f->icEndsWithS(self, string) 9211 #define icEndsWithSG icEndsWithSO 9212 9213 #define icEndsWithCharO(self, c) (self)->f->icEndsWithChar(self, c) 9214 #define icEndsWithCharG icEndsWithCharO 9215 9216 #define icEndsWithSmallStringO(self, string) (self)->f->icEndsWithSmallString(self, string) 9217 #define icEndsWithSmallStringG icEndsWithSmallStringO 9218 9219 #define icEndsWithJsonO(self, string) (self)->f->icEndsWithJson(self, string) 9220 #define icEndsWithJsonG icEndsWithJsonO 9221 9222 #define icCountSO(self, string) (self)->f->icCountS(self, string) 9223 #define icCountSG icCountSO 9224 9225 #define icCountCharO(self, c) (self)->f->icCountChar(self, c) 9226 #define icCountCharG icCountCharO 9227 9228 #define icCountSmallStringO(self, string) (self)->f->icCountSmallString(self, string) 9229 #define icCountSmallStringG icCountSmallStringO 9230 9231 #define icCountJsonO(self, string) (self)->f->icCountJson(self, string) 9232 #define icCountJsonG icCountJsonO 9233 9234 #define enumerateDictO(self, closure, funcElem) (self)->f->enumerateDict(self, closure, funcElem) 9235 #define enumerateDictG enumerateDictO 9236 9237 #define splitCharO(self, c) (self)->f->splitChar(self, c) 9238 #define splitCharG splitCharO 9239 9240 #define splitSO(self, delim) (self)->f->splitS(self, delim) 9241 #define splitSG splitSO 9242 9243 #define splitCharSO(self, c) (self)->f->splitCharS(self, c) 9244 #define splitCharSG splitCharSO 9245 9246 #define splitSmallStringSO(self, delim) (self)->f->splitSmallStringS(self, delim) 9247 #define splitSmallStringSG splitSmallStringSO 9248 9249 #define extractCharSO(self, delim1, delim2) (self)->f->extractCharS(self, delim1, delim2) 9250 #define extractCharSG extractCharSO 9251 9252 #define extractSCharO(self, delim1, delim2) (self)->f->extractSChar(self, delim1, delim2) 9253 #define extractSCharG extractSCharO 9254 9255 #define extractCharCharO(self, delim1, delim2) (self)->f->extractCharChar(self, delim1, delim2) 9256 #define extractCharCharG extractCharCharO 9257 9258 #define extractSmallJsonSmallJsonO(self, delim1, delim2) (self)->f->extractSmallJsonSmallJson(self, delim1, delim2) 9259 #define extractSmallJsonSmallJsonG extractSmallJsonSmallJsonO 9260 9261 #define extractSmallStringSmallJsonO(self, delim1, delim2) (self)->f->extractSmallStringSmallJson(self, delim1, delim2) 9262 #define extractSmallStringSmallJsonG extractSmallStringSmallJsonO 9263 9264 #define extractSSmallJsonO(self, delim1, delim2) (self)->f->extractSSmallJson(self, delim1, delim2) 9265 #define extractSSmallJsonG extractSSmallJsonO 9266 9267 #define extractCharSmallJsonO(self, delim1, delim2) (self)->f->extractCharSmallJson(self, delim1, delim2) 9268 #define extractCharSmallJsonG extractCharSmallJsonO 9269 9270 #define extractSmallStringSmallStringO(self, delim1, delim2) (self)->f->extractSmallStringSmallString(self, delim1, delim2) 9271 #define extractSmallStringSmallStringG extractSmallStringSmallStringO 9272 9273 #define extractSmallStringSO(self, delim1, delim2) (self)->f->extractSmallStringS(self, delim1, delim2) 9274 #define extractSmallStringSG extractSmallStringSO 9275 9276 #define extractSmallStringCharO(self, delim1, delim2) (self)->f->extractSmallStringChar(self, delim1, delim2) 9277 #define extractSmallStringCharG extractSmallStringCharO 9278 9279 #define extractSSmallStringO(self, delim1, delim2) (self)->f->extractSSmallString(self, delim1, delim2) 9280 #define extractSSmallStringG extractSSmallStringO 9281 9282 #define extractCharSmallStringO(self, delim1, delim2) (self)->f->extractCharSmallString(self, delim1, delim2) 9283 #define extractCharSmallStringG extractCharSmallStringO 9284 9285 #define icSplitCharO(self, c) (self)->f->icSplitChar(self, c) 9286 #define icSplitCharG icSplitCharO 9287 9288 #define icSplitSO(self, delim) (self)->f->icSplitS(self, delim) 9289 #define icSplitSG icSplitSO 9290 9291 #define icSplitCharSO(self, c) (self)->f->icSplitCharS(self, c) 9292 #define icSplitCharSG icSplitCharSO 9293 9294 #define icSplitSmallStringSO(self, delim) (self)->f->icSplitSmallStringS(self, delim) 9295 #define icSplitSmallStringSG icSplitSmallStringSO 9296 9297 #define icExtractCharSO(self, delim1, delim2) (self)->f->icExtractCharS(self, delim1, delim2) 9298 #define icExtractCharSG icExtractCharSO 9299 9300 #define icExtractSCharO(self, delim1, delim2) (self)->f->icExtractSChar(self, delim1, delim2) 9301 #define icExtractSCharG icExtractSCharO 9302 9303 #define icExtractCharCharO(self, delim1, delim2) (self)->f->icExtractCharChar(self, delim1, delim2) 9304 #define icExtractCharCharG icExtractCharCharO 9305 9306 #define icExtractSmallJsonSmallJsonO(self, delim1, delim2) (self)->f->icExtractSmallJsonSmallJson(self, delim1, delim2) 9307 #define icExtractSmallJsonSmallJsonG icExtractSmallJsonSmallJsonO 9308 9309 #define icExtractSmallStringSmallJsonO(self, delim1, delim2) (self)->f->icExtractSmallStringSmallJson(self, delim1, delim2) 9310 #define icExtractSmallStringSmallJsonG icExtractSmallStringSmallJsonO 9311 9312 #define icExtractSSmallJsonO(self, delim1, delim2) (self)->f->icExtractSSmallJson(self, delim1, delim2) 9313 #define icExtractSSmallJsonG icExtractSSmallJsonO 9314 9315 #define icExtractCharSmallJsonO(self, delim1, delim2) (self)->f->icExtractCharSmallJson(self, delim1, delim2) 9316 #define icExtractCharSmallJsonG icExtractCharSmallJsonO 9317 9318 #define icExtractSmallStringSmallStringO(self, delim1, delim2) (self)->f->icExtractSmallStringSmallString(self, delim1, delim2) 9319 #define icExtractSmallStringSmallStringG icExtractSmallStringSmallStringO 9320 9321 #define icExtractSmallStringSO(self, delim1, delim2) (self)->f->icExtractSmallStringS(self, delim1, delim2) 9322 #define icExtractSmallStringSG icExtractSmallStringSO 9323 9324 #define icExtractSmallStringCharO(self, delim1, delim2) (self)->f->icExtractSmallStringChar(self, delim1, delim2) 9325 #define icExtractSmallStringCharG icExtractSmallStringCharO 9326 9327 #define icExtractSSmallStringO(self, delim1, delim2) (self)->f->icExtractSSmallString(self, delim1, delim2) 9328 #define icExtractSSmallStringG icExtractSSmallStringO 9329 9330 #define icExtractCharSmallStringO(self, delim1, delim2) (self)->f->icExtractCharSmallString(self, delim1, delim2) 9331 #define icExtractCharSmallStringG icExtractCharSmallStringO 9332 9333 #define colorO(self, colr) (self)->f->color(self, colr) 9334 #define colorG colorO 9335 9336 #define colordO(self, color) (self)->f->colord(self, color) 9337 #define colordG colordO 9338 9339 #define getNumAtO(self, index) (self)->f->getNumAt(self, index) 9340 #define getNumAtG getNumAtO 9341 9342 #define delElemIndexO(self, index) (self)->f->delElemIndex(self, index) 9343 #define delElemIndexG delElemIndexO 9344 9345 #define removeElemIndexO(self, index) (self)->f->removeElemIndex(self, index) 9346 #define removeElemIndexG removeElemIndexO 9347 9348 #define stringifyO(self, indent) (self)->f->stringify(self, indent) 9349 #define stringifyG stringifyO 9350 9351 #define stringifySmallStringO(self, indent) (self)->f->stringifySmallString(self, indent) 9352 #define stringifySmallStringG stringifySmallStringO 9353 9354 #define toYMLO(self, indent) (self)->f->toYML(self, indent) 9355 #define toYMLG toYMLO 9356 9357 #define toYMLSmallStringO(self, indent) (self)->f->toYMLSmallString(self, indent) 9358 #define toYMLSmallStringG toYMLSmallStringO 9359 9360 #define parseSmallStringO(self, input) (self)->f->parseSmallString(self, input) 9361 #define parseSmallStringG parseSmallStringO 9362 9363 #define parseYMLSmallStringO(self, input) (self)->f->parseYMLSmallString(self, input) 9364 #define parseYMLSmallStringG parseYMLSmallStringO 9365 9366 #define serialO(self) (self)->f->serial(self) 9367 #define serialG serialO 9368 9369 #define deserialO(self, data) (self)->f->deserial(self, data) 9370 #define deserialG deserialO 9371 9372 #define readFileJsonO(self, filePath) (self)->f->readFileJson(self, filePath) 9373 #define readFileJsonG readFileJsonO 9374 9375 #define writeFileJsonO(self, filePath) (self)->f->writeFileJson(self, filePath) 9376 #define writeFileJsonG writeFileJsonO 9377 9378 #define appendFileJsonO(self, filePath) (self)->f->appendFileJson(self, filePath) 9379 #define appendFileJsonG appendFileJsonO 9380 9381 #define readTextJsonO(self, filePath) (self)->f->readTextJson(self, filePath) 9382 #define readTextJsonG readTextJsonO 9383 9384 #define writeTextJsonO(self, filePath) (self)->f->writeTextJson(self, filePath) 9385 #define writeTextJsonG writeTextJsonO 9386 9387 #define appendTextJsonO(self, filePath) (self)->f->appendTextJson(self, filePath) 9388 #define appendTextJsonG appendTextJsonO 9389 9390 #define typeAtStringO(self, index) (self)->f->typeAtString(self, index) 9391 #define typeAtStringG typeAtStringO 9392 9393 #define typeAtSmallStringO(self, index) (self)->f->typeAtSmallString(self, index) 9394 #define typeAtSmallStringG typeAtSmallStringO 9395 9396 #define typeAtO(self, index) (self)->f->typeAt(self, index) 9397 #define typeAtG typeAtO 9398 9399 #define isETypeAtO(self, index, type) (self)->f->isETypeAt(self, index, type) 9400 #define isETypeAtG isETypeAtO 9401 9402 #define isEUndefinedAtO(self, index) (self)->f->isEUndefinedAt(self, index) 9403 #define isEUndefinedAtG isEUndefinedAtO 9404 9405 #define isEBoolAtO(self, index) (self)->f->isEBoolAt(self, index) 9406 #define isEBoolAtG isEBoolAtO 9407 9408 #define isEContainerAtO(self, index) (self)->f->isEContainerAt(self, index) 9409 #define isEContainerAtG isEContainerAtO 9410 9411 #define isEDictAtO(self, index) (self)->f->isEDictAt(self, index) 9412 #define isEDictAtG isEDictAtO 9413 9414 #define isEDoubleAtO(self, index) (self)->f->isEDoubleAt(self, index) 9415 #define isEDoubleAtG isEDoubleAtO 9416 9417 #define isEIntAtO(self, index) (self)->f->isEIntAt(self, index) 9418 #define isEIntAtG isEIntAtO 9419 9420 #define isEStringAtO(self, index) (self)->f->isEStringAt(self, index) 9421 #define isEStringAtG isEStringAtO 9422 9423 #define isEFaststringAtO(self, index) (self)->f->isEFaststringAt(self, index) 9424 #define isEFaststringAtG isEFaststringAtO 9425 9426 #define isEArrayAtO(self, index) (self)->f->isEArrayAt(self, index) 9427 #define isEArrayAtG isEArrayAtO 9428 9429 #define isEBytesAtO(self, index) (self)->f->isEBytesAt(self, index) 9430 #define isEBytesAtG isEBytesAtO 9431 9432 #define setSmallArrayO(self, p2) (self)->f->setSmallArray(self, p2) 9433 #define setSmallArrayG setSmallArrayO 9434 9435 #define setFromSmallDictO(self, p2) (self)->f->setFromSmallDict(self, p2) 9436 #define setFromSmallDictG setFromSmallDictO 9437 9438 #define setFromSmallJsonO(self, p2) (self)->f->setFromSmallJson(self, p2) 9439 #define setFromSmallJsonG setFromSmallJsonO 9440 9441 #define appendCharO(self, c) (self)->f->appendChar(self, c) 9442 #define appendCharG appendCharO 9443 9444 #define appendNSmashSO(self, string) (self)->f->appendNSmashS(self, string) 9445 #define appendNSmashSG appendNSmashSO 9446 9447 #define prependNSmashSmallJsonO(self, json) (self)->f->prependNSmashSmallJson(self, json) 9448 #define prependNSmashSmallJsonG prependNSmashSmallJsonO 9449 9450 #define prependNSmashSO(self, string) (self)->f->prependNSmashS(self, string) 9451 #define prependNSmashSG prependNSmashSO 9452 9453 #define replaceSmallJsonSmallJsonO(self, olds, news, max) (self)->f->replaceSmallJsonSmallJson(self, olds, news, max) 9454 #define replaceSmallJsonSmallJsonG replaceSmallJsonSmallJsonO 9455 9456 #define replaceSmallJsonSmallStringO(self, olds, news, max) (self)->f->replaceSmallJsonSmallString(self, olds, news, max) 9457 #define replaceSmallJsonSmallStringG replaceSmallJsonSmallStringO 9458 9459 #define replaceSmallJsonSO(self, olds, news, max) (self)->f->replaceSmallJsonS(self, olds, news, max) 9460 #define replaceSmallJsonSG replaceSmallJsonSO 9461 9462 #define replaceSmallJsonCharO(self, olds, news, max) (self)->f->replaceSmallJsonChar(self, olds, news, max) 9463 #define replaceSmallJsonCharG replaceSmallJsonCharO 9464 9465 #define replaceSSmallJsonO(self, olds, news, max) (self)->f->replaceSSmallJson(self, olds, news, max) 9466 #define replaceSSmallJsonG replaceSSmallJsonO 9467 9468 #define replaceCharSmallJsonO(self, olds, news, max) (self)->f->replaceCharSmallJson(self, olds, news, max) 9469 #define replaceCharSmallJsonG replaceCharSmallJsonO 9470 9471 #define icReplaceSmallJsonSmallJsonO(self, olds, news, max) (self)->f->icReplaceSmallJsonSmallJson(self, olds, news, max) 9472 #define icReplaceSmallJsonSmallJsonG icReplaceSmallJsonSmallJsonO 9473 9474 #define icReplaceSmallJsonSmallStringO(self, olds, news, max) (self)->f->icReplaceSmallJsonSmallString(self, olds, news, max) 9475 #define icReplaceSmallJsonSmallStringG icReplaceSmallJsonSmallStringO 9476 9477 #define icReplaceSmallJsonSO(self, olds, news, max) (self)->f->icReplaceSmallJsonS(self, olds, news, max) 9478 #define icReplaceSmallJsonSG icReplaceSmallJsonSO 9479 9480 #define icReplaceSmallJsonCharO(self, olds, news, max) (self)->f->icReplaceSmallJsonChar(self, olds, news, max) 9481 #define icReplaceSmallJsonCharG icReplaceSmallJsonCharO 9482 9483 #define icReplaceSSmallJsonO(self, olds, news, max) (self)->f->icReplaceSSmallJson(self, olds, news, max) 9484 #define icReplaceSSmallJsonG icReplaceSSmallJsonO 9485 9486 #define icReplaceCharSmallJsonO(self, olds, news, max) (self)->f->icReplaceCharSmallJson(self, olds, news, max) 9487 #define icReplaceCharSmallJsonG icReplaceCharSmallJsonO 9488 9489 #define equalSO(self, string) (self)->f->equalS(self, string) 9490 #define equalSG equalSO 9491 9492 #define equalISmallJsonO(self, string, index) (self)->f->equalISmallJson(self, string, index) 9493 #define equalISmallJsonG equalISmallJsonO 9494 9495 #define startsWithSmallJsonO(self, string) (self)->f->startsWithSmallJson(self, string) 9496 #define startsWithSmallJsonG startsWithSmallJsonO 9497 9498 #define endsWithSmallJsonO(self, string) (self)->f->endsWithSmallJson(self, string) 9499 #define endsWithSmallJsonG endsWithSmallJsonO 9500 9501 #define countSmallJsonO(self, string) (self)->f->countSmallJson(self, string) 9502 #define countSmallJsonG countSmallJsonO 9503 9504 #define icStartsWithSmallJsonO(self, string) (self)->f->icStartsWithSmallJson(self, string) 9505 #define icStartsWithSmallJsonG icStartsWithSmallJsonO 9506 9507 #define icEndsWithSmallJsonO(self, string) (self)->f->icEndsWithSmallJson(self, string) 9508 #define icEndsWithSmallJsonG icEndsWithSmallJsonO 9509 9510 #define icCountSmallJsonO(self, string) (self)->f->icCountSmallJson(self, string) 9511 #define icCountSmallJsonG icCountSmallJsonO 9512 9513 #define splitSmallJsonSO(self, delim) (self)->f->splitSmallJsonS(self, delim) 9514 #define splitSmallJsonSG splitSmallJsonSO 9515 9516 #define splitSSmallStringO(self, delim) (self)->f->splitSSmallString(self, delim) 9517 #define splitSSmallStringG splitSSmallStringO 9518 9519 #define extractSmallJsonSmallStringO(self, delim1, delim2) (self)->f->extractSmallJsonSmallString(self, delim1, delim2) 9520 #define extractSmallJsonSmallStringG extractSmallJsonSmallStringO 9521 9522 #define extractSmallJsonSO(self, delim1, delim2) (self)->f->extractSmallJsonS(self, delim1, delim2) 9523 #define extractSmallJsonSG extractSmallJsonSO 9524 9525 #define extractSmallJsonCharO(self, delim1, delim2) (self)->f->extractSmallJsonChar(self, delim1, delim2) 9526 #define extractSmallJsonCharG extractSmallJsonCharO 9527 9528 #define icSplitSmallJsonSO(self, delim) (self)->f->icSplitSmallJsonS(self, delim) 9529 #define icSplitSmallJsonSG icSplitSmallJsonSO 9530 9531 #define icSplitSSmallStringO(self, delim) (self)->f->icSplitSSmallString(self, delim) 9532 #define icSplitSSmallStringG icSplitSSmallStringO 9533 9534 #define icExtractSmallJsonSmallStringO(self, delim1, delim2) (self)->f->icExtractSmallJsonSmallString(self, delim1, delim2) 9535 #define icExtractSmallJsonSmallStringG icExtractSmallJsonSmallStringO 9536 9537 #define icExtractSmallJsonSO(self, delim1, delim2) (self)->f->icExtractSmallJsonS(self, delim1, delim2) 9538 #define icExtractSmallJsonSG icExtractSmallJsonSO 9539 9540 #define icExtractSmallJsonCharO(self, delim1, delim2) (self)->f->icExtractSmallJsonChar(self, delim1, delim2) 9541 #define icExtractSmallJsonCharG icExtractSmallJsonCharO 9542 9543 // generated with utils/oGMacros END 9544 9545 9546 // Class base 9547 9548 /** 9549 * base class 9550 */ 9551 typedef struct base baset; 9552 9553 // for object inheriting baset, cast to baset to be able to use this class functions and generics 9554 #define cBa(self) ( (baset*) self ) 9555 9556 // Functions 9557 9558 /** 9559 * free buffers in obj 9560 */ 9561 typedef void (*freeBaseFt)(baset *self); 9562 9563 /** 9564 * free buffers and obj itself 9565 */ 9566 typedef void (*terminateBaseFt)(baset **self); 9567 9568 /** 9569 * convert data in obj to string 9570 */ 9571 typedef char* (*toStringBaseFt)(baset *self); 9572 9573 /** 9574 * create a copy of obj 9575 */ 9576 typedef baset* (*duplicateBaseFt)(baset *self); 9577 9578 /** 9579 * free obj itself and keep buffers inside 9580 */ 9581 typedef void (*smashBaseFt)(baset **self); 9582 9583 /** 9584 * free only baset container and keep the sObject inside 9585 */ 9586 typedef void (*finishBaseFt)(baset **self); 9587 9588 /** 9589 * base class functions 9590 */ 9591 typedef struct { 9592 freeBaseFt free; 9593 terminateBaseFt terminate; 9594 toStringBaseFt toString; 9595 duplicateBaseFt duplicate; 9596 smashBaseFt smash; 9597 finishBaseFt finish; 9598 } baseFunctionst; 9599 9600 /** 9601 * base class 9602 */ 9603 struct base { 9604 const char *type; 9605 baseFunctionst *f; 9606 }; 9607 9608 // terminate baset val when it is out of scope 9609 void cleanUpBaseTerminateG(baset **val); 9610 9611 // free baset val when it is out of scope 9612 void cleanUpBaseFreeG(baset **val); 9613 9614 // finish baset val when it is out of scope 9615 void cleanUpBaseFinishG(baset **val); 9616 9617 // smash baset val when it is out of scope 9618 void cleanUpBaseSmashG(baset **val); 9619 9620 /** 9621 * declare pointer name with type baset and terminate name when it is out of scope 9622 */ 9623 #define cleanBaseP(name) baset *name CLEANUP(cleanUpBaseTerminateG) 9624 9625 /** 9626 * declare pointer name with type baset and free name when it is out of scope 9627 */ 9628 #define cleanFreeBase(name) baset *name CLEANUP(cleanUpBaseFreeG) 9629 9630 /** 9631 * declare pointer name with Type baset and finish name when it is out of scope 9632 */ 9633 #define cleanFinishBaseP(name) baset *name CLEANUP(cleanUpBaseFinishG) 9634 9635 /** 9636 * declare pointer name with Type baset and smash name when it is out of scope 9637 */ 9638 #define cleanSmashBaseP(name) baset *name CLEANUP(cleanUpBaseSmashG) 9639 9640 // end class base 9641 9642 /** 9643 * undefined class 9644 */ 9645 typedef struct undefined undefinedt; 9646 9647 /** 9648 * smallJson class 9649 */ 9650 typedef struct smallJson smallJsont; 9651 9652 /** 9653 * smallDict class 9654 */ 9655 typedef struct smallDict smallDictt; 9656 9657 /** 9658 * smallArray class 9659 */ 9660 typedef struct smallArray smallArrayt; 9661 9662 /** 9663 * smallBytes class 9664 */ 9665 typedef struct smallBytes smallBytest; 9666 9667 /** 9668 * smallBool class 9669 */ 9670 typedef struct smallBool smallBoolt; 9671 9672 /** 9673 * smallContainer class 9674 */ 9675 typedef struct smallContainer smallContainert; 9676 9677 /** 9678 * smallDouble class 9679 */ 9680 typedef struct smallDouble smallDoublet; 9681 9682 /** 9683 * smallInt class 9684 */ 9685 typedef struct smallInt smallIntt; 9686 9687 /** 9688 * smallString class 9689 */ 9690 typedef struct smallString smallStringt; 9691 9692 #include "json/libsheepyCUndefined.h" 9693 #include "json/libsheepyCSmallDict.h" 9694 #include "json/libsheepyCSmallArray.h" 9695 #include "json/libsheepyCSmallJson.h" 9696 #include "json/libsheepyCSmallBytes.h" 9697 #include "json/libsheepyCSmallBool.h" 9698 #include "json/libsheepyCSmallContainer.h" 9699 #include "json/libsheepyCSmallDouble.h" 9700 #include "json/libsheepyCSmallInt.h" 9701 #include "json/libsheepyCSmallString.h" 9702 9703 /** 9704 * undefined/null object for setting undefined/null in small data structures 9705 * pushG(a, undefined); 9706 */ 9707 extern undefinedt* undefined; 9708 9709 /** 9710 * Generic return types 9711 * getG(dict, rtBool, "a"); 9712 */ 9713 extern baset* rtBaset; 9714 extern undefinedt* rtUndefinedt; 9715 extern bool rtBool; 9716 extern bool* rtBoolP; 9717 extern double rtDouble; 9718 extern double* rtDoubleP; 9719 extern int64_t rtInt64_t; 9720 extern int64_t* rtInt64_tP; 9721 extern int32_t rtInt32_t; 9722 extern int32_t* rtInt32_tP; 9723 extern uint64_t rtUint64_t; 9724 extern uint64_t* rtUint64_tP; 9725 extern uint32_t rtUint32_t; 9726 extern uint32_t* rtUint32_tP; 9727 extern float rtF32; 9728 extern double rtF64; 9729 extern double* rtF64P; 9730 extern int64_t rtI64; 9731 extern int64_t* rtI64P; 9732 extern int32_t rtI32; 9733 extern int32_t* rtI32P; 9734 extern uint64_t rtU64; 9735 extern uint64_t* rtU64P; 9736 extern uint32_t rtU32; 9737 extern uint32_t* rtU32P; 9738 extern uint8_t rtU8; 9739 extern uint16_t rtU16; 9740 extern char* rtChar; 9741 extern smallArrayt* rtSmallArrayt; 9742 extern smallBoolt* rtSmallBoolt; 9743 extern smallBytest* rtSmallBytest; 9744 extern smallDictt* rtSmallDictt; 9745 extern smallDoublet* rtSmallDoublet; 9746 extern smallIntt* rtSmallIntt; 9747 extern smallJsont* rtSmallJsont; 9748 extern smallStringt* rtSmallStringt; 9749 extern void* rtVoid; 9750 extern smallContainert* rtSmallContainert; 9751 9752 // thread pool 9753 #include "tpool.h" 9754 9755 // Reference SKIP END 9756 9757 /** 9758 * define for unused values in generics 9759 */ 9760 #define unusedV 0 9761 9762 /** 9763 * convert a variable number type to unsigned type, to declare a new variable or cast a value 9764 * 9765 * Example: 9766 * int a = 0x7f000000; 9767 * int b = 0x81000000; 9768 * int c = a - b; // wrong result because of the overflow 9769 * 9770 * // instead cast a and b to unsigned int 9771 * toUnsignedType(a) d = (toUnsignedType(a))a + (toUnsignedType(b))(-b); 9772 */ 9773 #define toUnsignedType(var) typeof(convertToUnsignedType(var)) 9774 #define convertToUnsignedType(var) _Generic(var,\ 9775 int8_t: rtU8,\ 9776 int16_t: rtU16,\ 9777 int32_t: rtU32,\ 9778 int64_t: rtU64,\ 9779 uint8_t: rtU8,\ 9780 uint16_t: rtU16,\ 9781 uint32_t: rtU32,\ 9782 uint64_t: rtU64,\ 9783 float: rtF32,/* it is useful to support float even as there is no unsigned float */\ 9784 double: rtF64) 9785 9786 /** 9787 * declare casted variable and cast to smallStringt 9788 */ 9789 #define castS(casted, toCast) \ 9790 ;smallStringt *casted;\ 9791 if (checkObjectTypes && toCast && !isOSmallString(toCast))\ 9792 casted = NULL;\ 9793 else\ 9794 casted = (smallStringt *) (toCast); 9795 9796 /** 9797 * convenience define to make the json path strings more readable 9798 * key strings must in paths must be quoted with \" 9799 * _"a"_"."_"bsd"_ is equivalent to: 9800 * "\"a\".\"bsd\"" 9801 */ 9802 #define _ "\"" 9803 9804 /** Back Slash string to escape back slash, use in for example json path with get, set... */ 9805 #define BSLH "\\" 9806 9807 /** 9808 * get a pointer to the string in the smallString object 9809 * 9810 * works only when obj is not NULL 9811 * 9812 * it is not possible to free/reallocate this pointer 9813 */ 9814 #define ssGet(obj) ((smallStringt*)(obj))->f->get((smallStringt*)(obj)) 9815 9816 /** 9817 * get a pointer to the string in the smallJson object 9818 * 9819 * works only when obj is not NULL 9820 * 9821 * it is not possible to free/reallocate this pointer 9822 */ 9823 #define sjGet(obj) ((smallJsont*)(obj))->f->getTopS((smallJsont*)(obj)) 9824 9825 /** 9826 * replace all olds (old strings) 9827 * smallString and smallJson string 9828 */ 9829 #define replaceSO_max(obj,olds,news) (obj)->f->replace(obj,olds,news, 0) 9830 9831 /** 9832 * string replace many olds with news (s, olds1, news1, olds2, news2,...) 9833 * smallString and smallJson string 9834 */ 9835 #define replaceManyO(self, olds, ...) (self)->f->replaceMany(self, olds, __VA_ARGS__, NULL) 9836 #define replaceManyG replaceManyO 9837 9838 /** 9839 * ignore case and replace all olds (old strings) 9840 * smallString and smallJson string 9841 */ 9842 #define icReplaceSO_max(obj,olds,news) (obj)->f->replace(obj,olds,news, 0) 9843 9844 /** 9845 * ignore case and string replace many olds with news (s, olds1, news1, olds2, news2,...) 9846 * smallString and smallJson string 9847 */ 9848 #define icReplaceManyO(self, olds, ...) (self)->f->icReplaceMany(self, olds, __VA_ARGS__, NULL) 9849 #define icReplaceManyG icReplaceManyO 9850 9851 /** 9852 * sheepy sysinfo 9853 * 9854 * return struct sysinfo in a dictionary. 9855 * The keys are: uptime, loads, totalram, freeram, sharedram, bufferram, totalswap, freeswap, procs 9856 * 9857 * \return 9858 * sysinfo dictionary 9859 * NULL when failure 9860 */ 9861 smallDictt *shSysinfo(void); 9862 9863 baset *duplicateBaseG(baset *self); 9864 9865 /** 9866 * get program path 9867 * When initLibsheepy is called before this function, it returns the given program path. 9868 * When initLibsheepy has not been called before this function, it returns the real program path. 9869 * 9870 * \return 9871 * program path or real program path 9872 */ 9873 smallJsont *getProgPathJO(void); 9874 smallStringt *getProgPathO(void); 9875 9876 /** 9877 * get real program path 9878 * The first call allocates libSheepyRealProgPath, it is freed with freeRealProgPath 9879 * 9880 * \return 9881 * real program path 9882 */ 9883 smallJsont *getRealProgPathJO(void); 9884 smallStringt *getRealProgPathO(void); 9885 9886 /** 9887 * run system command in a smallString 9888 */ 9889 int systemJO(smallJsont *command); 9890 int systemO(smallStringt *command); 9891 9892 /** 9893 * run system command in a smallString and free command buffer 9894 * a message is printed when an error occurs 9895 * 9896 * \return 9897 * 0 success 9898 */ 9899 #define systemNFreeOJ(command) systemNFreeJOF(command, __LINE__, __func__, __FILE__); 9900 int systemNFreeJOF(smallJsont *command, int line, const char *thisFunc, const char *thisFileName); 9901 #define systemNFreeO(command) systemNFreeOF(command, __LINE__, __func__, __FILE__); 9902 int systemNFreeOF(smallStringt *command, int line, const char *thisFunc, const char *thisFileName); 9903 9904 /** 9905 * convert data in obj to string 9906 */ 9907 char *toStringOF(baset* object); 9908 char *toStringUndefinedGF(undefinedt* object); 9909 char *toStringBoolGF(bool object); 9910 char *toStringBoolPGF(bool* object); 9911 char *toStringFloatGF(float object); 9912 char *toStringFloatPGF(float* object); 9913 char *toStringDoubleGF(double object); 9914 char *toStringDoublePGF(double* object); 9915 char *toStringIntGF(int64_t object); 9916 char *toStringIntPGF(int64_t* object); 9917 char *toStringInt32GF(int32_t object); 9918 char *toStringInt32PGF(int32_t* object); 9919 char *toStringInt16GF(int16_t object); 9920 char *toStringInt16PGF(int16_t* object); 9921 char *toStringUintGF(uint64_t object); 9922 char *toStringUintPGF(uint64_t* object); 9923 char *toStringUint32GF(uint32_t object); 9924 char *toStringUint32PGF(uint32_t* object); 9925 char *toStringUint16GF(uint16_t object); 9926 char *toStringUint16PGF(uint16_t* object); 9927 char *toStringUint8GF(uint8_t object); 9928 char *toStringUint8PGF(uint8_t* object); 9929 char *toStringCharGF(char object); 9930 char *toStringSGF(const char* object); 9931 char *toStringListSGF(char** object); 9932 char *toStringListCSGF(const char** object); 9933 char *toStringDictGF(smallDictt* object); 9934 char *toStringArrayGF(smallArrayt* object); 9935 char *toStringSmallBoolGF(smallBoolt* object); 9936 char *toStringSmallBytesGF(smallBytest* object); 9937 char *toStringSmallDoubleGF(smallDoublet* object); 9938 char *toStringSmallIntGF(smallIntt* object); 9939 char *toStringSmallStringGF(smallStringt* object); 9940 char *toStringVoidGF(void* object); 9941 char *toStringSmallContainerGF(smallContainert* object); 9942 char *toStringSmallJsonGF(smallJsont* object); 9943 #define toStringG(obj) _Generic((obj), \ 9944 baset*: toStringOF, \ 9945 undefinedt*: toStringUndefinedGF, \ 9946 bool: toStringBoolGF, \ 9947 bool*: toStringBoolPGF, \ 9948 float: toStringFloatGF, \ 9949 float*: toStringFloatPGF, \ 9950 double: toStringDoubleGF, \ 9951 double*: toStringDoublePGF, \ 9952 int64_t: toStringIntGF, \ 9953 int64_t*: toStringIntPGF, \ 9954 int32_t: toStringInt32GF, \ 9955 int32_t*: toStringInt32PGF, \ 9956 int16_t: toStringInt16GF, \ 9957 int16_t*: toStringInt16PGF, \ 9958 uint64_t: toStringUintGF, \ 9959 uint64_t*: toStringUintPGF, \ 9960 uint32_t: toStringUint32GF, \ 9961 uint32_t*: toStringUint32PGF, \ 9962 uint16_t: toStringUint16GF, \ 9963 uint16_t*: toStringUint16PGF, \ 9964 uint8_t: toStringUint8GF, \ 9965 uint8_t*: toStringUint8PGF, \ 9966 char: toStringCharGF, \ 9967 char*: toStringSGF, \ 9968 const char*: toStringSGF, \ 9969 char**: toStringListSGF, \ 9970 const char**: toStringListCSGF, \ 9971 smallDictt*: toStringDictGF, \ 9972 smallArrayt*: toStringArrayGF, \ 9973 smallBoolt*: toStringSmallBoolGF, \ 9974 smallBytest*: toStringSmallBytesGF, \ 9975 smallDoublet*: toStringSmallDoubleGF, \ 9976 smallIntt*: toStringSmallIntGF, \ 9977 smallStringt*: toStringSmallStringGF, \ 9978 void*: toStringVoidGF, \ 9979 smallContainert*: toStringSmallContainerGF, \ 9980 smallJsont*: toStringSmallJsonGF, \ 9981 default: toStringVoidGF \ 9982 )(obj) 9983 9984 /** 9985 * object to string for debug 9986 * this function is used for printing an object in gdb, lldb, any debugger, in gdb: 9987 * p otos(obj) 9988 * a longer alternative to print an object is: 9989 * p obj->f->toString(obj) 9990 */ 9991 char *otos(void *basetObj); 9992 9993 /** 9994 * puts for objects using toString 9995 */ 9996 void putsOF(baset* object); 9997 #define putsO(obj) putsOF((baset *)(obj)) 9998 void putsUndefinedGF(undefinedt* object); 9999 void putsBoolGF(bool object); 10000 void putsBoolPGF(bool* object); 10001 void putsDoubleGF(double object); 10002 void putsDoublePGF(double* object); 10003 void putsIntGF(int64_t object); 10004 void putsIntPGF(int64_t* object); 10005 void putsInt32GF(int32_t object); 10006 void putsInt32PGF(int32_t* object); 10007 void putsUintGF(uint64_t object); 10008 void putsUintPGF(uint64_t* object); 10009 void putsUint32GF(uint32_t object); 10010 void putsUint32PGF(uint32_t* object); 10011 void putsSGF(const char* object); 10012 void putsListSGF(char** object); 10013 void putsListCSGF(const char** object); 10014 void putsDictGF(smallDictt* object); 10015 void putsJsonGF(smallJsont* object); 10016 void putsArrayGF(smallArrayt* object); 10017 void putsSmallBoolGF(smallBoolt* object); 10018 void putsSmallBytesGF(smallBytest* object); 10019 void putsSmallDoubleGF(smallDoublet* object); 10020 void putsSmallIntGF(smallIntt* object); 10021 void putsSmallStringGF(smallStringt* object); 10022 void putsVoidGF(void* object); 10023 void putsSmallContainerGF(smallContainert* object); 10024 #define putsG(obj) _Generic((obj), \ 10025 baset*: putsOF, \ 10026 undefinedt*: putsUndefinedGF, \ 10027 bool: putsBoolGF, \ 10028 bool*: putsBoolPGF, \ 10029 double: putsDoubleGF, \ 10030 double*: putsDoublePGF, \ 10031 int64_t: putsIntGF, \ 10032 int64_t*: putsIntPGF, \ 10033 int32_t: putsInt32GF, \ 10034 int32_t*: putsInt32PGF, \ 10035 uint64_t: putsUintGF, \ 10036 uint64_t*: putsUintPGF, \ 10037 uint32_t: putsUint32GF, \ 10038 uint32_t*: putsUint32PGF, \ 10039 char*: putsSGF, \ 10040 const char*: putsSGF, \ 10041 char**: putsListSGF, \ 10042 const char**: putsListCSGF, \ 10043 smallDictt*: putsDictGF, \ 10044 smallJsont*: putsJsonGF, \ 10045 smallArrayt*: putsArrayGF, \ 10046 smallBoolt*: putsSmallBoolGF, \ 10047 smallBytest*: putsSmallBytesGF, \ 10048 smallDoublet*: putsSmallDoubleGF, \ 10049 smallIntt*: putsSmallIntGF, \ 10050 smallStringt*: putsSmallStringGF, \ 10051 void*: putsVoidGF, \ 10052 smallContainert*: putsSmallContainerGF, \ 10053 default: putsVoidGF \ 10054 )(obj) 10055 10056 /** 10057 * format string 10058 * allocate and format string using asprintf 10059 * \param 10060 * format string and other parameters 10061 * \return 10062 * allocated and formated string 10063 * NULL when fmt is NULL or asprintf fails 10064 */ 10065 smallStringt *formatO(const char *fmt, ...); 10066 10067 /** 10068 * execute command 10069 * return stdout from cmd in *out 10070 * 10071 * \param 10072 * cmd: command 10073 * \param 10074 * out stdout 10075 * \param 10076 * err stderr 10077 * \return 10078 * stdout from command in a list 10079 * empty list when command didnt produce any output 10080 * 1 success 10081 * 0 when cmd is NULL or error 10082 */ 10083 int execO(const char *cmd, smallArrayt *out, smallArrayt *err); 10084 int execSmallJsonO(smallJsont *cmd, smallArrayt *out, smallArrayt *err); 10085 int execSmallStringO(smallStringt *cmd, smallArrayt *out, smallArrayt *err); 10086 10087 /** 10088 * list all files in a directory recursively 10089 * the directories are not listed 10090 * 10091 * \param 10092 * dirPath: path to directory 10093 * \return 10094 * list of files 10095 * empty list when the directory is not found 10096 */ 10097 smallArrayt *walkDirO(const char* dirPath); 10098 smallArrayt *walkDirSmallJsonO(smallJsont* dirPath); 10099 smallArrayt *walkDirSmallStringO(smallStringt* dirPath); 10100 10101 /** 10102 * list all directories in a directory recursively 10103 * and sort the list 10104 * 10105 * files are not listed 10106 * 10107 * \param 10108 * dirPath: path to directory 10109 * \return 10110 * list of directories 10111 * empty list when the directory is not found 10112 */ 10113 smallArrayt *walkDirDirO(const char* dirPath); 10114 smallArrayt *walkDirDirSmallJsonO(smallJsont* dirPath); 10115 smallArrayt *walkDirDirSmallStringO(smallStringt* dirPath); 10116 10117 /** 10118 * list files in a directory 10119 * and sort the list 10120 * 10121 * directories are not listed 10122 * 10123 * \param 10124 * dirPath: path to directory 10125 * \return 10126 * list of files, dirPath is not prepended to the file names 10127 * empty list when the directory is not found 10128 */ 10129 smallArrayt *readDirO(const char *dirPath); 10130 smallArrayt *readDirSmallJsonO(smallJsont *dirPath); 10131 smallArrayt *readDirSmallStringO(smallStringt *dirPath); 10132 10133 /** 10134 * list directories in a directory 10135 * and sort the list 10136 * 10137 * files are not listed 10138 * 10139 * \param 10140 * dirPath: path to directory 10141 * \return 10142 * list of directories, dirPath is not prepended to the names 10143 * empty list when the directory is not found 10144 */ 10145 smallArrayt *readDirDirO(const char *dirPath); 10146 smallArrayt *readDirDirSmallJsonO(smallJsont *dirPath); 10147 smallArrayt *readDirDirSmallStringO(smallStringt *dirPath); 10148 10149 /** 10150 * list all files and directories in a directory recursively 10151 * the directories are listed 10152 * 10153 * \param 10154 * dirPath: path to directory 10155 * \return 10156 * list of files 10157 * empty list when the directory is not found 10158 */ 10159 smallArrayt *walkDirAllO(const char* dirPath); 10160 smallArrayt *walkDirAllSmallJsonO(smallJsont* dirPath); 10161 smallArrayt *walkDirAllSmallStringO(smallStringt* dirPath); 10162 10163 /** 10164 * list files in a directory 10165 * and sort the list 10166 * 10167 * directories are listed 10168 * 10169 * \param 10170 * dirPath: path to directory 10171 * \return 10172 * list of files, dirPath is not prepended to the file names 10173 * empty list when the directory is not found 10174 */ 10175 smallArrayt *readDirAllO(const char *dirPath); 10176 smallArrayt *readDirAllSmallJsonO(smallJsont *dirPath); 10177 smallArrayt *readDirAllSmallStringO(smallStringt *dirPath); 10178 10179 /** 10180 * get modification time for path 10181 * 10182 * \param 10183 * path 10184 * \return 10185 * modification time 10186 * 0 when an error occured 10187 */ 10188 time_t getModificationTimeJO(smallJsont *path); 10189 time_t getModificationTimeO(smallStringt *path); 10190 10191 /** 10192 * set modification time for path 10193 * 10194 * \param 10195 * path 10196 * \param 10197 * mtime (for example, from the getModificationTime function) 10198 * \return 10199 * 1 success 10200 * 0 when an error occured 10201 */ 10202 int setModificationTimeJO(smallJsont *path, time_t mtime); 10203 int setModificationTimeO(smallStringt *path, time_t mtime); 10204 10205 /** 10206 * compare modification times for path1 and path2 10207 * 10208 * \param 10209 * path1 10210 * \param 10211 * path2 10212 * \return 10213 * true when mtime is equal for path1 and path2 10214 * false when mtime is different for path1 and path2 or when there is an error 10215 */ 10216 bool equalModificationTimesJO(smallJsont *path1, smallJsont *path2); 10217 bool equalModificationTimesSJO(const char *path1, smallJsont *path2); 10218 bool equalModificationTimesJOS(smallJsont *path1, const char *path2); 10219 bool equalModificationTimesJOO(smallJsont *path1, smallStringt *path2); 10220 bool equalModificationTimesOJO(smallStringt *path1, smallJsont *path2); 10221 bool equalModificationTimesO(smallStringt *path1, smallStringt *path2); 10222 bool equalModificationTimesSO(const char *path1, smallStringt *path2); 10223 bool equalModificationTimesOS(smallStringt *path1, const char *path2); 10224 10225 /** 10226 * time To String 10227 * convert unix time to string 10228 * (ctime is not used here because it adds \n at the end of the string) 10229 * 10230 * \param 10231 * unix time to convert 10232 * \return 10233 * string representing the unix time 10234 */ 10235 smallJsont *timeToJO(const time_t t); 10236 smallStringt *timeToSO(const time_t t); 10237 10238 /** 10239 * sheepy dirname 10240 * 10241 * \param 10242 * path 10243 * \return 10244 * path without basename (last item in the path) 10245 * "./" when path is blank or when there is only one item in the path 10246 * NULL when path is NULL 10247 */ 10248 smallJsont *shDirnameJO(smallJsont *path); 10249 smallStringt *shDirnameO(smallStringt *path); 10250 10251 /** 10252 * expands ~/ ($HOME) or ~USER\n 10253 * duplicate and expand path. 10254 * \param 10255 * path: string 10256 * \return 10257 * path: modified path\n 10258 * NULL error 10259 */ 10260 smallJsont *expandHomeJO(smallJsont *path); 10261 smallStringt *expandHomeO(smallStringt *path); 10262 10263 /** 10264 * normalize path 10265 * 10266 * remove unecessary /, .. and . 10267 * leading / is kept 10268 * leading . is removed 10269 * 10270 * '/../' becomes '/' 10271 * 10272 * \param 10273 * path 10274 * \return 10275 * path: modified path 10276 * NULL when path is NULL 10277 */ 10278 smallJsont *normalizePathJO(smallJsont *path); 10279 smallStringt *normalizePathO(smallStringt *path); 10280 10281 /** 10282 * get current working directory 10283 * 10284 * \return 10285 * current path 10286 */ 10287 smallJsont *getCwdJO(void); 10288 smallStringt *getCwdO(void); 10289 10290 /** 10291 * change directory 10292 * 10293 * \param 10294 * path 10295 * \return 10296 * 1 success 10297 * 0 error 10298 */ 10299 int chDirJO(smallJsont *path); 10300 int chDirO(smallStringt *path); 10301 10302 /** 10303 * is directory 10304 * 10305 * \param 10306 * path 10307 * \return 10308 * true when path is a directory 10309 * false path is not a directory, filePath is NULL or empty string 10310 */ 10311 bool isDirJO(smallJsont *path); 10312 bool isDirO(smallStringt *path); 10313 10314 /** 10315 * is symbolic link 10316 * 10317 * \param 10318 * path 10319 * \return 10320 * true when path is a symbolic link 10321 * false path is not a symbolic link, filePath is NULL or empty string 10322 */ 10323 bool isLinkJO(smallJsont *path); 10324 bool isLinkO(smallStringt *path); 10325 10326 /** 10327 * detect files and directories 10328 * 10329 * \param 10330 * filePath: path to file or directory 10331 * \return 10332 * true exists 10333 * false non existant 10334 * false filePath is NULL or empty string 10335 */ 10336 bool fileExistsJO(smallJsont *filePath); 10337 bool fileExistsO(smallStringt *filePath); 10338 10339 /** 10340 * like chmod in stdlibc but return true/false 10341 * \param 10342 * filePath: path to file or directory 10343 * mode: permissions 10344 * \return 10345 * true success 10346 * false filePath doesnt exist, not enough permissions... 10347 * false filePath is NULL or empty string 10348 */ 10349 bool fileChmodJO(smallJsont *filePath, mode_t mode); 10350 bool fileChmodO(smallStringt *filePath, mode_t mode); 10351 10352 /** 10353 * get file size 10354 * 10355 * \param 10356 * filePath: path to file 10357 * \return 10358 * ssize_t >= 0 size 10359 * -1 an error occured or filePath is NULL or empty string 10360 */ 10361 ssize_t fileSizeJO(smallJsont *filePath); 10362 ssize_t fileSizeO(smallStringt *filePath); 10363 10364 /** 10365 * call readFileToS (for readFileG) 10366 */ 10367 void *readFileToNewG(void *none UNUSED, const char *filePath); 10368 void *readStreamToNewG(void *none UNUSED, FILE *fp); 10369 char *readFileToG(char **string, const char *filePath); 10370 char *readStreamToG(char **string, FILE *fp); 10371 10372 void readTextSmallJsonNotSupported(char ***self UNUSED, smallJsont *path UNUSED); 10373 void readTextSmallStringNotSupported(char ***self UNUSED, smallStringt *path UNUSED); 10374 void readToFileSmallJsonNotSupported(void *self UNUSED, smallJsont *path UNUSED); 10375 void readToFileSmallStringNotSupported(void *self UNUSED, smallStringt *path UNUSED); 10376 10377 /** 10378 * call writeFileS (for writeFileG) 10379 * (swaps parameters) 10380 */ 10381 int writeFileFromG(const char *string, const char *filePath); 10382 int writeStreamFromG(const char *string, FILE *fp); 10383 10384 int writeTextSmallJsonNotSupported(char **self UNUSED, smallJsont *path UNUSED); 10385 int writeTextSmallStringNotSupported(char **self UNUSED, smallStringt *path UNUSED); 10386 int writeTextCCSmallJsonNotSupported(const char **self UNUSED, smallJsont *path UNUSED); 10387 int writeTextCCSmallStringNotSupported(const char **self UNUSED, smallStringt *path UNUSED); 10388 10389 /** 10390 * call readText (for readFileG) 10391 */ 10392 char **readTextSG(char ***list, const char *filePath); 10393 char **readTextStreamG(char ***list, FILE *fp); 10394 10395 /** 10396 * call writeText (for writeFileG) 10397 * (swaps parameters) 10398 */ 10399 bool writeTextSG(char **list, const char *filePath); 10400 bool writeTextStreamG(char **list, FILE *fp); 10401 bool writeTextCG(const char **list, const char *filePath); 10402 bool writeTextStreamCG(const char **list, FILE *fp); 10403 10404 /** 10405 * call appendFileS (for appendFileG) 10406 * (swaps parameters) 10407 */ 10408 bool appendFileSG(const char *string, const char *filePath); 10409 10410 /** 10411 * call appendText (for appendFileG) 10412 * (swaps parameters) 10413 */ 10414 bool appendTextSG(char **list, const char *filePath); 10415 bool appendTextCG(const char **list, const char *filePath); 10416 10417 /** 10418 * recursive mkdir 10419 * 10420 * \param 10421 * path 10422 * \return 10423 * 1 success 10424 * 0 when path is NULL or empty 10425 */ 10426 int mkdirParentsSmallJsonO(smallJsont* path); 10427 int mkdirParentsO(smallStringt* path); 10428 10429 /** 10430 * remove all 10431 * delete recursively files and directories 10432 * 10433 * \param 10434 * path 10435 * \return 10436 * 1 success 10437 * 0 when path is NULL or empty 10438 */ 10439 int rmAllSmallJsonO(smallJsont* path); 10440 int rmAllO(smallStringt* path); 10441 10442 /** 10443 * copy files recursively 10444 * 10445 * \param 10446 * src source path 10447 * dst destination path 10448 * \return 10449 * 1 success 10450 * 0 when src or dst are NULL or empty 10451 */ 10452 int copyO(smallStringt* src, smallStringt* dst); 10453 int copySSmallJsonO(const char* src, smallJsont* dst); 10454 int copySO(const char* src, smallStringt* dst); 10455 int copySmallJsonOS(smallJsont* src, const char* dst); 10456 int copySmallJsonSmallJson(smallJsont* src, smallJsont* dst); 10457 int copySmallJsonO(smallJsont* src, smallStringt* dst); 10458 int copyOS(smallStringt* src, const char* dst); 10459 int copyOSmallJson(smallStringt* src, smallJsont* dst); 10460 10461 /** 10462 * rename file 10463 * 10464 * \param 10465 * src source path 10466 * dst destination path 10467 * \return 10468 * 1 success 10469 * 0 when src or dst are NULL or empty 10470 */ 10471 int renameSmallJsonO(smallJsont* src, smallStringt* dst); 10472 int renameSmallJsonSmallJson(smallJsont* src, smallJsont* dst); 10473 int renameSmallJsonOS(smallJsont* src, const char* dst); 10474 int renameO(smallStringt* src, smallStringt* dst); 10475 int renameOSmallJson(smallStringt* src, smallJsont* dst); 10476 int renameSSmallJsonO(const char* src, smallJsont* dst); 10477 int renameSO(const char* src, smallStringt* dst); 10478 int renameOS(smallStringt* src, const char* dst); 10479 10480 /** 10481 * move files recursively 10482 * 10483 * copy and then delete source 10484 * 10485 * \param 10486 * src source path 10487 * dst destination path 10488 * \return 10489 * 1 success 10490 * 0 when src or dst are NULL or empty 10491 */ 10492 int moveSmallJsonO(smallJsont* src, smallStringt* dst); 10493 int moveSmallJsonSmallJson(smallJsont* src, smallJsont* dst); 10494 int moveSmallJsonOS(smallJsont* src, const char* dst); 10495 int moveO(smallStringt* src, smallStringt* dst); 10496 int moveOSmallJson(smallStringt* src, smallJsont* dst); 10497 int moveSSmallJsonO(const char* src, smallJsont* dst); 10498 int moveSO(const char* src, smallStringt* dst); 10499 int moveOS(smallStringt* src, const char* dst); 10500 10501 /** 10502 * random string 10503 * 10504 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-," 10505 * 10506 * 10507 * \param 10508 * string length 10509 * \return 10510 * random string 10511 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 10512 */ 10513 smallJsont *randomSmallJsonO(uint64_t length); 10514 smallStringt *randomSO(uint64_t length); 10515 10516 /** 10517 * random alpha numerical string 10518 * 10519 * allocate and generate a random string in charset "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 10520 * 10521 * 10522 * \param 10523 * string length 10524 * \return 10525 * random string 10526 * NULL error opening /dev/urandom, malloc failed, fread /dev/urandom failed, length is 0 10527 */ 10528 smallJsont *randomAlphaNumSmallJsonO(uint64_t length); 10529 smallStringt *randomAlphaNumSO(uint64_t length); 10530 10531 /** 10532 * read String 10533 * read user input (one line) as a string 10534 * 10535 * \return 10536 * line from the user 10537 * NULL when buffer allocation failed 10538 */ 10539 smallJsont *readSmallJsonO(void); 10540 smallStringt *readO(void); 10541 10542 /** 10543 * readLine from file stream 10544 * the fist new line is converted to 0 10545 * 10546 * \param 10547 * fp: file stream 10548 * \return 10549 * one line in a string 10550 * empty string when stream is empty 10551 * NULL when the stream is NULL or when there is an error reading the stream 10552 */ 10553 smallJsont *readLineSmallJsonO(FILE *fp); 10554 smallStringt *readLineO(FILE *fp); 10555 10556 /** 10557 * call intToS for intToG 10558 */ 10559 char *intToSG(char *retType UNUSED, int64_t n); 10560 10561 /** 10562 * call doubleToS for doubleToG 10563 */ 10564 char *doubleToSG(char *retType UNUSED, double n); 10565 10566 /** 10567 * call iListUniqS for uniqG 10568 */ 10569 char **iListUniqG(char ***list, int dum UNUSED); 10570 10571 /** 10572 * call iicListUniqS for icUniqG 10573 */ 10574 char **iicListUniqG(char ***list, int dum UNUSED); 10575 10576 /** 10577 * call listFromArrayS for fromArrayG 10578 */ 10579 char **listFromArrayG(char **retType UNUSED, char **array, size_t size); 10580 char **listFromCArrayG(char **retType UNUSED, const char **array, size_t size); 10581 10582 /** 10583 * call getS for getG 10584 */ 10585 char getSG(const char *string, int retType UNUSED, int64_t index); 10586 10587 /** 10588 * call listGetS for getG 10589 */ 10590 char *listGetG(char **list, int retType UNUSED, int64_t index); 10591 char *listGetCG(const char **list, int retType UNUSED, int64_t index); 10592 10593 /** 10594 * call iListGetS for getG 10595 */ 10596 char *iListGetG(char **list, int retType UNUSED, int64_t index); 10597 const char *iListGetCG(const char **list, int retType UNUSED, int64_t index); 10598 10599 /** 10600 * call listPopS for popG 10601 */ 10602 char *listPopG(char ***list, int retType UNUSED); 10603 10604 /** 10605 * call listDequeueS for dequeueG 10606 */ 10607 char *listDequeueG(char ***list, int retType UNUSED); 10608 10609 char **listDupCG(const char **list); 10610 10611 bool listEqCG(char **list1, const char **list2); 10612 bool listEqC1G(const char **list1, char **list2); 10613 bool listEqCCG(const char **list1, const char **list2); 10614 bool icListEqCG(char **list1, const char **list2); 10615 bool icListEqC1G(const char **list1, char **list2); 10616 bool icListEqCCG(const char **list1, const char **list2); 10617 10618 size_t listLengthCG(const char **list); 10619 10620 ssize_t listIndexOfCG(const char **list, const char *string); 10621 ssize_t listIndexOfCharCG(const char **list, char c); 10622 ssize_t icListIndexOfCG(const char **list, const char *string); 10623 ssize_t icListIndexOfCharCG(const char **list, char c); 10624 10625 bool listHasCG(const char **list, const char *string); 10626 bool listHasCharCG(const char **list, char c); 10627 bool icListHasCG(const char **list, const char *string); 10628 bool icListHasCharCG(const char **list, char c); 10629 10630 char *joinCG(const char **list, const char* delim); 10631 char *joinCharCG(const char **list, char delim); 10632 10633 char **listAddCG(char **list1, const char **list2); 10634 10635 int listPrintCG(const char **list); 10636 10637 10638 /** 10639 * equality functions 10640 */ 10641 bool eqCharChar(char c, char value); 10642 bool equalChaOG(char c, baset* value); 10643 bool equalChaBoolG(char c UNUSED, bool value UNUSED); 10644 bool equalChaDoubleG(char c, double value); 10645 bool equalChaInt64G(char c, int64_t value); 10646 bool equalChaInt32G(char c, int32_t value); 10647 bool equalChaUint32G(char c, uint32_t value); 10648 bool equalChaUint64G(char c, uint64_t value); 10649 bool equalChaSmallBytesG(char c, smallBytest* value); 10650 bool equalChaSmallDoubleG(char c, smallDoublet* value); 10651 bool equalChaSmallIntG(char c, smallIntt* value); 10652 bool equalChaSmallJsonG(char c, smallJsont* value); 10653 bool equalChaSmallStringG(char c, smallStringt* value); 10654 bool equalCharOG(const char *s, baset* value); 10655 bool equalCharBoolG(const char *s, bool value); 10656 bool equalCharDoubleG(const char *s, double value); 10657 bool equalCharInt64G(const char *s, int64_t value); 10658 bool equalCharInt32G(const char *s, int32_t value); 10659 bool equalCharUint32G(const char *s, uint32_t value); 10660 bool equalCharUint64G(const char *s, uint64_t value); 10661 bool equalCharSmallBoolG(const char *s, smallBoolt* value); 10662 bool equalCharSmallBytesG(const char *s, smallBytest* value); 10663 bool equalCharSmallDoubleG(const char *s, smallDoublet* value); 10664 bool equalCharSmallIntG(const char *s, smallIntt* value); 10665 bool equalCharPSmallJsonG(const char *s, smallJsont* value); 10666 bool equalCharPSmallStringG(const char *s, smallStringt* value); 10667 bool equalArrayOG(char ** p1, baset* p2); 10668 bool equalCArrayOG(const char ** p1, baset* p2); 10669 bool equalArraySmallJsonG(char ** p1, smallJsont* p2); 10670 bool equalArraySmallArrayG(char ** p1, smallArrayt* p2); 10671 bool equalCArraySmallJsonG(const char ** p1, smallJsont* p2); 10672 bool equalCArraySmallArrayG(const char ** p1, smallArrayt* p2); 10673 bool equalOChaG(baset* p1, char p2); 10674 bool equalOCharG(baset* p1, const char * p2); 10675 bool equalOArrayG(baset* p1, char ** p2); 10676 bool equalOCArrayG(baset* p1, const char ** p2); 10677 bool equalOOG(baset* p1, baset* p2); 10678 bool equalOBoolG(baset* p1, bool p2); 10679 bool equalODoubleG(baset* p1, double p2); 10680 bool equalOInt64G(baset* p1, int64_t p2); 10681 bool equalOInt32G(baset* p1, int32_t p2); 10682 bool equalOUint32G(baset* p1, uint32_t p2); 10683 bool equalOUint64G(baset* p1, uint64_t p2); 10684 bool equalOSmallArrayG(baset* p1, smallArrayt* p2); 10685 bool equalOSmallBoolG(baset* p1, smallBoolt* p2); 10686 bool equalOSmallBytesG(baset* p1, smallBytest* p2); 10687 bool equalOSmallDoubleG(baset* p1, smallDoublet* p2); 10688 bool equalOSmallDictG(baset* p1, smallDictt* p2); 10689 bool equalOSmallIntG(baset* p1, smallIntt* p2); 10690 bool equalOSmallJsonG(baset* p1, smallJsont* p2); 10691 bool equalOSmallStringG(baset* p1, smallStringt* p2); 10692 bool equalBoolChaG(bool p1 UNUSED, char p2 UNUSED); 10693 bool equalBoolCharG(bool p1, const char * p2); 10694 bool equalBoolOG(bool p1, baset* p2); 10695 bool equalBoolFG(bool p1, bool p2); 10696 bool equalBoolDoubleG(bool p1, double p2); 10697 bool equalBoolInt64G(bool p1, int64_t p2); 10698 bool equalBoolInt32G(bool p1, int32_t p2); 10699 bool equalBoolUint32G(bool p1, uint32_t p2); 10700 bool equalBoolUint64G(bool p1, uint64_t p2); 10701 bool equalBoolSmallBoolG(bool p1, smallBoolt* p2); 10702 bool equalBoolSmallBytesG(bool p1, smallBytest* p2); 10703 bool equalBoolSmallDoubleG(bool p1, smallDoublet* p2); 10704 bool equalBoolSmallIntG(bool p1, smallIntt* p2); 10705 bool equalBoolSmallJsonG(bool p1, smallJsont* p2); 10706 bool equalBoolSmallStringG(bool p1, smallStringt* p2); 10707 bool equalDoubleChaG(double p1, char p2); 10708 bool equalDoubleCharG(double p1, const char * p2); 10709 bool equalDoubleBaseG(double p1, baset* p2); 10710 bool equalDoubleBoolG(double p1, bool p2); 10711 bool equalDoubleFG(double p1, double p2); 10712 bool equalDoubleInt64G(double p1, int64_t p2); 10713 bool equalDoubleInt32G(double p1, int32_t p2); 10714 bool equalDoubleUint32G(double p1, uint32_t p2); 10715 bool equalDoubleUint64G(double p1, uint64_t p2); 10716 bool equalDoubleSmallBoolG(double p1, smallBoolt* p2); 10717 bool equalDoubleSmallBytesG(double p1, smallBytest* p2); 10718 bool equalDoubleSmallDoubleG(double p1, smallDoublet* p2); 10719 bool equalDoubleSmallIntG(double p1, smallIntt* p2); 10720 bool equalDoubleSmallJsonG(double p1, smallJsont* p2); 10721 bool equalDoubleSmallStringG(double p1, smallStringt* p2); 10722 bool equalInt64ChaG(int64_t p1, char p2); 10723 bool equalInt64CharG(int64_t p1, const char * p2); 10724 bool equalInt64BaseG(int64_t p1, baset* p2); 10725 bool equalInt64BoolG(int64_t p1, bool p2); 10726 bool equalInt64DoubleG(int64_t p1, double p2); 10727 bool equalInt64FG(int64_t p1, int64_t p2); 10728 bool equalInt64Int32G(int64_t p1, int32_t p2); 10729 bool equalInt64Uint32G(int64_t p1, uint32_t p2); 10730 bool equalInt64Uint64G(int64_t p1, uint64_t p2); 10731 bool equalInt64SmallBoolG(int64_t p1, smallBoolt* p2); 10732 bool equalInt64SmallBytesG(int64_t p1, smallBytest* p2); 10733 bool equalInt64SmallDoubleG(int64_t p1, smallDoublet* p2); 10734 bool equalInt64SmallIntG(int64_t p1, smallIntt* p2); 10735 bool equalInt64SmallJsonG(int64_t p1, smallJsont* p2); 10736 bool equalInt64SmallStringG(int64_t p1, smallStringt* p2); 10737 bool equalInt32ChaG(int32_t p1, char p2); 10738 bool equalInt32CharG(int32_t p1, const char * p2); 10739 bool equalInt32BaseG(int32_t p1, baset* p2); 10740 bool equalInt32BoolG(int32_t p1, bool p2); 10741 bool equalInt32DoubleG(int32_t p1, double p2); 10742 bool equalInt32Int64G(int32_t p1, int64_t p2); 10743 bool equalInt32FG(int32_t p1, int32_t p2); 10744 bool equalInt32Uint32G(int32_t p1, uint32_t p2); 10745 bool equalInt32Uint64G(int32_t p1, uint64_t p2); 10746 bool equalInt32SmallBoolG(int32_t p1, smallBoolt* p2); 10747 bool equalInt32SmallBytesG(int32_t p1, smallBytest* p2); 10748 bool equalInt32SmallDoubleG(int32_t p1, smallDoublet* p2); 10749 bool equalInt32SmallIntG(int32_t p1, smallIntt* p2); 10750 bool equalInt32SmallJsonG(int32_t p1, smallJsont* p2); 10751 bool equalInt32SmallStringG(int32_t p1, smallStringt* p2); 10752 bool equalUint32ChaG(uint32_t p1, char p2); 10753 bool equalUint32CharG(uint32_t p1, const char * p2); 10754 bool equalUint32BaseG(uint32_t p1, baset* p2); 10755 bool equalUint32BoolG(uint32_t p1, bool p2); 10756 bool equalUint32DoubleG(uint32_t p1, double p2); 10757 bool equalUint32Int64G(uint32_t p1, int64_t p2); 10758 bool equalUint32Int32G(uint32_t p1, int32_t p2); 10759 bool equalUint32FG(uint32_t p1, uint32_t p2); 10760 bool equalUint32Uint64G(uint32_t p1, uint64_t p2); 10761 bool equalUint32SmallBoolG(uint32_t p1, smallBoolt* p2); 10762 bool equalUint32SmallBytesG(uint32_t p1, smallBytest* p2); 10763 bool equalUint32SmallDoubleG(uint32_t p1, smallDoublet* p2); 10764 bool equalUint32SmallIntG(uint32_t p1, smallIntt* p2); 10765 bool equalUint32SmallJsonG(uint32_t p1, smallJsont* p2); 10766 bool equalUint32SmallStringG(uint32_t p1, smallStringt* p2); 10767 bool equalUint64ChaG(uint64_t p1, char p2); 10768 bool equalUint64CharG(uint64_t p1, const char * p2); 10769 bool equalUint64BaseG(uint64_t p1, baset* p2); 10770 bool equalUint64BoolG(uint64_t p1, bool p2); 10771 bool equalUint64DoubleG(uint64_t p1, double p2); 10772 bool equalUint64Int64G(uint64_t p1, int64_t p2); 10773 bool equalUint64Int32G(uint64_t p1, int32_t p2); 10774 bool equalUint64Uint32G(uint64_t p1, uint32_t p2); 10775 bool equalUint64FG(uint64_t p1, uint64_t p2); 10776 bool equalUint64SmallBoolG(uint64_t p1, smallBoolt* p2); 10777 bool equalUint64SmallBytesG(uint64_t p1, smallBytest* p2); 10778 bool equalUint64SmallDoubleG(uint64_t p1, smallDoublet* p2); 10779 bool equalUint64SmallIntG(uint64_t p1, smallIntt* p2); 10780 bool equalUint64SmallJsonG(uint64_t p1, smallJsont* p2); 10781 bool equalUint64SmallStringG(uint64_t p1, smallStringt* p2); 10782 10783 /** 10784 * return false, used in eqG when object types don't match 10785 */ 10786 bool notEqualCharG(char c UNUSED, void *value UNUSED); 10787 bool notEqualOCharG(void *a UNUSED, char c UNUSED); 10788 bool notEqualOG(void *a UNUSED, void *b UNUSED); 10789 bool notEqualCCOG(const char *a UNUSED, void *b UNUSED); 10790 bool notEqualBoolOG(bool p1 UNUSED, void *p2 UNUSED); 10791 bool notEqualDoubleOG(double p1 UNUSED, void *p2 UNUSED); 10792 bool notEqualInt64OG(int64_t p1 UNUSED, void *p2 UNUSED); 10793 bool notEqualInt32OG(int32_t p1 UNUSED, void *p2 UNUSED); 10794 bool notEqualUint32OG(uint32_t p1 UNUSED, void *p2 UNUSED); 10795 bool notEqualUint64OG(uint64_t p1 UNUSED, void *p2 UNUSED); 10796 bool notEqualOBoolG(void *p1 UNUSED, bool p2 UNUSED); 10797 bool notEqualDoubleG(void *p1 UNUSED, double p2 UNUSED); 10798 bool notEqualOInt64G(void *p1 UNUSED, int64_t p2 UNUSED); 10799 bool notEqualOInt32G(void *p1 UNUSED, int32_t p2 UNUSED); 10800 bool notEqualOUint32G(void *p1 UNUSED, uint32_t p2 UNUSED); 10801 bool notEqualOUint64G(void *p1 UNUSED, uint64_t p2 UNUSED); 10802 10803 /** 10804 * ignore case equality functions 10805 */ 10806 bool icEqCharChar(char c, char value); 10807 bool icEqualChaOG(char c, baset* value); 10808 bool icEqualChaSmallJsonG(char c, smallJsont* value); 10809 bool icEqualChaSmallStringG(char c, smallStringt* value); 10810 bool icEqualCharOG(const char *s, baset* value); 10811 bool icEqualCharPSmallJsonG(const char *s, smallJsont* value); 10812 bool icEqualCharPSmallStringG(const char *s, smallStringt* value); 10813 bool icEqualArrayOG(char ** p1, baset* p2); 10814 bool icEqualCArrayOG(const char ** p1, baset* p2); 10815 bool icEqualArraySmallJsonG(char ** p1, smallJsont* p2); 10816 bool icEqualArraySmallArrayG(char ** p1, smallArrayt* p2); 10817 bool icEqualCArraySmallJsonG(const char ** p1, smallJsont* p2); 10818 bool icEqualCArraySmallArrayG(const char ** p1, smallArrayt* p2); 10819 bool icEqualOChaG(baset* p1, char p2); 10820 bool icEqualOCharG(baset* p1, const char * p2); 10821 bool icEqualOArrayG(baset* p1, char ** p2); 10822 bool icEqualOCArrayG(baset* p1, const char ** p2); 10823 bool icEqualOOG(baset* p1, baset* p2); 10824 bool icEqualOSmallArrayG(baset* p1, smallArrayt* p2); 10825 bool icEqualOSmallDictG(baset* p1, smallDictt* p2); 10826 bool icEqualOSmallJsonG(baset* p1, smallJsont* p2); 10827 bool icEqualOSmallStringG(baset* p1, smallStringt* p2); 10828 10829 /** 10830 * convert baset object to smallt 10831 */ 10832 smallt *toSmallt(baset *obj); 10833 10834 /** 10835 * convert smallt object to baset 10836 */ 10837 baset *toBaset(smallt *obj); 10838 10839 /** 10840 * atomic and concurent data structrures 10841 */ 10842 10843 10844 #define abool atomic_bool 10845 #define aflag atomic_flag 10846 #define ai64 atomic_int_fast64_t 10847 10848 #define aflagClear(flag) atomic_flag_clear(&(flag)) 10849 #define aflagTestNSet(flag) atomic_flag_test_and_set(&(flag)) 10850 #define aStore(obj, desired) atomic_store(&(obj), desired) 10851 #define aLoad(obj) atomic_load(&(obj)) 10852 #define aCompareExchangeStrong(obj, expected, desired) atomic_compare_exchange_strong(&(obj), &(expected), desired) 10853 #define aFetchAdd(obj, valueToAdd) atomic_fetch_add(&(obj), valueToAdd) 10854 #define aFetchSub(obj, valueToSub) atomic_fetch_sub(&(obj), valueToSub) 10855 10856 /** 10857 * atomic static array 10858 * 10859 * WARNING: According to my tests, using a spinlock slows down the execution by 100%, 10860 * something that takes 4sec with 2 thread would take 8sec with the spinlock 10861 * 10862 * this type of array has a static maximum element count (fixed) 10863 * it is used as a circular buffer, queue, fifo... 10864 * 10865 * atomic staticArray is a concurrent data structure 10866 * when the data stucture is accessed, it needs to be locked with aStaticArrayAcquire 10867 * and released with aStaticArrayRelease, the lock should be as short as possible 10868 * 10869 * there are macros specific to the atomic staticArray otherwise use the regular 10870 * staticArray macros with acquire and release around: 10871 * aStaticArrayT, aStaticArrayInit, aStaticArrayAcquire and aStaticArrayRelease 10872 * 10873 * no sanity checks are done 10874 * 10875 * Usage: 10876 * 10877 * to declare an array: 10878 * 10879 * typedef struct { 10880 * int a; 10881 * char *key; 10882 * } element; 10883 * 10884 * aStaticArrayT(typeName, element, 10); 10885 * 10886 * typeName array; 10887 * aStaticArrayInit(array); 10888 * 10889 * aStaticArrayAcquire(array); 10890 * if (!staticArrayIsFull(a)) { 10891 * staticArrayPush(array); 10892 * staticArrayLast(array).a = fork(); 10893 * } 10894 * aStaticArrayRelease(array); 10895 * 10896 * aStaticArrayAcquire(array); 10897 * if (!staticArrayIsEmpty(array)) { 10898 * val = staticArrayLast(array).a; 10899 * staticArrayPop(array); 10900 * } 10901 * aStaticArrayRelease(array); 10902 * 10903 * Array variables: 10904 * array.list: elements 10905 * array.maxCount: maximum element count allowed 10906 * 10907 * Note: some functions are macros to be able to have structs as element and 10908 * access the struct members directly, for example: 10909 * staticArrayLast(chan).a = 0; 10910 */ 10911 10912 /** 10913 * base type for atomic staticArrays 10914 */ 10915 #if (!__OpenBSD__) && ! defined(__TINYC__) && (__GNUC__ > 4) 10916 typedef struct { 10917 i64 last; // last element 10918 i64 head; 10919 i64 maxCount; 10920 bool isEmpty; 10921 /* atomic spinlock */ 10922 #if (!__OpenBSD__) 10923 aflag access; 10924 #endif 10925 } aStaticArrayBase; 10926 #endif // (!__OpenBSD__) && ! defined(__TINYC__) && (__GNUC__ > 4) 10927 10928 /** 10929 * declares type for atomic staticArray 10930 * 10931 * \param 10932 * typeName atomic staticArray type name 10933 * \param 10934 * element type of elements (int, struct, pointer...) 10935 * \pointer 10936 * MAXCOUNT array/ring buffer size 10937 */ 10938 #define aStaticArrayT(typeName, element, MAXCOUNT)\ 10939 typedef struct {\ 10940 i64 last;\ 10941 i64 head;\ 10942 i64 maxCount;\ 10943 bool isEmpty;\ 10944 /* atomic spinlock */\ 10945 aflag access;\ 10946 element list[MAXCOUNT];\ 10947 } typeName; 10948 10949 /** 10950 * initialize count in array 10951 * 10952 * \param 10953 * name variable name for the atomic staticArray 10954 */ 10955 #define aStaticArrayInit(name)\ 10956 do{\ 10957 staticArrayInit(name);\ 10958 aflagClear((name).access);\ 10959 } while(0); 10960 10961 /** 10962 * acquire access to the atomic staticArray 10963 * this is an atomic spinlock 10964 */ 10965 #define aStaticArrayAcquire(name) while(aflagTestNSet((name).access)); 10966 10967 /** 10968 * release the previously acquired atomic staticArray 10969 * clear the atomic flag in the spinlock 10970 */ 10971 #define aStaticArrayRelease(name) aflagClear((name).access); 10972 10973 /** 10974 * atomic indexer is an atomic staticArray without the list 10975 * It indexes an independent array 10976 * 10977 * atomic indexer is a concurrent data structure 10978 * when the data stucture is accessed, it needs to be locked with aIndexerAcquire 10979 * and released with aIndexerRelease, the lock should be as short as possible 10980 * 10981 * there are macros specific to the atomic indexer otherwise use the regular 10982 * indexer macros with acquire and release around: 10983 * aIndexer, aIndexerT, aIndexerInit, aIndexerAcquire and aIndexerRelease 10984 * 10985 * no sanity checks are done 10986 * 10987 * Usage: 10988 * 10989 * declare an array: 10990 * char array[10][5]; 10991 * 10992 * declare an indexer: 10993 * aIndexer indx; 10994 * 10995 * or declare an indexer with smaller counters (default is int64_t): 10996 * aIndexerT(typeName, atomic_schar); 10997 * typeName indx; 10998 * 10999 * aIndexerInit(indx, 10); 11000 * 11001 * aIndexerAcquire(indx); 11002 * indexerPush(indx); 11003 * array[indexerLast(indx)][0] = '0'; 11004 * aIndexerRelease(indx); 11005 * 11006 * // or 11007 * aIndexerAcquire(indx); 11008 * indexerPush(indx); 11009 * array[indx.last][0] = '0'; 11010 * aIndexerRelease(indx); 11011 * 11012 * aIndexerAcquire(indx); 11013 * indexerPop(indx); 11014 * aIndexerRelease(indx); 11015 * 11016 * // accessing the first/head element 11017 * 11018 * aIndexerAcquire(indx); 11019 * char c = array[indexerFirst(indx)][0]; 11020 * aIndexerRelease(indx); 11021 * 11022 * aIndexerAcquire(indx); 11023 * char c = array[indx.head][0]; 11024 * aIndexerRelease(indx); 11025 * 11026 * 11027 */ 11028 11029 /** 11030 * base type, same as staticArray 11031 */ 11032 #define aIndexer aStaticArrayBase 11033 11034 /** 11035 * declare an atomic indexer type with INT_TYPE counters instead of the default i64 11036 * INT_TYPE has to be signed integer 11037 */ 11038 #define aIndexerT(typeName, INT_TYPE)\ 11039 typedef struct {\ 11040 INT_TYPE last;\ 11041 INT_TYPE head;\ 11042 INT_TYPE maxCount;\ 11043 abool isEmpty;\ 11044 /* atomic spinlock */\ 11045 aflag access;\ 11046 } typeName; 11047 11048 /** 11049 * initialize count in atomic indexer 11050 * 11051 * \param 11052 * name variable name for the atomic indexer 11053 * \param 11054 * MAXCOUNT max count for name type 11055 */ 11056 #define aIndexerInit(name, MAXCOUNT)\ 11057 do{\ 11058 indexerInit(name, MAXCOUNT);\ 11059 aflagClear((name).access);\ 11060 } while(0); 11061 11062 /** 11063 * acquire access to the atomic indexer 11064 * this is an atomic spinlock 11065 */ 11066 #define aIndexerAcquire aStaticArrayAcquire 11067 11068 /** 11069 * release the previously acquired atomic indexer 11070 * clear the atomic flag in the spinlock 11071 */ 11072 #define aIndexerRelease aStaticArrayRelease 11073 11074 11075 /* 11076 * END - atomic and concurent data structrures 11077 */ 11078 11079 /** 11080 * return number of online CPUs, also number of threads in the thread pool 11081 */ 11082 int cpuCount(void); 11083 11084 /** 11085 * function pointer freeing the unused containers of a class in a thread 11086 */ 11087 typedef void (*recycleContainersFt)(void *arg); 11088 11089 /** 11090 * register function freeing the unused containers 11091 * a finalizeRecycle must be registered for each class in order to avoid memory leaks 11092 */ 11093 unsigned registerFinalizeRecycleContainersInThreadPool(recycleContainersFt f); 11094 11095 /** 11096 * function called automatically (registered in tpool) when a thread exits 11097 * This function calls all the registered finalizeRecycle functions 11098 */ 11099 void finalizeLibsheepyRecycleContainers(void *arg UNUSED); 11100 11101 /** 11102 * disable finalizeLibsheepy since it is called automatically at exit. 11103 */ 11104 //void finalizeLibsheepy(void); 11105 #define finalizeLibsheepy() 11106 /** 11107 * free class methods for all classes 11108 * the objects and classes are not usuable after this 11109 * an object has to be created for the class to work again 11110 * free real program path 11111 * 11112 * stop the thread pool 11113 * 11114 * finalizeLibsheepyAtExit is called automatically at exit. 11115 */ 11116 void finalizeLibsheepyAtExit(void); 11117 11118 /** 11119 * called from initLibsheepy in libsheepy.c 11120 * start the thread pool 11121 */ 11122 void initLibsheepyObject(void); 11123 void initLibsheepyObjectWithoutTpool(void); 11124 11125 #undef initLibsheepy 11126 #define initLibsheepy(progPath) initLibsheepyF(progPath, initLibsheepyObject)