4 #ifndef RUDIMENTS_CHARSTRING_H 5 #define RUDIMENTS_CHARSTRING_H 7 #include <rudiments/private/charstringincludes.h> 20 static size_t length(
const char *
string);
23 static size_t length(
const unsigned char *
string);
26 static bool isNullOrEmpty(
const char *
string);
29 static bool isNullOrEmpty(
const unsigned char *
string);
38 static bool isYes(
const char *
string);
46 static bool isNo(
const char *
string);
49 static void zero(
char *str,
size_t size);
54 static char *append(
char *dest,
const char *source);
59 static char *append(
char *dest,
const char *source,
65 static char *append(
char *dest, int64_t number);
70 static char *append(
char *dest, uint64_t number);
75 static char *append(
char *dest,
double number);
81 static char *append(
char *dest,
double number,
88 static char *append(
char *dest,
double number,
95 static char *copy(
char *dest,
const char *source);
100 static char *copy(
char *dest,
101 const char *source,
size_t size);
107 static char *copy(
char *dest,
size_t location,
114 static char *copy(
char *dest,
size_t location,
115 const char *source,
size_t size);
121 static char *safeCopy(
char *dest,
size_t destsize,
128 static char *safeCopy(
char *dest,
size_t destsize,
129 const char *source,
size_t sourcesize);
133 static int32_t compare(
const char *str1,
const char *str2);
137 static int32_t compare(
const char *str1,
const char *str2,
142 static int32_t compareIgnoringCase(
const char *str1,
148 static int32_t compareIgnoringCase(
const char *str1,
156 static bool inSet(
const char *str,
const char *
const *set);
162 static bool inSetIgnoringCase(
const char *str,
163 const char *
const *set);
167 static bool contains(
const char *haystack,
172 static bool contains(
const char *haystack,
char needle);
176 static const char *findFirst(
const char *haystack,
181 static const char *findFirst(
const char *haystack,
187 static const char *findFirstOrEnd(
const char *haystack,
193 static const char *findFirstOrEnd(
const char *haystack,
198 static const char *findLast(
const char *haystack,
203 static const char *findLast(
const char *haystack,
208 static char *findFirst(
char *haystack,
const char *needle);
212 static char *findFirst(
char *haystack,
char needle);
217 static char *findFirstOrEnd(
char *haystack,
222 static char *findLast(
char *haystack,
const char *needle);
226 static char *findLast(
char *haystack,
char needle);
231 static const char *findFirstOfSet(
const char *haystack,
237 static char *findFirstOfSet(
char *haystack,
244 static const char *findFirstOfSetOrEnd(
245 const char *haystack,
252 static char *findFirstOfSetOrEnd(
259 static const char *findLastOfSet(
const char *haystack,
265 static char *findLastOfSet(
char *haystack,
272 static const char *findLastOfSetOrEnd(
273 const char *haystack,
280 static char *findLastOfSetOrEnd(
288 static char *before(
const char *str,
289 const char *delimiter);
295 static char *between(
const char *str,
304 static char *after(
const char *str,
305 const char *delimiter);
310 static size_t lengthContainingSet(
const char *haystack,
316 static size_t lengthNotContainingSet(
const char *haystack,
323 static char *duplicate(
const char *str);
330 static char *duplicate(
const char *str,
size_t length);
333 static void upper(
char *str);
336 static void lower(
char *str);
340 static void capitalize(
char *str);
343 static void rightTrim(
char *str);
347 static void rightTrim(
char *str,
char character);
350 static void leftTrim(
char *str);
354 static void leftTrim(
char *str,
char character);
357 static void bothTrim(
char *str);
360 static void bothTrim(
char *str,
char character);
365 static bool strip(
char *str,
char character);
370 static bool strip(
char *str1,
const char *str2);
375 static bool stripSet(
char *str1,
const char *set);
379 static void replace(
char *str,
380 char oldchar,
char newchar);
384 static void replace(
char *str,
385 const char *oldchars,
char newchar);
390 static char *replace(
const char *str,
400 static char *replace(
const char *str,
401 const char *
const *oldstrset,
403 const char *
const *newstrset);
411 static char *replace(
const char *str,
418 static uint16_t integerLength(int16_t number);
422 static uint16_t integerLength(int32_t number);
426 static uint16_t integerLength(int64_t number);
430 static uint16_t integerLength(uint16_t number);
434 static uint16_t integerLength(uint32_t number);
438 static uint16_t integerLength(uint64_t number);
442 static bool isInteger(
const char *val);
446 static bool isInteger(
const char *val, int32_t size);
450 static bool isNumber(
const char *val);
454 static bool isNumber(
const char *val, int32_t size);
459 static char *parseNumber(int16_t number);
464 static char *parseNumber(uint16_t number);
469 static char *parseNumber(int16_t number,
470 uint16_t zeropadding);
475 static char *parseNumber(uint16_t number,
476 uint16_t zeropadding);
481 static char *parseNumber(int32_t number);
486 static char *parseNumber(uint32_t number);
491 static char *parseNumber(int32_t number,
492 uint16_t zeropadding);
497 static char *parseNumber(uint32_t number,
498 uint16_t zeropadding);
503 static char *parseNumber(int64_t number);
508 static char *parseNumber(uint64_t number);
513 static char *parseNumber(int64_t number,
514 uint16_t zeropadding);
519 static char *parseNumber(uint64_t number,
520 uint16_t zeropadding);
526 static char *parseNumber(
float number);
531 static char *parseNumber(
float number,
537 static char *parseNumber(
float number,
544 static char *parseNumber(
double number);
549 static char *parseNumber(
double number,
555 static char *parseNumber(
double number,
562 static char *parseNumber(
long double number);
567 static char *parseNumber(
long double number,
573 static char *parseNumber(
long double number,
578 static int64_t toInteger(
const char *
string);
583 static int64_t toInteger(
const char *
string,
584 const char **endptr);
587 static int64_t toInteger(
const char *
string, int32_t base);
592 static int64_t toInteger(
const char *
string,
593 const char **endptr, int32_t base);
596 static uint64_t toUnsignedInteger(
const char *
string);
601 static uint64_t toUnsignedInteger(
const char *
string,
602 const char **endptr);
606 static uint64_t toUnsignedInteger(
const char *
string,
613 static uint64_t toUnsignedInteger(
const char *
string,
619 static long double toFloat(
const char *
string);
631 static long double toFloatC(
const char *
string);
636 static long double toFloat(
const char *
string,
637 const char **endptr);
641 static int64_t convertAmount(
const char *amount);
645 static char *convertAmount(int64_t amount);
652 static char *convertAmount(int64_t amount,
659 static char *httpEscape(
const char *
input);
664 static char *httpUnescape(
const char *
input);
670 static char *escape(
const char *
input,
671 const char *characters);
677 static char *unescape(
const char *
input);
682 static void escape(
const char *
input, uint64_t inputsize,
683 char **
output, uint64_t *outputsize,
684 const char *characters);
689 static void unescape(
const char *
input, uint64_t inputsize,
690 char **
output, uint64_t *outputsize);
695 static char *base64Encode(
const unsigned char *
input);
699 static char *base64Encode(
const unsigned char *
input,
705 static void base64Encode(
const unsigned char *
input,
708 uint64_t *outputsize);
713 static unsigned char *base64Decode(
const char *
input);
717 static unsigned char *base64Decode(
const char *
input,
723 static void base64Decode(
const char *
input,
726 uint64_t *outputsize);
731 static char *hexEncode(
const unsigned char *
input);
735 static char *hexEncode(
const unsigned char *
input,
741 static void hexEncode(
const unsigned char *
input,
744 uint64_t *outputsize);
749 static unsigned char *hexDecode(
const char *
input);
753 static unsigned char *hexDecode(
const char *
input,
759 static void hexDecode(
const char *
input,
762 uint64_t *outputsize);
765 static void obfuscate(
char *str);
769 static void deobfuscate(
char *str);
775 static void leftJustify(
char *str, int32_t length);
781 static void rightJustify(
char *str, int32_t length);
786 static void center(
char *str, int32_t length);
793 static char *pad(
const char *
string,
796 uint64_t totallength);
805 static void split(
const char *
string,
806 ssize_t stringlength,
807 const char *delimiter,
808 ssize_t delimiterlength,
811 uint64_t *listlength);
820 static void split(
const char *
string,
821 const char *delimiter,
822 ssize_t delimiterlength,
825 uint64_t *listlength);
833 static void split(
const char *
string,
834 ssize_t stringlength,
835 const char *delimiter,
838 uint64_t *listlength);
847 static void split(
const char *
string,
848 const char *delimiter,
851 uint64_t *listlength);
856 static char *subString(
const char *str,
857 size_t start,
size_t end);
862 static char *subString(
const char *str,
size_t start);
866 static char *insertString(
const char *dest,
887 static ssize_t printf(
char *buffer,
size_t length,
888 const char *format, ...);
910 static ssize_t printf(
char *buffer,
size_t length,
925 static ssize_t printf(
char **buffer,
926 const char *format, ...);
939 static ssize_t printf(
char **buffer,
943 #include <rudiments/private/charstring.h> Definition: charstring.h:16
Definition: character.h:11
Definition: regularexpression.h:14