libsheepyCSmallString.h (76640B)
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 #include "string.h" 25 26 // Class smallString 27 typedef struct smallString smallStringt; 28 29 /** 30 * help text for this class 31 * It is public declaration so that child classes can add their help text easily: 32 * ret "Child help text \n\n" helpTextSmallString; 33 */ 34 #define helpTextSmallString "TODO smallString help brief, class description /*, definitions,*/ methods, examples" 35 36 // for object inheriting smallString, cast to smallString to be able to use this class functions and generics 37 #define cSt(self) ( (smallStringt*) self ) 38 39 typedef void (*freeSmallStringFt) (smallStringt *self); 40 typedef void (*terminateSmallStringFt) (smallStringt **self); 41 typedef char* (*toStringSmallStringFt) (smallStringt *self); 42 typedef smallStringt* (*duplicateSmallStringFt) (smallStringt *self); 43 44 // smallString functions 45 typedef char* (*escapeSmallStringFt) (smallStringt *self); 46 47 /** 48 * free self but not the smallString buffer 49 * 50 * Useful when smallString buffer is shared or 51 * when the buffer holds a static smallString 52 */ 53 typedef void (*smashSmallStringFt) (smallStringt **self); 54 55 /** 56 * free container 57 */ 58 typedef void (*finishSmallStringFt) (smallStringt **self); 59 60 typedef const char* (*helpSmallStringFt) (smallStringt *self); 61 62 /** 63 * get a pointer to the string in smallString 64 * 65 * \return 66 * char* 67 */ 68 typedef char* (*getSmallStringFt) (smallStringt *self); 69 70 /** 71 * set smallString 72 * 73 * \param 74 * string buffer to store in object (the buffer is duplicated) 75 */ 76 typedef smallStringt* (*setSmallStringFt) (smallStringt *self, const char *string); 77 typedef smallStringt* (*setCharSmallStringFt) (smallStringt *self, char c); 78 typedef smallStringt* (*setNFreeSmallStringFt) (smallStringt *self, char *string); 79 80 typedef smallStringt* (*setBoolSmallStringFt) (smallStringt* self, bool p2); 81 typedef smallStringt* (*setDoubleSmallStringFt) (smallStringt* self, double p2); 82 typedef smallStringt* (*setInt64SmallStringFt) (smallStringt* self, int64_t p2); 83 typedef smallStringt* (*setInt32SmallStringFt) (smallStringt* self, int32_t p2); 84 typedef smallStringt* (*setUint32SmallStringFt) (smallStringt* self, uint32_t p2); 85 typedef smallStringt* (*setUint64SmallStringFt) (smallStringt* self, uint64_t p2); 86 typedef smallStringt* (*setSmallArraySmallStringFt) (smallStringt* self, smallArrayt* p2); 87 typedef smallStringt* (*setFromSmallDictSmallStringFt)(smallStringt* self, smallDictt* p2); 88 typedef smallStringt* (*setFromSmallJsonSmallStringFt)(smallStringt* self, smallJsont* p2); 89 typedef smallStringt* (*setSmallBoolSmallStringFt) (smallStringt* self, smallBoolt* p2); 90 typedef smallStringt* (*setSmallDoubleSmallStringFt)(smallStringt* self, smallDoublet* p2); 91 typedef smallStringt* (*setSmallIntSmallStringFt) (smallStringt* self, smallIntt* p2); 92 typedef smallStringt* (*setSmallJsonSmallStringFt) (smallStringt* self, smallJsont* p2); 93 typedef smallStringt* (*setSmallStringSmallStringFt)(smallStringt* self, smallStringt* p2); 94 95 /** 96 * append smallString to self 97 * 98 * \param 99 * smallString smallString to append at the end of self 100 */ 101 typedef smallStringt* (*appendSmallStringFt) (smallStringt *self, smallStringt *string); 102 typedef smallStringt* (*appendSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 103 typedef smallStringt* (*appendSSmallStringFt) (smallStringt *self, const char *string); 104 typedef smallStringt* (*appendCharSmallStringFt) (smallStringt *self, char c); 105 typedef smallStringt* (*appendNSmashSmallStringFt) (smallStringt *self, smallStringt *string); 106 typedef smallStringt* (*appendNSmashSmallJsonSmallStringFt)(smallStringt *self, smallJsont *string); 107 typedef smallStringt* (*appendNSmashSSmallStringFt) (smallStringt *self, char *string); 108 109 /** 110 * prepend string 111 * append string at the beginning of the list 112 * when string is NULL, the operation is canceled 113 * 114 * \param 115 * string: string to prepend 116 */ 117 typedef smallStringt* (*prependSmallStringFt) (smallStringt *self, smallStringt *string); 118 typedef smallStringt* (*prependSmallJsonSmallStringFt) (smallStringt *self, smallJsont *json); 119 typedef smallStringt* (*prependSSmallStringFt) (smallStringt *self, const char *string); 120 typedef smallStringt* (*prependCharSmallStringFt) (smallStringt *self, char c); 121 typedef smallStringt* (*prependNSmashSmallStringFt) (smallStringt *self, smallStringt *string); 122 typedef smallStringt* (*prependNSmashSmallJsonSmallStringFt)(smallStringt *self, smallJsont *json); 123 typedef smallStringt* (*prependNSmashSSmallStringFt) (smallStringt *self, char *string); 124 125 /** 126 * cat string 127 * 128 * append all strings in the list to self 129 * 130 * \param 131 * arbitrary list of strings seperated by commas 132 */ 133 typedef smallStringt* (*catSmallStringFt) (smallStringt *self, ...); 134 typedef smallStringt* (*catSSmallStringFt) (smallStringt *self, ...); 135 136 /** 137 * push many strings and free 138 * 139 * \param 140 * arbitrary list of smallStringt or char* strings seperated by commas 141 */ 142 typedef smallStringt* (*pushNFreeManySmallStringFt) (smallStringt *self, ...); 143 typedef smallStringt* (*pushNFreeManySSmallStringFt)(smallStringt *self, ...); 144 145 /** 146 * replace 147 * the olds smallString is replaced with the news smallString max times in the result 148 * 0 for max means replace all olds smallStrings 149 * 150 * \param 151 * olds: old smallString to be replaced in self 152 * \param 153 * news: new smallString replacing olds in self 154 * \param 155 * max: number of times to replace olds, 0 to replace all found olds 156 * \return 157 * 0 modified self 158 * -1 s not modified when self buffer is NULL or empty and when olds is empty 159 */ 160 typedef smallStringt* (*replaceSmallStringFt) (smallStringt *self, const char *olds, const char *news, size_t max); 161 typedef smallStringt* (*replaceCharSSmallStringFt) (smallStringt *self, char olds, const char *news, size_t max); 162 typedef smallStringt* (*replaceSCharSmallStringFt) (smallStringt *self, const char *olds, char news, size_t max); 163 typedef smallStringt* (*replaceCharCharSmallStringFt) (smallStringt *self, char olds, char news, size_t max); 164 typedef smallStringt* (*replaceSmallJsonSmallJsonSmallStringFt) (smallStringt *self, smallJsont *olds, smallJsont *news, size_t max); 165 typedef smallStringt* (*replaceSmallJsonSmallStringSmallStringFt) (smallStringt *self, smallJsont *olds, smallStringt *news, size_t max); 166 typedef smallStringt* (*replaceSmallJsonSSmallStringFt) (smallStringt *self, smallJsont *olds, const char *news, size_t max); 167 typedef smallStringt* (*replaceSmallJsonCharSmallStringFt) (smallStringt *self, smallJsont *olds, char news, size_t max); 168 typedef smallStringt* (*replaceSmallStringSmallJsonSmallStringFt) (smallStringt *self, smallStringt *olds, smallJsont *news, size_t max); 169 typedef smallStringt* (*replaceSmallStringSmallStringSmallStringFt)(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max); 170 typedef smallStringt* (*replaceSmallStringSSmallStringFt) (smallStringt *self, smallStringt *olds, const char *news, size_t max); 171 typedef smallStringt* (*replaceSmallStringCharSmallStringFt) (smallStringt *self, smallStringt *olds, char news, size_t max); 172 typedef smallStringt* (*replaceSSmallJsonSmallStringFt) (smallStringt *self, const char *olds, smallJsont *news, size_t max); 173 typedef smallStringt* (*replaceSSmallStringSmallStringFt) (smallStringt *self, const char *olds, smallStringt *news, size_t max); 174 typedef smallStringt* (*replaceCharSmallJsonSmallStringFt) (smallStringt *self, char olds, smallJsont *news, size_t max); 175 typedef smallStringt* (*replaceCharSmallStringSmallStringFt) (smallStringt *self, char olds, smallStringt *news, size_t max); 176 177 /** 178 * replace Many Strings 179 * the olds string is replaced with the news string max times in the result 180 * 181 * Example: 182 * replaceMany(self, "s", "BNM", "a", "AAA") 183 * ^olds ^news ^olds ^news 184 * 185 * \param 186 * self 187 * olds: old string to be replaced in s 188 * news: new string replacing olds in s 189 * ... 190 * \return 191 * 0 modified string 192 * -1 not modified when s is empty, when s is NULL, when only 2 parameters are given, 193 * when any olds is empty 194 */ 195 typedef smallStringt* (*replaceManySmallStringFt)(smallStringt *self, const char *paramType, ...); 196 197 /** 198 * ignore case replace 199 * the olds smallString is replaced with the news smallString max times in the result 200 * 0 for max means replace all olds smallStrings 201 * 202 * \param 203 * olds: old smallString to be replaced in self 204 * \param 205 * news: new smallString replacing olds in self 206 * \param 207 * max: number of times to replace olds, 0 to replace all found olds 208 * \return 209 * 0 modified self 210 * -1 s not modified when self buffer is NULL or empty and when olds is empty 211 */ 212 typedef smallStringt* (*icReplaceSmallStringFt) (smallStringt *self, const char *olds, const char *news, size_t max); 213 typedef smallStringt* (*icReplaceCharSSmallStringFt) (smallStringt *self, char olds, const char *news, size_t max); 214 typedef smallStringt* (*icReplaceSCharSmallStringFt) (smallStringt *self, const char *olds, char news, size_t max); 215 typedef smallStringt* (*icReplaceCharCharSmallStringFt) (smallStringt *self, char olds, char news, size_t max); 216 typedef smallStringt* (*icReplaceSmallJsonSmallJsonSmallStringFt) (smallStringt *self, smallJsont *olds, smallJsont *news, size_t max); 217 typedef smallStringt* (*icReplaceSmallJsonSmallStringSmallStringFt) (smallStringt *self, smallJsont *olds, smallStringt *news, size_t max); 218 typedef smallStringt* (*icReplaceSmallJsonSSmallStringFt) (smallStringt *self, smallJsont *olds, const char *news, size_t max); 219 typedef smallStringt* (*icReplaceSmallJsonCharSmallStringFt) (smallStringt *self, smallJsont *olds, char news, size_t max); 220 typedef smallStringt* (*icReplaceSmallStringSmallJsonSmallStringFt) (smallStringt *self, smallStringt *olds, smallJsont *news, size_t max); 221 typedef smallStringt* (*icReplaceSmallStringSmallStringSmallStringFt)(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max); 222 typedef smallStringt* (*icReplaceSmallStringSSmallStringFt) (smallStringt *self, smallStringt *olds, const char *news, size_t max); 223 typedef smallStringt* (*icReplaceSmallStringCharSmallStringFt) (smallStringt *self, smallStringt *olds, char news, size_t max); 224 typedef smallStringt* (*icReplaceSSmallJsonSmallStringFt) (smallStringt *self, const char *olds, smallJsont *news, size_t max); 225 typedef smallStringt* (*icReplaceSSmallStringSmallStringFt) (smallStringt *self, const char *olds, smallStringt *news, size_t max); 226 typedef smallStringt* (*icReplaceCharSmallJsonSmallStringFt) (smallStringt *self, char olds, smallJsont *news, size_t max); 227 typedef smallStringt* (*icReplaceCharSmallStringSmallStringFt) (smallStringt *self, char olds, smallStringt *news, size_t max); 228 229 /** 230 * ignore case replace Many Strings 231 * the olds string is replaced with the news string max times in the result 232 * 233 * Example: 234 * replaceMany(self, "s", "BNM", "a", "AAA") 235 * ^olds ^news ^olds ^news 236 * 237 * \param 238 * self 239 * olds: old string to be replaced in s 240 * news: new string replacing olds in s 241 * ... 242 * \return 243 * 0 modified string 244 * -1 not modified when s is empty, when s is NULL, when only 2 parameters are given, 245 * when any olds is empty 246 */ 247 typedef smallStringt* (*icReplaceManySmallStringFt)(smallStringt *self, const char *paramType, ...); 248 249 /** 250 * equal 251 * compare self to smallString 252 * 253 * \param 254 * smallString to compare 255 * \return 256 * true the smallStrings have identical content 257 * false they differ 258 */ 259 typedef bool (*equalSmallStringFt) (smallStringt *self, smallStringt *string); 260 261 /** 262 * equal 263 * compare self to smallString 264 * 265 * \param 266 * smallString to compare 267 * \return 268 * true the smallStrings have identical content 269 * false they differ 270 */ 271 typedef bool (*equalSSmallStringFt) (smallStringt *self, const char *string); 272 typedef bool (*equalCharSmallStringFt) (smallStringt *self, char c); 273 274 typedef bool (*equalSmallStringBaseFt) (smallStringt* self, baset* p2); 275 typedef bool (*equalSmallStringBoolFt) (smallStringt* self, bool p2); 276 typedef bool (*equalSmallStringDoubleFt) (smallStringt* self, double p2); 277 typedef bool (*equalSmallStringInt64Ft) (smallStringt* self, int64_t p2); 278 typedef bool (*equalSmallStringInt32Ft) (smallStringt* self, int32_t p2); 279 typedef bool (*equalSmallStringUint32Ft) (smallStringt* self, uint32_t p2); 280 typedef bool (*equalSmallStringUint64Ft) (smallStringt* self, uint64_t p2); 281 typedef bool (*equalSmallStringSmallBoolFt)(smallStringt* self, smallBoolt* p2); 282 typedef bool (*equalSmallStringSmallBytesFt)(smallStringt* self, smallBytest* p2); 283 typedef bool (*equalSmallStringSmallDoubleFt)(smallStringt* self, smallDoublet* p2); 284 typedef bool (*equalSmallStringSmallIntFt)(smallStringt* self, smallIntt* p2); 285 typedef bool (*equalSmallStringSmallJsonFt)(smallStringt* self, smallJsont* p2); 286 287 288 /** 289 * ignore case equal 290 * compare self to smallString 291 * 292 * \param 293 * smallString to compare 294 * \return 295 * true the smallStrings have identical content 296 * false they differ 297 */ 298 typedef bool (*icEqualSmallStringFt) (smallStringt *self, smallStringt *string); 299 300 /** 301 * ignore case equal 302 * compare self to smallString 303 * 304 * \param 305 * smallString to compare 306 * \return 307 * true the smallStrings have identical content 308 * false they differ 309 */ 310 typedef bool (*icEqualSSmallStringFt) (smallStringt *self, const char *string); 311 typedef bool (*icEqualCharSmallStringFt) (smallStringt *self, char c); 312 313 typedef bool (*icEqualSmallStringBaseFt) (smallStringt* self, baset* p2); 314 typedef bool (*icEqualSmallStringSmallJsonFt)(smallStringt* self, smallJsont* p2); 315 316 /** 317 * equal at Index 318 * compare self at index to smallString 319 * 320 * \param 321 * smallString to compare 322 * \return 323 * true smallString at index is equal to string 324 * false they differ 325 */ 326 typedef bool (*equalISSmallStringFt) (smallStringt *self, const char *string, int64_t index); 327 typedef bool (*equalICharSmallStringFt) (smallStringt *self, char c, int64_t index); 328 typedef bool (*equalISmallJsonSmallStringFt) (smallStringt *self, smallJsont *string, int64_t index); 329 typedef bool (*equalISmallStringSmallStringFt)(smallStringt *self, smallStringt *string, int64_t index); 330 331 /** 332 * starts With String 333 * compare start of self with string 334 * 335 * \param 336 * string 337 * \return 338 * true when self starts with string 339 * false for other cases 340 */ 341 typedef bool (*startsWithSSmallStringFt) (smallStringt *self, const char *string); 342 typedef bool (*startsWithCharSmallStringFt) (smallStringt *self, char c); 343 typedef bool (*startsWithSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 344 typedef bool (*startsWithSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 345 346 /** 347 * ends With String 348 * compare end of self with string 349 * 350 * \param 351 * string 352 * \return 353 * true when self ends with string2 354 * false for other cases 355 */ 356 typedef bool (*endsWithSSmallStringFt) (smallStringt *self, const char *string); 357 typedef bool (*endsWithCharSmallStringFt) (smallStringt *self, char c); 358 typedef bool (*endsWithSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 359 typedef bool (*endsWithSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 360 361 /** 362 * count String 363 * count number of (non-overlapping) occurrences of a substring 364 * 365 * Example: 366 * assert(countS("aaa aaa", "a") == 6); 367 * assert(countS("aaa aaa", "ab") == 0); 368 * assert(countS("aaa aaa", "aa") == 2); 369 * 370 * \param 371 * string 372 * \return 373 * string count 374 * -1 when there is an error 375 */ 376 typedef ssize_t (*countSSmallStringFt) (smallStringt *self, const char *string); 377 typedef ssize_t (*countCharSmallStringFt) (smallStringt *self, char c); 378 typedef ssize_t (*countSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 379 typedef ssize_t (*countSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 380 381 /** 382 * ignore case starts With String 383 * compare start of self with string 384 * 385 * \param 386 * string 387 * \return 388 * true when self starts with string 389 * false for other cases 390 */ 391 typedef bool (*icStartsWithSSmallStringFt) (smallStringt *self, const char *string); 392 typedef bool (*icStartsWithCharSmallStringFt) (smallStringt *self, char c); 393 typedef bool (*icStartsWithSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 394 typedef bool (*icStartsWithSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 395 396 /** 397 * ignore case ends With String 398 * compare end of self with string 399 * 400 * \param 401 * string 402 * \return 403 * true when self ends with string2 404 * false for other cases 405 */ 406 typedef bool (*icEndsWithSSmallStringFt) (smallStringt *self, const char *string); 407 typedef bool (*icEndsWithCharSmallStringFt) (smallStringt *self, char c); 408 typedef bool (*icEndsWithSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 409 typedef bool (*icEndsWithSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 410 411 /** 412 * ignore case count String 413 * count number of (non-overlapping) occurrences of a substring 414 * 415 * Example: 416 * assert(countS("aaa aaa", "a") == 6); 417 * assert(countS("aaa aaa", "ab") == 0); 418 * assert(countS("aaa aaa", "aa") == 2); 419 * 420 * \param 421 * string 422 * \return 423 * string count 424 * -1 when there is an error 425 */ 426 typedef ssize_t (*icCountSSmallStringFt) (smallStringt *self, const char *string); 427 typedef ssize_t (*icCountCharSmallStringFt) (smallStringt *self, char c); 428 typedef ssize_t (*icCountSmallJsonSmallStringFt) (smallStringt *self, smallJsont *string); 429 typedef ssize_t (*icCountSmallStringSmallStringFt)(smallStringt *self, smallStringt *string); 430 431 /** 432 * is Number (integer or float) String 433 * 434 * 1, -12 435 * 1e+4, .44E-1 436 * 437 * \param 438 * string 439 * \return 440 * true when string is a number 441 * false when string is not a number or string is empty or NULL 442 */ 443 typedef bool (*isNumberSmallStringFt) (smallStringt *self); 444 445 /** 446 * is Integer String 447 * 448 * \param 449 * string 450 * \return 451 * true when string is an integer 452 * false when string is not an integer or string is empty or NULL 453 */ 454 typedef bool (*isIntSmallStringFt) (smallStringt *self); 455 456 /** 457 * convert self to decimal integer 458 * 459 * \return 460 * int64_t 461 * 0 when smallString represents 0 or doesnt represent a number or the input is NULL 462 * INTM64_MAX or INT64_MIN for strtoll parse errors. 463 */ 464 typedef int64_t (*parseIntSmallStringFt) (smallStringt *self); 465 466 /** 467 * convert self to double 468 * 469 * \return 470 * double 471 * 0 when smallString represents 0 or doesnt represent a number or the input is NULL 472 */ 473 typedef double (*parseDoubleSmallStringFt) (smallStringt *self); 474 475 /** 476 * int To SmallString 477 * 478 * convert int to smallString, assign result to self 479 * 480 * \param 481 * int64_t number 482 */ 483 typedef smallStringt* (*intToSmallStringFt) (smallStringt *self, int64_t n); 484 485 /** 486 * double To String 487 * 488 * convert int to string 489 * 490 * \param 491 * double number 492 */ 493 typedef smallStringt* (*doubleToSmallStringFt) (smallStringt *self, double n); 494 495 /** 496 * length 497 * \return 498 * smallString length 499 */ 500 typedef size_t (*lenSmallStringFt) (smallStringt *self); 501 502 /** 503 * upper case self 504 */ 505 typedef smallStringt* (*upperSmallStringFt) (smallStringt *self); 506 507 /** 508 * lower case self 509 */ 510 typedef smallStringt* (*lowerSmallStringFt) (smallStringt *self); 511 512 /** 513 * remove leading and trailing white spaces (spaces and tabs) in self 514 */ 515 typedef smallStringt* (*trimSmallStringFt) (smallStringt *self); 516 typedef smallStringt* (*lTrimSmallStringFt) (smallStringt *self); 517 typedef smallStringt* (*rTrimSmallStringFt) (smallStringt *self); 518 519 /** 520 * uniq String 521 * 522 * remove successive repetitions of char c 523 * 524 * \param 525 * string 526 * c character to remove 527 * \return 528 * string without successive repetitions of char c 529 * 0 ok 530 * -1 error 531 */ 532 typedef smallStringt* (*uniqSmallStringFt) (smallStringt *self, char c); 533 534 /** 535 * ignore case uniq String 536 * 537 * remove successive repetitions of char c 538 * 539 * \param 540 * string 541 * c character to remove 542 * \return 543 * string without successive repetitions of char c 544 * 0 ok 545 * -1 error 546 */ 547 typedef smallStringt* (*icUniqSmallStringFt) (smallStringt *self, char c); 548 549 /** 550 * get char at python index 551 */ 552 typedef char (*getAtSmallStringFt) (smallStringt *self, int64_t index); 553 554 /** 555 * set char at python index 556 */ 557 typedef smallStringt* (*setAtSmallStringFt) (smallStringt *self, int64_t index, char c); 558 559 /** 560 * slice self 561 * self becomes the smallString between start and end 562 * negative indexes are allowed 563 * 564 * \param 565 * start: start index, must be in the smallString 566 * \param 567 * end: end index, must be in the smallString after start 568 * \return 569 * 0 sliced smallString 570 * "" when start=end 571 * -1 unchanged smallString when start and end are not set correctly 572 */ 573 typedef smallStringt* (*sliceSmallStringFt) (smallStringt *self, int64_t start, int64_t end); 574 575 /** 576 * Crop characters from start to end 577 * return a new string with characters from start and end 578 * and delete characters from start to end in the original string 579 * negative indexes are allowed 580 * 581 * \param 582 * start index, must be in the string 583 * \param 584 * end index, must be in the string 585 * \return 586 * new sliced string (you must free (terimate) the pointer) 587 * empty list when start=end 588 * unchanged when string is empty 589 * unchanged when string is NULL or when start and end are not set correctly 590 * NULL error 591 */ 592 typedef smallStringt* (*cropSmallStringFt)(smallStringt *self, int64_t start, int64_t end); 593 typedef char* (*cropSSmallStringFt)(smallStringt *self, int64_t start, int64_t end); 594 typedef smallJsont* (*cropSmallJsonSmallStringFt)(smallStringt *self, int64_t start, int64_t end); 595 596 597 /** 598 * Crop a single character 599 * return character at index 600 * and delete character at index in the original string 601 * negative indexes are allowed 602 * 603 * \param 604 * index must be in the string 605 * \return 606 * character at index 607 * unchanged when list is empty 608 * 0 error 609 */ 610 typedef char (*cropElemSmallStringFt)(smallStringt *self, int64_t index); 611 612 613 /** 614 * copy string between start and end in a new smallString object 615 * negative indexes are allowed 616 * 617 * \param 618 * start: start index, must be in the smallString 619 * \param 620 * end: end index, must be in the smallString after start 621 * \return 622 * new sliced smallString 623 * "" when start=end 624 * NULL when start and end are not set correctly 625 */ 626 typedef smallStringt* (*copySmallStringFt) (smallStringt *self, int64_t start, int64_t end); 627 628 /** 629 * insert smallString in self at index 630 * 631 * return smallString with toInsert at index 632 * negative indexes are allowed 633 * index -1 is the end of the array and is equivalent to index len 634 * 635 * \param 636 * index in smallString 637 * \param 638 * toInsert smallString 639 * \return 640 * self smallString 641 * NULL unchanged smallString when smallString is NULL or invalid index 642 */ 643 typedef smallStringt* (*insertSmallStringFt) (smallStringt *self, int64_t index, smallStringt *toInsert); 644 typedef smallStringt* (*insertSmallJsonSmallStringFt) (smallStringt *self, int64_t index, smallJsont *toInsert); 645 typedef smallStringt* (*insertSSmallStringFt) (smallStringt *self, int64_t index, const char *toInsert); 646 typedef smallStringt* (*insertNFreeSmallStringFt) (smallStringt *self, int64_t index, smallStringt *toInsert); 647 typedef smallStringt* (*insertNFreeSmallJsonSmallStringFt)(smallStringt *self, int64_t index, smallJsont *toInsert); 648 typedef smallStringt* (*insertSNFreeSmallStringFt) (smallStringt *self, int64_t index, char *toInsert); 649 650 /** 651 * inject a char in self at index 652 * 653 * return smallString with toInject at index 654 * negative indexes are allowed 655 * index -1 is the end of the array and is equivalent to index len 656 * 657 * \param 658 * index in smallString 659 * \param 660 * toInject char 661 * \return 662 * self smallString 663 * NULL unchanged smallString when smallString is NULL or invalid index 664 */ 665 typedef smallStringt* (*injectSmallStringFt) (smallStringt *self, int64_t index, char toInject); 666 667 /** 668 * delete smallString 669 * 670 * delete the smallString between start and end in self 671 * negative indexes are allowed 672 * 673 * \param 674 * start: start index, must be in the smallString 675 * \param 676 * end: end index, must be in the smallString after start 677 * \return 678 * 0 sliced smallString 679 * unchanged smallString when start=end 680 * -1 when start and end are not set correctly 681 * or when input smallString is NULL or when malloc failed or when end is under start 682 */ 683 typedef smallStringt* (*delSmallStringFt) (smallStringt *self, int64_t start, int64_t end); 684 typedef smallStringt* (*delElemSmallStringFt) (smallStringt *self, int64_t index); 685 686 /** 687 * has SmallString 688 * 689 * \param 690 * needle: smallString to find 691 * \return 692 * pointer to first occurence of needle in smallString 693 * NULL when needle is not found 694 * NULL when smallString or needle are NULL 695 */ 696 typedef char* (*hasSmallStringFt) (smallStringt *self, const char *needle); 697 typedef char* (*hasCharSmallStringFt) (smallStringt *self, char c); 698 typedef char* (*hasSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 699 typedef char* (*hasSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 700 701 /** 702 * find SmallString 703 * 704 * \param 705 * needle: smallString to find 706 * \return 707 * new smallStringt smallString of first occurence of needle in smallString 708 * NULL when needle is not found 709 * NULL when smallString or needle are NULL 710 */ 711 typedef smallStringt* (*findSmallStringFt) (smallStringt *self, const char *needle); 712 typedef smallStringt* (*findCharSmallStringFt) (smallStringt *self, char c); 713 typedef smallStringt* (*findSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 714 typedef smallStringt* (*findSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 715 716 /** 717 * indexOf SmallString 718 * 719 * \param 720 * needle: smallString to find 721 * \return 722 * index of first occurence of needle in smallString 723 * -1 when needle is not found 724 * -1 when smallString or needle are NULL 725 */ 726 typedef ssize_t (*indexOfSmallStringFt) (smallStringt *self, const char *needle); 727 typedef ssize_t (*indexOfCharSmallStringFt) (smallStringt *self, char c); 728 typedef ssize_t (*indexOfSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 729 typedef ssize_t (*indexOfSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 730 731 /** 732 * ignore case has SmallString 733 * 734 * \param 735 * needle: smallString to find 736 * \return 737 * pointer to first occurence of needle in smallString 738 * NULL when needle is not found 739 * NULL when smallString or needle are NULL 740 */ 741 typedef char* (*icHasSmallStringFt) (smallStringt *self, const char *needle); 742 typedef char* (*icHasCharSmallStringFt) (smallStringt *self, char c); 743 typedef char* (*icHasSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 744 typedef char* (*icHasSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 745 746 /** 747 * ignore case find SmallString 748 * 749 * \param 750 * needle: smallString to find 751 * \return 752 * new smallStringt smallString of first occurence of needle in smallString 753 * NULL when needle is not found 754 * NULL when smallString or needle are NULL 755 */ 756 typedef smallStringt* (*icFindSmallStringFt) (smallStringt *self, const char *needle); 757 typedef smallStringt* (*icFindCharSmallStringFt) (smallStringt *self, char c); 758 typedef smallStringt* (*icFindSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 759 typedef smallStringt* (*icFindSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 760 761 /** 762 * ignore case indexOf SmallString 763 * 764 * \param 765 * needle: smallString to find 766 * \return 767 * index of first occurence of needle in smallString 768 * -1 when needle is not found 769 * -1 when smallString or needle are NULL 770 */ 771 typedef ssize_t (*icIndexOfSmallStringFt) (smallStringt *self, const char *needle); 772 typedef ssize_t (*icIndexOfCharSmallStringFt) (smallStringt *self, char c); 773 typedef ssize_t (*icIndexOfSmallJsonSmallStringFt) (smallStringt *self, smallJsont *needle); 774 typedef ssize_t (*icIndexOfSmallStringSmallStringFt)(smallStringt *self, smallStringt *needle); 775 776 /** 777 * empty self 778 * 779 * free self and set empty smallString 780 */ 781 typedef smallStringt* (*emptySmallStringFt) (smallStringt *self); 782 783 /** 784 * is Empty SmallString 785 * 786 * \return 787 * false when there are characters in the smallString 788 * true when smallString is empty 789 * true when smallString is NULL 790 */ 791 typedef bool (*isEmptySmallStringFt) (smallStringt *self); 792 793 /** 794 * is Blank SmallString 795 * 796 * \return 797 * false when there are non white space characters in the smallString 798 * true when there are only white spaces in the smallString 799 * true when smallString is empty 800 * true when smallString is NULL 801 */ 802 typedef bool (*isBlankSmallStringFt) (smallStringt *self); 803 804 /** 805 * split self with delim smallString 806 * return smallStringArray 807 * 808 * \param 809 * delim delimiter 810 * \return 811 * list of tokens 812 * NULL when list or delim are NULL 813 */ 814 typedef smallArrayt* (*splitSmallStringFt) (smallStringt *self, const char *delim); 815 typedef smallArrayt* (*splitCharSmallStringFt) (smallStringt *self, char c); 816 typedef smallArrayt* (*splitSmallJsonSmallStringFt) (smallStringt *self, smallJsont *delim); 817 typedef smallArrayt* (*splitSmallStringSmallStringFt)(smallStringt *self, smallStringt *delim); 818 819 /** 820 * split self with delim smallString 821 * return list 822 * 823 * \param 824 * delim delimiter 825 * \return 826 * list of tokens 827 * NULL when list or delim are NULL 828 */ 829 typedef char** (*splitSSmallStringFt) (smallStringt *self, const char *delim); 830 typedef char** (*splitCharSSmallStringFt) (smallStringt *self, char c); 831 typedef char** (*splitSmallJsonSSmallStringFt) (smallStringt *self, smallJsont *delim); 832 typedef char** (*splitSmallStringSSmallStringFt)(smallStringt *self, smallStringt *delim); 833 834 /** 835 * extract string between delim1 and delim2 strings 836 * return list 837 * 838 * \param 839 * string to split 840 * delim1 first delimiter 841 * delim2 second delimiter, has to be different from delim1 842 * \return 843 * list of tokens 844 * NULL when list or delim are NULL 845 */ 846 typedef smallArrayt* (*extractSmallStringFt) (smallStringt *self, const char* delim1, const char* delim2); 847 typedef smallArrayt* (*extractCharSSmallStringFt) (smallStringt *self, char delim1, const char* delim2); 848 typedef smallArrayt* (*extractSCharSmallStringFt) (smallStringt *self, const char* delim1, char delim2); 849 typedef smallArrayt* (*extractCharCharSmallStringFt)(smallStringt *self, char delim1, char delim2); 850 typedef smallArrayt* (*extractSmallJsonSmallJsonSmallStringFt) (smallStringt *self, smallJsont* delim1, smallJsont* delim2); 851 typedef smallArrayt* (*extractSmallJsonSmallStringSmallStringFt) (smallStringt *self, smallJsont* delim1, smallStringt* delim2); 852 typedef smallArrayt* (*extractSmallJsonSSmallStringFt) (smallStringt *self, smallJsont* delim1, const char* delim2); 853 typedef smallArrayt* (*extractSmallJsonCharSmallStringFt) (smallStringt *self, smallJsont* delim1, char delim2); 854 typedef smallArrayt* (*extractSmallStringSmallJsonSmallStringFt) (smallStringt *self, smallStringt* delim1, smallJsont* delim2); 855 typedef smallArrayt* (*extractSmallStringSmallStringSmallStringFt)(smallStringt *self, smallStringt* delim1, smallStringt* delim2); 856 typedef smallArrayt* (*extractSmallStringSSmallStringFt) (smallStringt *self, smallStringt* delim1, const char* delim2); 857 typedef smallArrayt* (*extractSmallStringCharSmallStringFt) (smallStringt *self, smallStringt* delim1, char delim2); 858 typedef smallArrayt* (*extractSSmallJsonSmallStringFt) (smallStringt *self, const char* delim1, smallJsont* delim2); 859 typedef smallArrayt* (*extractSSmallStringSmallStringFt) (smallStringt *self, const char* delim1, smallStringt* delim2); 860 typedef smallArrayt* (*extractCharSmallJsonSmallStringFt) (smallStringt *self, char delim1, smallJsont* delim2); 861 typedef smallArrayt* (*extractCharSmallStringSmallStringFt) (smallStringt *self, char delim1, smallStringt* delim2); 862 863 /** 864 * ignore case split self with delim smallString 865 * return smallStringArray 866 * 867 * \param 868 * delim delimiter 869 * \return 870 * list of tokens 871 * NULL when list or delim are NULL 872 */ 873 typedef smallArrayt* (*icSplitSmallStringFt) (smallStringt *self, const char *delim); 874 typedef smallArrayt* (*icSplitCharSmallStringFt) (smallStringt *self, char c); 875 typedef smallArrayt* (*icSplitSmallJsonSmallStringFt) (smallStringt *self, smallJsont *delim); 876 typedef smallArrayt* (*icSplitSmallStringSmallStringFt)(smallStringt *self, smallStringt *delim); 877 878 /** 879 * ignore case split self with delim smallString 880 * return list 881 * 882 * \param 883 * delim delimiter 884 * \return 885 * list of tokens 886 * NULL when list or delim are NULL 887 */ 888 typedef char** (*icSplitSSmallStringFt) (smallStringt *self, const char *delim); 889 typedef char** (*icSplitCharSSmallStringFt) (smallStringt *self, char c); 890 typedef char** (*icSplitSmallJsonSSmallStringFt) (smallStringt *self, smallJsont *delim); 891 typedef char** (*icSplitSmallStringSSmallStringFt)(smallStringt *self, smallStringt *delim); 892 893 /** 894 * ignore case extract string between delim1 and delim2 strings 895 * return list 896 * 897 * \param 898 * string to split 899 * delim1 first delimiter 900 * delim2 second delimiter, has to be different from delim1 901 * \return 902 * list of tokens 903 * NULL when list or delim are NULL 904 */ 905 typedef smallArrayt* (*icExtractSmallStringFt) (smallStringt *self, const char* delim1, const char* delim2); 906 typedef smallArrayt* (*icExtractCharSSmallStringFt) (smallStringt *self, char delim1, const char* delim2); 907 typedef smallArrayt* (*icExtractSCharSmallStringFt) (smallStringt *self, const char* delim1, char delim2); 908 typedef smallArrayt* (*icExtractCharCharSmallStringFt)(smallStringt *self, char delim1, char delim2); 909 typedef smallArrayt* (*icExtractSmallJsonSmallJsonSmallStringFt) (smallStringt *self, smallJsont* delim1, smallJsont* delim2); 910 typedef smallArrayt* (*icExtractSmallJsonSmallStringSmallStringFt) (smallStringt *self, smallJsont* delim1, smallStringt* delim2); 911 typedef smallArrayt* (*icExtractSmallJsonSSmallStringFt) (smallStringt *self, smallJsont* delim1, const char* delim2); 912 typedef smallArrayt* (*icExtractSmallJsonCharSmallStringFt) (smallStringt *self, smallJsont* delim1, char delim2); 913 typedef smallArrayt* (*icExtractSmallStringSmallJsonSmallStringFt) (smallStringt *self, smallStringt* delim1, smallJsont* delim2); 914 typedef smallArrayt* (*icExtractSmallStringSmallStringSmallStringFt)(smallStringt *self, smallStringt* delim1, smallStringt* delim2); 915 typedef smallArrayt* (*icExtractSmallStringSSmallStringFt) (smallStringt *self, smallStringt* delim1, const char* delim2); 916 typedef smallArrayt* (*icExtractSmallStringCharSmallStringFt) (smallStringt *self, smallStringt* delim1, char delim2); 917 typedef smallArrayt* (*icExtractSSmallJsonSmallStringFt) (smallStringt *self, const char* delim1, smallJsont* delim2); 918 typedef smallArrayt* (*icExtractSSmallStringSmallStringFt) (smallStringt *self, const char* delim1, smallStringt* delim2); 919 typedef smallArrayt* (*icExtractCharSmallJsonSmallStringFt) (smallStringt *self, char delim1, smallJsont* delim2); 920 typedef smallArrayt* (*icExtractCharSmallStringSmallStringFt) (smallStringt *self, char delim1, smallStringt* delim2); 921 922 /** 923 * color self for terminal 924 * 925 * Use the color/effect defines in this file for the color parameter. 926 * Effects and colors can be combined. 927 * 928 * \param 929 * color color/effect code 930 */ 931 typedef smallStringt* (*colorSmallStringFt) (smallStringt *self, const char *colr); 932 933 /** 934 * color self for terminal 935 * 936 * Use the color/effect defines in this file for the color parameter. 937 * Effects and colors can be combined. 938 * 939 * \param 940 * color color/effect code 941 * \return 942 * duplicated self with colors 943 */ 944 typedef char* (*colordSmallStringFt) (smallStringt *self, const char *color); 945 946 /** 947 * read file to string 948 * 949 * 0 is added at the end to terminate the string 950 * 951 * \param 952 * filePath: path to file 953 * \return 954 * 0 data in file 955 * -1 an error occured 956 */ 957 typedef smallStringt* (*readFileSmallStringFt)(smallStringt *self, const char *filePath); 958 typedef smallStringt* (*readFileSmallJsonSmallStringFt)(smallStringt *self, smallJsont *filePath); 959 typedef smallStringt* (*readFileSmallStringSmallStringFt)(smallStringt *self, smallStringt *filePath); 960 typedef smallStringt* (*readStreamSmallStringFt)(smallStringt *self, FILE *fp); 961 962 /** 963 * write string to file 964 * 965 * \param 966 * filePath path to file 967 * string 968 * \return 969 * 1 success 970 * 0 error 971 */ 972 typedef int (*writeFileSmallStringFt)(smallStringt *self, const char *filePath); 973 typedef int (*writeFileSmallJsonSmallStringFt)(smallStringt *self, smallJsont *filePath); 974 typedef int (*writeFileSmallStringSmallStringFt)(smallStringt *self, smallStringt *filePath); 975 typedef int (*writeStreamSmallStringFt)(smallStringt *self, FILE *fp); 976 977 /** 978 * append string to filePath 979 * 980 * \param 981 * filePath 982 * list 983 * \return 984 * true success 985 * false failed, filePath or string are NULL 986 */ 987 typedef int (*appendFileSmallStringFt)(smallStringt *self, const char *filePath); 988 typedef int (*appendFileSmallStringSmallStringFt)(smallStringt *self, smallStringt *filePath); 989 990 /** 991 * class functions 992 * allocated once for all objects 993 * 994 * freed with finalizeSmallString or finalizeLibsheepy 995 */ 996 997 /** 998 * use this define in child classes and add the new function after this class functions 999 * 1000 * in this define, add the methods after <finishClassTemplateFt finish;> 1001 * 1002 * Example: 1003 * #define RINGFUNCTIONST \ 1004 * CLASSTEMPLATEFUNCTIONST; \ 1005 * setSizeRingFt setSize 1006 */ 1007 #define SMALLSTRINGFUNCTIONST \ 1008 helpSmallStringFt help;\ 1009 escapeSmallStringFt escape;\ 1010 getSmallStringFt get;\ 1011 setSmallStringFt set;\ 1012 setBoolSmallStringFt setBool;\ 1013 setDoubleSmallStringFt setDouble;\ 1014 setInt64SmallStringFt setInt64;\ 1015 setInt32SmallStringFt setInt32;\ 1016 setUint32SmallStringFt setUint32;\ 1017 setUint64SmallStringFt setUint64;\ 1018 setSmallArraySmallStringFt setSmallArray;\ 1019 setCharSmallStringFt setChar;\ 1020 setFromSmallDictSmallStringFt setFromSmallDict;\ 1021 setFromSmallJsonSmallStringFt setFromSmallJson;\ 1022 setSmallBoolSmallStringFt setSmallBool;\ 1023 setSmallDoubleSmallStringFt setSmallDouble;\ 1024 setSmallIntSmallStringFt setSmallInt;\ 1025 setSmallJsonSmallStringFt setSmallJson;\ 1026 setSmallStringSmallStringFt setSmallString;\ 1027 setNFreeSmallStringFt setNFree;\ 1028 appendSmallStringFt append;\ 1029 appendSmallJsonSmallStringFt appendSmallJson;\ 1030 appendSSmallStringFt appendS;\ 1031 appendNSmashSmallStringFt appendNSmash;\ 1032 appendNSmashSmallJsonSmallStringFt appendNSmashSmallJson;\ 1033 appendNSmashSSmallStringFt appendNSmashS;\ 1034 appendCharSmallStringFt appendChar;\ 1035 appendSSmallStringFt push;\ 1036 catSmallStringFt pushMany;\ 1037 catSSmallStringFt pushManyS;\ 1038 pushNFreeManySmallStringFt pushNFreeMany;\ 1039 pushNFreeManySSmallStringFt pushNFreeManyS;\ 1040 prependSmallStringFt prepend;\ 1041 prependSmallJsonSmallStringFt prependSmallJson;\ 1042 prependSSmallStringFt prependS;\ 1043 prependCharSmallStringFt prependChar;\ 1044 prependNSmashSmallStringFt prependNSmash;\ 1045 prependNSmashSmallJsonSmallStringFt prependNSmashSmallJson;\ 1046 prependNSmashSSmallStringFt prependNSmashS;\ 1047 catSmallStringFt cat;\ 1048 catSSmallStringFt catSt;\ 1049 replaceSmallStringFt replace;\ 1050 replaceCharSSmallStringFt replaceCharS;\ 1051 replaceSCharSmallStringFt replaceSChar;\ 1052 replaceCharCharSmallStringFt replaceCharChar;\ 1053 replaceSmallJsonSmallJsonSmallStringFt replaceSmallJsonSmallJson;\ 1054 replaceSmallJsonSmallStringSmallStringFt replaceSmallJsonSmallString;\ 1055 replaceSmallJsonSSmallStringFt replaceSmallJsonS;\ 1056 replaceSmallJsonCharSmallStringFt replaceSmallJsonChar;\ 1057 replaceSmallStringSmallJsonSmallStringFt replaceSmallStringSmallJson;\ 1058 replaceSmallStringSmallStringSmallStringFt replaceSmallStringSmallString;\ 1059 replaceSmallStringSSmallStringFt replaceSmallStringS;\ 1060 replaceSmallStringCharSmallStringFt replaceSmallStringChar;\ 1061 replaceSSmallJsonSmallStringFt replaceSSmallJson;\ 1062 replaceSSmallStringSmallStringFt replaceSSmallString;\ 1063 replaceCharSmallJsonSmallStringFt replaceCharSmallJson;\ 1064 replaceCharSmallStringSmallStringFt replaceCharSmallString;\ 1065 replaceManySmallStringFt replaceMany;\ 1066 icReplaceSmallStringFt icReplace;\ 1067 icReplaceCharSSmallStringFt icReplaceCharS;\ 1068 icReplaceSCharSmallStringFt icReplaceSChar;\ 1069 icReplaceCharCharSmallStringFt icReplaceCharChar;\ 1070 icReplaceSmallJsonSmallJsonSmallStringFt icReplaceSmallJsonSmallJson;\ 1071 icReplaceSmallJsonSmallStringSmallStringFt icReplaceSmallJsonSmallString;\ 1072 icReplaceSmallJsonSSmallStringFt icReplaceSmallJsonS;\ 1073 icReplaceSmallJsonCharSmallStringFt icReplaceSmallJsonChar;\ 1074 icReplaceSmallStringSmallJsonSmallStringFt icReplaceSmallStringSmallJson;\ 1075 icReplaceSmallStringSmallStringSmallStringFt icReplaceSmallStringSmallString;\ 1076 icReplaceSmallStringSSmallStringFt icReplaceSmallStringS;\ 1077 icReplaceSmallStringCharSmallStringFt icReplaceSmallStringChar;\ 1078 icReplaceSSmallJsonSmallStringFt icReplaceSSmallJson;\ 1079 icReplaceSSmallStringSmallStringFt icReplaceSSmallString;\ 1080 icReplaceCharSmallJsonSmallStringFt icReplaceCharSmallJson;\ 1081 icReplaceCharSmallStringSmallStringFt icReplaceCharSmallString;\ 1082 icReplaceManySmallStringFt icReplaceMany;\ 1083 equalSmallStringFt equal;\ 1084 equalSSmallStringFt equalS;\ 1085 equalCharSmallStringFt equalChar;\ 1086 equalSmallStringBaseFt equalBase;\ 1087 equalSmallStringBoolFt equalBool;\ 1088 equalSmallStringDoubleFt equalDouble;\ 1089 equalSmallStringInt64Ft equalInt64;\ 1090 equalSmallStringInt32Ft equalInt32;\ 1091 equalSmallStringUint32Ft equalUint32;\ 1092 equalSmallStringUint64Ft equalUint64;\ 1093 equalSmallStringSmallBoolFt equalSmallBool;\ 1094 equalSmallStringSmallBytesFt equalSmallBytes;\ 1095 equalSmallStringSmallDoubleFt equalSmallDouble;\ 1096 equalSmallStringSmallIntFt equalSmallInt;\ 1097 equalSmallStringSmallJsonFt equalSmallJson;\ 1098 icEqualSmallStringFt icEqual;\ 1099 icEqualSSmallStringFt icEqualS;\ 1100 icEqualCharSmallStringFt icEqualChar;\ 1101 icEqualSmallStringBaseFt icEqualBase;\ 1102 icEqualSmallStringSmallJsonFt icEqualSmallJson;\ 1103 equalISSmallStringFt equalIS;\ 1104 equalICharSmallStringFt equalIChar;\ 1105 equalISmallJsonSmallStringFt equalISmallJson;\ 1106 equalISmallStringSmallStringFt equalISmallString;\ 1107 startsWithSSmallStringFt startsWithS;\ 1108 startsWithCharSmallStringFt startsWithChar;\ 1109 startsWithSmallJsonSmallStringFt startsWithSmallJson;\ 1110 startsWithSmallStringSmallStringFt startsWithSmallString;\ 1111 endsWithSSmallStringFt endsWithS;\ 1112 endsWithCharSmallStringFt endsWithChar;\ 1113 endsWithSmallJsonSmallStringFt endsWithSmallJson;\ 1114 endsWithSmallStringSmallStringFt endsWithSmallString;\ 1115 countSSmallStringFt countS;\ 1116 countCharSmallStringFt countChar;\ 1117 countSmallJsonSmallStringFt countSmallJson;\ 1118 countSmallStringSmallStringFt countSmallString;\ 1119 icStartsWithSSmallStringFt icStartsWithS;\ 1120 icStartsWithCharSmallStringFt icStartsWithChar;\ 1121 icStartsWithSmallJsonSmallStringFt icStartsWithSmallJson;\ 1122 icStartsWithSmallStringSmallStringFt icStartsWithSmallString;\ 1123 icEndsWithSSmallStringFt icEndsWithS;\ 1124 icEndsWithCharSmallStringFt icEndsWithChar;\ 1125 icEndsWithSmallJsonSmallStringFt icEndsWithSmallJson;\ 1126 icEndsWithSmallStringSmallStringFt icEndsWithSmallString;\ 1127 icCountSSmallStringFt icCountS;\ 1128 icCountCharSmallStringFt icCountChar;\ 1129 icCountSmallJsonSmallStringFt icCountSmallJson;\ 1130 icCountSmallStringSmallStringFt icCountSmallString;\ 1131 isNumberSmallStringFt isNumber;\ 1132 isIntSmallStringFt isInt;\ 1133 parseIntSmallStringFt parseInt;\ 1134 parseDoubleSmallStringFt parseDouble;\ 1135 intToSmallStringFt intTo;\ 1136 doubleToSmallStringFt doubleTo;\ 1137 lenSmallStringFt len;\ 1138 upperSmallStringFt upper;\ 1139 lowerSmallStringFt lower;\ 1140 trimSmallStringFt trim;\ 1141 lTrimSmallStringFt lTrim;\ 1142 rTrimSmallStringFt rTrim;\ 1143 uniqSmallStringFt uniq;\ 1144 icUniqSmallStringFt icUniq;\ 1145 getAtSmallStringFt getAt;\ 1146 setAtSmallStringFt setAt;\ 1147 sliceSmallStringFt slice;\ 1148 cropSmallStringFt crop;\ 1149 cropSSmallStringFt cropS;\ 1150 cropSmallJsonSmallStringFt cropSmallJson;\ 1151 cropElemSmallStringFt cropElem;\ 1152 copySmallStringFt copy;\ 1153 insertSmallStringFt insert;\ 1154 insertSmallJsonSmallStringFt insertSmallJson;\ 1155 insertSSmallStringFt insertS;\ 1156 insertNFreeSmallJsonSmallStringFt insertNFreeSmallJson;\ 1157 insertNFreeSmallStringFt insertNFree;\ 1158 insertSNFreeSmallStringFt insertSNFree;\ 1159 injectSmallStringFt inject;\ 1160 delSmallStringFt del;\ 1161 delElemSmallStringFt delElem;\ 1162 hasSmallStringFt has;\ 1163 hasCharSmallStringFt hasChar;\ 1164 hasSmallJsonSmallStringFt hasSmallJson;\ 1165 hasSmallStringSmallStringFt hasSmallString;\ 1166 findSmallStringFt find;\ 1167 findCharSmallStringFt findChar;\ 1168 findSmallJsonSmallStringFt findSmallJson;\ 1169 findSmallStringSmallStringFt findSmallString;\ 1170 indexOfSmallStringFt indexOf;\ 1171 indexOfCharSmallStringFt indexOfChar;\ 1172 indexOfSmallJsonSmallStringFt indexOfSmallJson;\ 1173 indexOfSmallStringSmallStringFt indexOfSmallString;\ 1174 icHasSmallStringFt icHas;\ 1175 icHasCharSmallStringFt icHasChar;\ 1176 icHasSmallJsonSmallStringFt icHasSmallJson;\ 1177 icHasSmallStringSmallStringFt icHasSmallString;\ 1178 icFindSmallStringFt icFind;\ 1179 icFindCharSmallStringFt icFindChar;\ 1180 icFindSmallJsonSmallStringFt icFindSmallJson;\ 1181 icFindSmallStringSmallStringFt icFindSmallString;\ 1182 icIndexOfSmallStringFt icIndexOf;\ 1183 icIndexOfCharSmallStringFt icIndexOfChar;\ 1184 icIndexOfSmallJsonSmallStringFt icIndexOfSmallJson;\ 1185 icIndexOfSmallStringSmallStringFt icIndexOfSmallString;\ 1186 emptySmallStringFt empty;\ 1187 isEmptySmallStringFt isEmpty;\ 1188 isBlankSmallStringFt isBlank;\ 1189 splitSmallStringFt split;\ 1190 splitCharSmallStringFt splitChar;\ 1191 splitSmallJsonSmallStringFt splitSmallJson;\ 1192 splitSmallStringSmallStringFt splitSmallString;\ 1193 splitSSmallStringFt splitS;\ 1194 splitCharSSmallStringFt splitCharS;\ 1195 splitSmallJsonSSmallStringFt splitSmallJsonS;\ 1196 splitSmallStringSSmallStringFt splitSmallStringS;\ 1197 extractSmallStringFt extract;\ 1198 extractCharSSmallStringFt extractCharS;\ 1199 extractSCharSmallStringFt extractSChar;\ 1200 extractCharCharSmallStringFt extractCharChar;\ 1201 extractSmallJsonSmallJsonSmallStringFt extractSmallJsonSmallJson;\ 1202 extractSmallJsonSmallStringSmallStringFt extractSmallJsonSmallString;\ 1203 extractSmallJsonSSmallStringFt extractSmallJsonS;\ 1204 extractSmallJsonCharSmallStringFt extractSmallJsonChar;\ 1205 extractSmallStringSmallJsonSmallStringFt extractSmallStringSmallJson;\ 1206 extractSmallStringSmallStringSmallStringFt extractSmallStringSmallString;\ 1207 extractSmallStringSSmallStringFt extractSmallStringS;\ 1208 extractSmallStringCharSmallStringFt extractSmallStringChar;\ 1209 extractSSmallJsonSmallStringFt extractSSmallJson;\ 1210 extractSSmallStringSmallStringFt extractSSmallString;\ 1211 extractCharSmallJsonSmallStringFt extractCharSmallJson;\ 1212 extractCharSmallStringSmallStringFt extractCharSmallString;\ 1213 icSplitSmallStringFt icSplit;\ 1214 icSplitCharSmallStringFt icSplitChar;\ 1215 icSplitSmallJsonSmallStringFt icSplitSmallJson;\ 1216 icSplitSmallStringSmallStringFt icSplitSmallString;\ 1217 icSplitSSmallStringFt icSplitS;\ 1218 icSplitCharSSmallStringFt icSplitCharS;\ 1219 icSplitSmallJsonSSmallStringFt icSplitSmallJsonS;\ 1220 icSplitSmallStringSSmallStringFt icSplitSmallStringS;\ 1221 icExtractSmallStringFt icExtract;\ 1222 icExtractCharSSmallStringFt icExtractCharS;\ 1223 icExtractSCharSmallStringFt icExtractSChar;\ 1224 icExtractCharCharSmallStringFt icExtractCharChar;\ 1225 icExtractSmallJsonSmallJsonSmallStringFt icExtractSmallJsonSmallJson;\ 1226 icExtractSmallJsonSmallStringSmallStringFt icExtractSmallJsonSmallString;\ 1227 icExtractSmallJsonSSmallStringFt icExtractSmallJsonS;\ 1228 icExtractSmallJsonCharSmallStringFt icExtractSmallJsonChar;\ 1229 icExtractSmallStringSmallJsonSmallStringFt icExtractSmallStringSmallJson;\ 1230 icExtractSmallStringSmallStringSmallStringFt icExtractSmallStringSmallString;\ 1231 icExtractSmallStringSSmallStringFt icExtractSmallStringS;\ 1232 icExtractSmallStringCharSmallStringFt icExtractSmallStringChar;\ 1233 icExtractSSmallJsonSmallStringFt icExtractSSmallJson;\ 1234 icExtractSSmallStringSmallStringFt icExtractSSmallString;\ 1235 icExtractCharSmallJsonSmallStringFt icExtractCharSmallJson;\ 1236 icExtractCharSmallStringSmallStringFt icExtractCharSmallString;\ 1237 colorSmallStringFt color;\ 1238 colordSmallStringFt colord;\ 1239 readFileSmallStringFt readFile;\ 1240 readFileSmallJsonSmallStringFt readFileSmallJson;\ 1241 readFileSmallStringSmallStringFt readFileSmallString;\ 1242 readStreamSmallStringFt readStream;\ 1243 writeFileSmallStringFt writeFile;\ 1244 writeFileSmallJsonSmallStringFt writeFileSmallJson;\ 1245 writeFileSmallStringSmallStringFt writeFileSmallString;\ 1246 writeStreamSmallStringFt writeStream;\ 1247 appendFileSmallStringFt appendFile;\ 1248 appendFileSmallStringSmallStringFt appendFileSmallString 1249 1250 typedef struct { 1251 freeSmallStringFt free; 1252 terminateSmallStringFt terminate; 1253 toStringSmallStringFt toString; 1254 duplicateSmallStringFt duplicate; 1255 smashSmallStringFt smash; 1256 finishSmallStringFt finish; 1257 SMALLSTRINGFUNCTIONST; 1258 } smallStringFunctionst; 1259 1260 /** 1261 * class 1262 */ 1263 struct smallString { 1264 const char *type; 1265 smallStringFunctionst *f; 1266 1267 // internal 1268 sStringt *data; 1269 size_t _len; 1270 }; 1271 1272 // base 1273 1274 #define createSmallString(obj) ;smallStringt obj; initiateSmallString(&obj) 1275 #define createAllocateSmallString(obj) ;smallStringt *obj; initiateAllocateSmallString(&obj) 1276 1277 void initiateSmallString(smallStringt *self); 1278 void initiateAllocateSmallString(smallStringt **self); 1279 void finalizeRecycleSmallString(void *arg UNUSED); 1280 void finalizeSmallString(void); 1281 1282 // initialize class methods, call registerMethodsSmallString from classes inheriting this class 1283 void registerMethodsSmallString(smallStringFunctionst *f); 1284 1285 smallStringt* allocSmallString(const char *string); 1286 1287 // terminate smallStringt val when it is out of scope 1288 void cleanUpSmallStringTerminateG(smallStringt **val); 1289 1290 // free smallStringt local val when it is out of scope 1291 void cleanUpSmallStringFreeLocalG(smallStringt *val); 1292 1293 // free smallStringt val when it is out of scope 1294 void cleanUpSmallStringFreeG(smallStringt **val); 1295 1296 // finish smallStringt val when it is out of scope 1297 void cleanUpSmallStringFinishG(smallStringt **val); 1298 1299 /** 1300 * declare pointer name with type smallStringt and terminate name when it is out of scope 1301 */ 1302 #define cleanSmallStringP(name) smallStringt *name CLEANUP(cleanUpSmallStringTerminateG) 1303 1304 /** 1305 * allocate smallString (pointer) and clean up when it is out of scope 1306 */ 1307 #define cleanAllocateSmallString(obj) ;cleanSmallStringP(obj); initiateAllocateSmallString(&obj) 1308 1309 /** 1310 * declare local object name with type smallStringt and free name when it is out of scope 1311 */ 1312 #define cleanSmallString(name) smallStringt name CLEANUP(cleanUpSmallStringFreeLocalG); initiateSmallString(&name) 1313 1314 /** 1315 * declare pointer name with type smallStringt and free name when it is out of scope 1316 */ 1317 #define cleanFreeSmallString(name) smallStringt *name CLEANUP(cleanUpSmallStringFreeG) 1318 1319 /** 1320 * declare pointer name with Type smallStringt and finish name when it is out of scope 1321 */ 1322 #define cleanFinishSmallStringP(name) smallStringt *name CLEANUP(cleanUpSmallStringFinishG) 1323 1324 /** 1325 * create String: f("qwd ", str," werr ", str2) 1326 * like catS, concatenate strings to a new smallString 1327 */ 1328 smallStringt* createSF(const char *paramType, ...); 1329 #define createS(...) createSF("", __VA_ARGS__, NULL) 1330 1331 smallStringt* duplicateSmallStringG (smallStringt *self); 1332 1333 void freeSmallStringG (smallStringt *self); 1334 1335 smallStringt* setBoolSmallStringG (smallStringt* self, bool p2); 1336 smallStringt* setDoubleSmallStringG (smallStringt* self, double p2); 1337 smallStringt* setInt64SmallStringG (smallStringt* self, int64_t p2); 1338 smallStringt* setInt32SmallStringG (smallStringt* self, int32_t p2); 1339 smallStringt* setUint32SmallStringG (smallStringt* self, uint32_t p2); 1340 smallStringt* setUint64SmallStringG (smallStringt* self, uint64_t p2); 1341 smallStringt* setCharSmallStringG (smallStringt *self, char c); 1342 smallStringt* setSmallStringG (smallStringt* self, const char* p2); 1343 smallStringt* setSmallArraySmallStringG (smallStringt* self, smallArrayt* p2); 1344 smallStringt* setFromSmallDictSmallStringG(smallStringt* self, smallDictt* p2); 1345 smallStringt* setFromSmallJsonSmallStringG(smallStringt* self, smallJsont* p2); 1346 smallStringt* setSmallBoolSmallStringG (smallStringt* self, smallBoolt* p2); 1347 smallStringt* setSmallDoubleSmallStringG(smallStringt* self, smallDoublet* p2); 1348 smallStringt* setSmallIntSmallStringG (smallStringt* self, smallIntt* p2); 1349 smallStringt* setSmallJsonSmallStringG (smallStringt* self, smallJsont* p2); 1350 smallStringt* setSmallStringSmallStringG(smallStringt* self, smallStringt* p2); 1351 1352 char getAtSmallStringG (smallStringt *self, char retType UNUSED, int64_t index); 1353 smallStringt* setAtSmallStringG (smallStringt *self, int64_t index, char c); 1354 1355 smallStringt* appendSmallStringG (smallStringt *self, smallStringt *string); 1356 smallStringt* appendSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1357 smallStringt* appendSSmallStringG (smallStringt *self, const char *string); 1358 smallStringt* appendCharSmallStringG (smallStringt *self, char c); 1359 smallStringt* appendNSmashSmallStringG (smallStringt *self, smallStringt *smallString); 1360 smallStringt* appendNSmashSmallJsonSmallStringG(smallStringt *self, smallJsont *string); 1361 smallStringt* appendNSmashSSmallStringG (smallStringt *self, char *string); 1362 1363 smallStringt* prependSmallStringG (smallStringt *self, smallStringt *string); 1364 smallStringt* prependSmallJsonSmallStringG(smallStringt *self, smallJsont *json); 1365 smallStringt* prependSSmallStringG (smallStringt *self, const char *string); 1366 smallStringt* prependCharSmallStringG (smallStringt *self, char c); 1367 smallStringt* prependNSmashSmallStringG(smallStringt *self, smallStringt *string); 1368 smallStringt* prependNSmashSmallJsonSmallStringG(smallStringt *self, smallJsont *json); 1369 smallStringt* prependNSmashSSmallStringG(smallStringt *self, char *string); 1370 smallStringt* replaceSmallStringG (smallStringt *self, const char *olds, const char *news, size_t max); 1371 smallStringt* replaceCharSSmallStringG (smallStringt *self, char olds, const char *news, size_t max); 1372 smallStringt* replaceSCharSmallStringG (smallStringt *self, const char *olds, char news, size_t max); 1373 smallStringt* replaceCharCharSmallStringG(smallStringt *self, char olds, char news, size_t max); 1374 smallStringt* replaceSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max); 1375 smallStringt* replaceSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max); 1376 smallStringt* replaceSmallJsonSSmallStringG(smallStringt *self, smallJsont *olds, const char *news, size_t max); 1377 smallStringt* replaceSmallJsonCharSmallStringG(smallStringt *self, smallJsont *olds, char news, size_t max); 1378 smallStringt* replaceSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max); 1379 smallStringt* replaceSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max); 1380 smallStringt* replaceSmallStringSSmallStringG(smallStringt *self, smallStringt *olds, const char *news, size_t max); 1381 smallStringt* replaceSmallStringCharSmallStringG(smallStringt *self, smallStringt *olds, char news, size_t max); 1382 smallStringt* replaceSSmallJsonSmallStringG(smallStringt *self, const char *olds, smallJsont *news, size_t max); 1383 smallStringt* replaceSSmallStringSmallStringG(smallStringt *self, const char *olds, smallStringt *news, size_t max); 1384 smallStringt* replaceCharSmallJsonSmallStringG(smallStringt *self, char olds, smallJsont *news, size_t max); 1385 smallStringt* replaceCharSmallStringSmallStringG(smallStringt *self, char olds, smallStringt *news, size_t max); 1386 smallStringt* icReplaceSmallStringG (smallStringt *self, const char *olds, const char *news, size_t max); 1387 smallStringt* icReplaceCharSSmallStringG(smallStringt *self, char olds, const char *news, size_t max); 1388 smallStringt* icReplaceSCharSmallStringG(smallStringt *self, const char *olds, char news, size_t max); 1389 smallStringt* icReplaceCharCharSmallStringG(smallStringt *self, char olds, char news, size_t max); 1390 smallStringt* icReplaceSmallJsonSmallJsonSmallStringG(smallStringt *self, smallJsont *olds, smallJsont *news, size_t max); 1391 smallStringt* icReplaceSmallJsonSmallStringSmallStringG(smallStringt *self, smallJsont *olds, smallStringt *news, size_t max); 1392 smallStringt* icReplaceSmallJsonSSmallStringG(smallStringt *self, smallJsont *olds, const char *news, size_t max); 1393 smallStringt* icReplaceSmallJsonCharSmallStringG(smallStringt *self, smallJsont *olds, char news, size_t max); 1394 smallStringt* icReplaceSmallStringSmallJsonSmallStringG(smallStringt *self, smallStringt *olds, smallJsont *news, size_t max); 1395 smallStringt* icReplaceSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt *olds, smallStringt *news, size_t max); 1396 smallStringt* icReplaceSmallStringSSmallStringG(smallStringt *self, smallStringt *olds, const char *news, size_t max); 1397 smallStringt* icReplaceSmallStringCharSmallStringG(smallStringt *self, smallStringt *olds, char news, size_t max); 1398 smallStringt* icReplaceSSmallJsonSmallStringG(smallStringt *self, const char *olds, smallJsont *news, size_t max); 1399 smallStringt* icReplaceSSmallStringSmallStringG(smallStringt *self, const char *olds, smallStringt *news, size_t max); 1400 smallStringt* icReplaceCharSmallJsonSmallStringG(smallStringt *self, char olds, smallJsont *news, size_t max); 1401 smallStringt* icReplaceCharSmallStringSmallStringG(smallStringt *self, char olds, smallStringt *news, size_t max); 1402 bool equalSmallStringBaseG (smallStringt* self, baset* p2); 1403 bool equalSmallStringBoolG (smallStringt* self, bool p2); 1404 bool equalSmallStringDoubleG (smallStringt* self, double p2); 1405 bool equalSmallStringInt64G (smallStringt* self, int64_t p2); 1406 bool equalSmallStringInt32G (smallStringt* self, int32_t p2); 1407 bool equalSmallStringUint32G (smallStringt* self, uint32_t p2); 1408 bool equalSmallStringUint64G (smallStringt* self, uint64_t p2); 1409 bool equalSmallStringSmallBoolG(smallStringt* self, smallBoolt* p2); 1410 bool equalSmallStringSmallBytesG(smallStringt* self, smallBytest* p2); 1411 bool equalSmallStringSmallDoubleG(smallStringt* self, smallDoublet* p2); 1412 bool equalSmallStringSmallIntG(smallStringt* self, smallIntt* p2); 1413 bool equalSmallStringSmallJsonG(smallStringt* self, smallJsont* p2); 1414 bool equalSmallStringFG (smallStringt* self, smallStringt* p2); 1415 bool equalCharSmallStringG (smallStringt *self, char c); 1416 bool equalSSmallStringG (smallStringt *self, const char *string); 1417 bool icEqualSmallStringBaseG (smallStringt* self, baset* p2); 1418 bool icEqualSmallStringSmallJsonG(smallStringt* self, smallJsont* p2); 1419 bool icEqualSmallStringFG (smallStringt* self, smallStringt* p2); 1420 bool icEqualCharSmallStringG (smallStringt *self, char c); 1421 bool icEqualSSmallStringG (smallStringt *self, const char *string); 1422 bool equalISSmallStringG (smallStringt *self, const char *string, int64_t index); 1423 bool equalICharSmallStringG (smallStringt *self, char c, int64_t index); 1424 bool equalISmallJsonSmallStringG(smallStringt *self, smallJsont *string, int64_t index); 1425 bool equalISmallStringSmallStringG(smallStringt *self, smallStringt *string, int64_t index); 1426 bool startsWithSSmallStringG (smallStringt *self, const char *string); 1427 bool startsWithCharSmallStringG (smallStringt *self, char c); 1428 bool startsWithSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1429 bool startsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1430 bool endsWithSSmallStringG (smallStringt *self, const char *string); 1431 bool endsWithCharSmallStringG (smallStringt *self, char c); 1432 bool endsWithSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1433 bool endsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1434 ssize_t countSSmallStringG (smallStringt *self, const char *string); 1435 ssize_t countCharSmallStringG (smallStringt *self, char c); 1436 ssize_t countSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1437 ssize_t countSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1438 bool icStartsWithSSmallStringG (smallStringt *self, const char *string); 1439 bool icStartsWithCharSmallStringG (smallStringt *self, char c); 1440 bool icStartsWithSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1441 bool icStartsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1442 bool icEndsWithSSmallStringG (smallStringt *self, const char *string); 1443 bool icEndsWithCharSmallStringG (smallStringt *self, char c); 1444 bool icEndsWithSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1445 bool icEndsWithSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1446 ssize_t icCountSSmallStringG (smallStringt *self, const char *string); 1447 ssize_t icCountCharSmallStringG (smallStringt *self, char c); 1448 ssize_t icCountSmallJsonSmallStringG (smallStringt *self, smallJsont *string); 1449 ssize_t icCountSmallStringSmallStringG(smallStringt *self, smallStringt *string); 1450 bool isNumberSmallStringG (smallStringt *self); 1451 bool isIntSmallStringG (smallStringt *self); 1452 int64_t parseIntSmallStringG (smallStringt *self); 1453 smallStringt* intToSmallStringG (smallStringt *self, int64_t n); 1454 double parseDoubleSmallStringG (smallStringt *self); 1455 smallStringt* doubleToSmallStringG (smallStringt *self, double n); 1456 size_t lenSmallStringG (smallStringt *self); 1457 smallStringt* upperSmallStringG (smallStringt *self); 1458 smallStringt* lowerSmallStringG (smallStringt *self); 1459 smallStringt* trimSmallStringG (smallStringt *self); 1460 smallStringt* lTrimSmallStringG (smallStringt *self); 1461 smallStringt* rTrimSmallStringG (smallStringt *self); 1462 smallStringt* uniqSmallStringG (smallStringt *self, char c); 1463 smallStringt* icUniqSmallStringG (smallStringt *self, char c); 1464 smallStringt* sliceSmallStringG (smallStringt *self, int64_t start, int64_t end); 1465 smallStringt* cropSmallStringG (smallStringt *self, int64_t start, int64_t end); 1466 char* cropSSmallStringG (smallStringt *self, int64_t start, int64_t end); 1467 smallJsont* cropSmallJsonSmallStringG(smallStringt *self, int64_t start, int64_t end); 1468 char cropElemSmallStringG (smallStringt *self, int64_t index); 1469 smallStringt* copySmallStringG(smallStringt *self, int64_t start, int64_t end); 1470 smallStringt* insertSmallStringG (smallStringt *self, int64_t index, smallStringt *toInsert); 1471 smallStringt* insertSmallJsonSmallStringG (smallStringt *self, int64_t index, smallJsont *toInsert); 1472 smallStringt* insertSSmallStringG (smallStringt *self, int64_t index, const char *toInsert); 1473 smallStringt* insertNFreeSmallStringG (smallStringt *self, int64_t index, smallStringt *toInsert); 1474 smallStringt* insertNFreeSmallJsonSmallStringG(smallStringt *self, int64_t index, smallJsont *toInsert); 1475 smallStringt* insertSNFreeSmallStringG (smallStringt *self, int64_t index, char *toInsert); 1476 smallStringt* injectSmallStringG (smallStringt *self, int64_t index, char toInject); 1477 smallStringt* delSmallStringG (smallStringt *self, int64_t start, int64_t end); 1478 smallStringt* delElemSmallStringG (smallStringt *self, int64_t index); 1479 char* hasSmallStringG (smallStringt *self, const char *needle); 1480 char* hasCharSmallStringG (smallStringt *self, char c); 1481 char* hasSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1482 char* hasSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1483 smallStringt* findSmallStringG (smallStringt *self, const char *needle); 1484 smallStringt* findCharSmallStringG (smallStringt *self, char c); 1485 smallStringt* findSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1486 smallStringt* findSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1487 ssize_t indexOfSmallStringG (smallStringt *self, const char *needle); 1488 ssize_t indexOfCharSmallStringG (smallStringt *self, char c); 1489 ssize_t indexOfSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1490 ssize_t indexOfSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1491 char* icHasSmallStringG (smallStringt *self, const char *needle); 1492 char* icHasCharSmallStringG (smallStringt *self, char c); 1493 char* icHasSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1494 char* icHasSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1495 smallStringt* icFindSmallStringG (smallStringt *self, const char *needle); 1496 smallStringt* icFindCharSmallStringG (smallStringt *self, char c); 1497 smallStringt* icFindSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1498 smallStringt* icFindSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1499 ssize_t icIndexOfSmallStringG (smallStringt *self, const char *needle); 1500 ssize_t icIndexOfCharSmallStringG (smallStringt *self, char c); 1501 ssize_t icIndexOfSmallJsonSmallStringG (smallStringt *self, smallJsont *needle); 1502 ssize_t icIndexOfSmallStringSmallStringG(smallStringt *self, smallStringt *needle); 1503 smallStringt* emptySmallStringG (smallStringt *self); 1504 bool isEmptySmallStringG (smallStringt *self); 1505 bool isBlankSmallStringG (smallStringt *self); 1506 smallArrayt* splitSmallStringG (smallStringt *self, const char *delim); 1507 smallArrayt* splitCharSmallStringG (smallStringt *self, char c); 1508 smallArrayt* splitSmallJsonSmallStringG (smallStringt *self, smallJsont *delim); 1509 smallArrayt* splitSmallStringSmallStringG(smallStringt *self, smallStringt *delim); 1510 char** splitCharPSSmallStringG (smallStringt *self, const char* delim); 1511 char** splitCharSSmallStringG (smallStringt *self, char c); 1512 char** splitSmallJsonSSmallStringG (smallStringt *self, smallJsont *delim); 1513 char** splitSmallStringSSmallStringG(smallStringt *self, smallStringt *delim); 1514 smallArrayt* extractSmallStringG(smallStringt *self, const char* delim1, const char* delim2); 1515 smallArrayt* extractCharSSmallStringG (smallStringt *self, char delim1, const char* delim2); 1516 smallArrayt* extractSCharSmallStringG (smallStringt *self, const char* delim1, char delim2); 1517 smallArrayt* extractCharCharSmallStringG (smallStringt *self, char delim1, char delim2); 1518 smallArrayt* extractSmallJsonSmallJsonSmallStringG (smallStringt *self, smallJsont* delim1, smallJsont* delim2); 1519 smallArrayt* extractSmallJsonSmallStringSmallStringG (smallStringt *self, smallJsont* delim1, smallStringt* delim2); 1520 smallArrayt* extractSmallJsonSSmallStringG (smallStringt *self, smallJsont* delim1, const char* delim2); 1521 smallArrayt* extractSmallJsonCharSmallStringG (smallStringt *self, smallJsont* delim1, char delim2); 1522 smallArrayt* extractSmallStringSmallJsonSmallStringG (smallStringt *self, smallStringt* delim1, smallJsont* delim2); 1523 smallArrayt* extractSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt* delim1, smallStringt* delim2); 1524 smallArrayt* extractSmallStringSSmallStringG (smallStringt *self, smallStringt* delim1, const char* delim2); 1525 smallArrayt* extractSmallStringCharSmallStringG (smallStringt *self, smallStringt* delim1, char delim2); 1526 smallArrayt* extractSSmallJsonSmallStringG (smallStringt *self, const char* delim1, smallJsont* delim2); 1527 smallArrayt* extractSSmallStringSmallStringG (smallStringt *self, const char* delim1, smallStringt* delim2); 1528 smallArrayt* extractCharSmallJsonSmallStringG (smallStringt *self, char delim1, smallJsont* delim2); 1529 smallArrayt* extractCharSmallStringSmallStringG (smallStringt *self, char delim1, smallStringt* delim2); 1530 smallArrayt* icSplitSmallStringG (smallStringt *self, const char *delim); 1531 smallArrayt* icSplitCharSmallStringG (smallStringt *self, char c); 1532 smallArrayt* icSplitSmallJsonSmallStringG (smallStringt *self, smallJsont *delim); 1533 smallArrayt* icSplitSmallStringSmallStringG(smallStringt *self, smallStringt *delim); 1534 char** icSplitCharPSSmallStringG (smallStringt *self, char *delim); 1535 char** icSplitCharSSmallStringG (smallStringt *self, char c); 1536 char** icSplitSmallJsonSSmallStringG (smallStringt *self, smallJsont *delim); 1537 char** icSplitSmallStringSSmallStringG(smallStringt *self, smallStringt *delim); 1538 smallArrayt* icExtractSmallStringG(smallStringt *self, const char* delim1, const char* delim2); 1539 smallArrayt* icExtractCharSSmallStringG (smallStringt *self, char delim1, const char* delim2); 1540 smallArrayt* icExtractSCharSmallStringG (smallStringt *self, const char* delim1, char delim2); 1541 smallArrayt* icExtractCharCharSmallStringG (smallStringt *self, char delim1, char delim2); 1542 smallArrayt* icExtractSmallJsonSmallJsonSmallStringG (smallStringt *self, smallJsont* delim1, smallJsont* delim2); 1543 smallArrayt* icExtractSmallJsonSmallStringSmallStringG (smallStringt *self, smallJsont* delim1, smallStringt* delim2); 1544 smallArrayt* icExtractSmallJsonSSmallStringG (smallStringt *self, smallJsont* delim1, const char* delim2); 1545 smallArrayt* icExtractSmallJsonCharSmallStringG (smallStringt *self, smallJsont* delim1, char delim2); 1546 smallArrayt* icExtractSmallStringSmallJsonSmallStringG (smallStringt *self, smallStringt* delim1, smallJsont* delim2); 1547 smallArrayt* icExtractSmallStringSmallStringSmallStringG(smallStringt *self, smallStringt* delim1, smallStringt* delim2); 1548 smallArrayt* icExtractSmallStringSSmallStringG (smallStringt *self, smallStringt* delim1, const char* delim2); 1549 smallArrayt* icExtractSmallStringCharSmallStringG (smallStringt *self, smallStringt* delim1, char delim2); 1550 smallArrayt* icExtractSSmallJsonSmallStringG (smallStringt *self, const char* delim1, smallJsont* delim2); 1551 smallArrayt* icExtractSSmallStringSmallStringG (smallStringt *self, const char* delim1, smallStringt* delim2); 1552 smallArrayt* icExtractCharSmallJsonSmallStringG (smallStringt *self, char delim1, smallJsont* delim2); 1553 smallArrayt* icExtractCharSmallStringSmallStringG (smallStringt *self, char delim1, smallStringt* delim2); 1554 smallStringt* readFileSmallStringG (smallStringt *self, const char *filePath); 1555 smallStringt* readFileSmallJsonSmallStringG (smallStringt *self, smallJsont *filePath); 1556 smallStringt* readFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath); 1557 smallStringt* readStreamSmallStringG (smallStringt *self, FILE *fp); 1558 int writeFileSmallStringG (smallStringt *self, const char *filePath); 1559 int writeFileSmallJsonSmallStringG (smallStringt *self, smallJsont *filePath); 1560 int writeFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath); 1561 int writeStreamSmallStringG (smallStringt *self, FILE *fp); 1562 int appendFileSmallStringFG (smallStringt *self, const char *filePath); //TODO remove F - oGMacros generates a macro making the compilation fail 1563 int appendFileSmallStringSmallStringG(smallStringt *self, smallStringt *filePath); 1564 1565 // see libsheepy.h for colors and effects 1566 // end class smallString