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);
32 static void zero(
char *str,
size_t size);
37 static char *append(
char *dest,
const char *source);
42 static char *append(
char *dest,
const char *source,
48 static char *append(
char *dest, int64_t number);
53 static char *append(
char *dest, uint64_t number);
58 static char *append(
char *dest,
double number);
64 static char *append(
char *dest,
double number,
71 static char *append(
char *dest,
double number,
78 static char *copy(
char *dest,
const char *source);
83 static char *copy(
char *dest,
84 const char *source,
size_t size);
90 static char *copy(
char *dest,
size_t location,
97 static char *copy(
char *dest,
size_t location,
98 const char *source,
size_t size);
104 static char *safeCopy(
char *dest,
size_t destsize,
111 static char *safeCopy(
char *dest,
size_t destsize,
112 const char *source,
size_t sourcesize);
116 static int32_t compare(
const char *str1,
const char *str2);
120 static int32_t compare(
const char *str1,
const char *str2,
125 static int32_t compareIgnoringCase(
const char *str1,
131 static int32_t compareIgnoringCase(
const char *str1,
139 static bool inSet(
const char *str,
const char *
const *set);
145 static bool inSetIgnoringCase(
const char *str,
146 const char *
const *set);
150 static bool contains(
const char *haystack,
155 static bool contains(
const char *haystack,
char needle);
159 static const char *findFirst(
const char *haystack,
164 static const char *findFirst(
const char *haystack,
170 static const char *findFirstOrEnd(
const char *haystack,
176 static const char *findFirstOrEnd(
const char *haystack,
181 static const char *findLast(
const char *haystack,
186 static const char *findLast(
const char *haystack,
191 static char *findFirst(
char *haystack,
const char *needle);
195 static char *findFirst(
char *haystack,
char needle);
200 static char *findFirstOrEnd(
char *haystack,
205 static char *findLast(
char *haystack,
const char *needle);
209 static char *findLast(
char *haystack,
char needle);
214 static const char *findFirstOfSet(
const char *haystack,
220 static char *findFirstOfSet(
char *haystack,
227 static const char *findFirstOfSetOrEnd(
228 const char *haystack,
235 static char *findFirstOfSetOrEnd(
242 static size_t lengthContainingSet(
const char *haystack,
248 static size_t lengthNotContainingSet(
const char *haystack,
255 static char *duplicate(
const char *str);
262 static char *duplicate(
const char *str,
size_t length);
265 static void upper(
char *str);
268 static void lower(
char *str);
272 static void capitalize(
char *str);
275 static void rightTrim(
char *str);
279 static void rightTrim(
char *str,
char character);
282 static void leftTrim(
char *str);
286 static void leftTrim(
char *str,
char character);
289 static void bothTrim(
char *str);
292 static void bothTrim(
char *str,
char character);
297 static bool strip(
char *str,
char character);
302 static bool strip(
char *str1,
const char *str2);
307 static bool stripSet(
char *str1,
const char *set);
311 static void replace(
char *str,
312 char oldchar,
char newchar);
316 static void replace(
char *str,
317 const char *oldchars,
char newchar);
321 static uint16_t integerLength(int16_t number);
325 static uint16_t integerLength(int32_t number);
329 static uint16_t integerLength(int64_t number);
333 static uint16_t integerLength(uint16_t number);
337 static uint16_t integerLength(uint32_t number);
341 static uint16_t integerLength(uint64_t number);
345 static bool isInteger(
const char *val);
349 static bool isInteger(
const char *val, int32_t size);
353 static bool isNumber(
const char *val);
357 static bool isNumber(
const char *val, int32_t size);
362 static char *parseNumber(int16_t number);
367 static char *parseNumber(uint16_t number);
372 static char *parseNumber(int16_t number,
373 uint16_t zeropadding);
378 static char *parseNumber(uint16_t number,
379 uint16_t zeropadding);
384 static char *parseNumber(int32_t number);
389 static char *parseNumber(uint32_t number);
394 static char *parseNumber(int32_t number,
395 uint16_t zeropadding);
400 static char *parseNumber(uint32_t number,
401 uint16_t zeropadding);
406 static char *parseNumber(int64_t number);
411 static char *parseNumber(uint64_t number);
416 static char *parseNumber(int64_t number,
417 uint16_t zeropadding);
422 static char *parseNumber(uint64_t number,
423 uint16_t zeropadding);
429 static char *parseNumber(
float number);
434 static char *parseNumber(
float number,
440 static char *parseNumber(
float number,
447 static char *parseNumber(
double number);
452 static char *parseNumber(
double number,
458 static char *parseNumber(
double number,
465 static char *parseNumber(
long double number);
470 static char *parseNumber(
long double number,
476 static char *parseNumber(
long double number,
481 static int64_t toInteger(
const char *
string);
486 static int64_t toInteger(
const char *
string,
char **endptr);
489 static int64_t toInteger(
const char *
string, int32_t base);
494 static int64_t toInteger(
const char *
string,
495 char **endptr, int32_t base);
498 static uint64_t toUnsignedInteger(
const char *
string);
503 static uint64_t toUnsignedInteger(
const char *
string,
508 static uint64_t toUnsignedInteger(
const char *
string,
515 static uint64_t toUnsignedInteger(
const char *
string,
521 static long double toFloat(
const char *
string);
526 static long double toFloat(
const char *
string,
531 static int64_t convertAmount(
const char *amount);
535 static char *convertAmount(int64_t amount);
542 static char *convertAmount(int64_t amount,
549 static char *httpEscape(
const char *input);
554 static char *httpUnescape(
const char *input);
560 static char *escape(
const char *input,
561 const char *characters);
567 static char *unescape(
const char *input);
572 static void escape(
const char *input, uint64_t inputsize,
573 char **output, uint64_t *outputsize,
574 const char *characters);
579 static void unescape(
const char *input, uint64_t inputsize,
580 char **output, uint64_t *outputsize);
585 static char *base64Encode(
const unsigned char *input);
589 static char *base64Encode(
const unsigned char *input,
595 static void base64Encode(
const unsigned char *input,
598 uint64_t *outputsize);
603 static unsigned char *base64Decode(
const char *input);
607 static unsigned char *base64Decode(
const char *input,
613 static void base64Decode(
const char *input,
615 unsigned char **output,
616 uint64_t *outputsize);
619 static void obfuscate(
char *str);
623 static void deobfuscate(
char *str);
629 static void leftJustify(
char *str, int32_t length);
635 static void rightJustify(
char *str, int32_t length);
640 static void center(
char *str, int32_t length);
647 static char *pad(
const char *
string,
650 uint64_t totallength);
659 static void split(
const char *
string,
660 ssize_t stringlength,
661 const char *delimiter,
662 ssize_t delimiterlength,
665 uint64_t *listlength);
674 static void split(
const char *
string,
675 const char *delimiter,
676 ssize_t delimiterlength,
679 uint64_t *listlength);
687 static void split(
const char *
string,
688 ssize_t stringlength,
689 const char *delimiter,
692 uint64_t *listlength);
701 static void split(
const char *
string,
702 const char *delimiter,
705 uint64_t *listlength);
710 static char *subString(
const char *str,
711 size_t start,
size_t end);
716 static char *subString(
const char *str,
size_t start);
720 static char *insertString(
const char *dest,
741 static ssize_t printf(
char *buffer,
size_t length,
742 const char *format, ...);
764 static ssize_t printf(
char *buffer,
size_t length,
768 #include <rudiments/private/charstring.h>
Definition: charstring.h:16
Definition: character.h:11