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,
487 const char **endptr);
490 static int64_t toInteger(
const char *
string, int32_t base);
495 static int64_t toInteger(
const char *
string,
496 const char **endptr, int32_t base);
499 static uint64_t toUnsignedInteger(
const char *
string);
504 static uint64_t toUnsignedInteger(
const char *
string,
505 const char **endptr);
509 static uint64_t toUnsignedInteger(
const char *
string,
516 static uint64_t toUnsignedInteger(
const char *
string,
522 static long double toFloat(
const char *
string);
527 static long double toFloat(
const char *
string,
528 const char **endptr);
532 static int64_t convertAmount(
const char *amount);
536 static char *convertAmount(int64_t amount);
543 static char *convertAmount(int64_t amount,
550 static char *httpEscape(
const char *input);
555 static char *httpUnescape(
const char *input);
561 static char *escape(
const char *input,
562 const char *characters);
568 static char *unescape(
const char *input);
573 static void escape(
const char *input, uint64_t inputsize,
574 char **output, uint64_t *outputsize,
575 const char *characters);
580 static void unescape(
const char *input, uint64_t inputsize,
581 char **output, uint64_t *outputsize);
586 static char *base64Encode(
const unsigned char *input);
590 static char *base64Encode(
const unsigned char *input,
596 static void base64Encode(
const unsigned char *input,
599 uint64_t *outputsize);
604 static unsigned char *base64Decode(
const char *input);
608 static unsigned char *base64Decode(
const char *input,
614 static void base64Decode(
const char *input,
616 unsigned char **output,
617 uint64_t *outputsize);
620 static void obfuscate(
char *str);
624 static void deobfuscate(
char *str);
630 static void leftJustify(
char *str, int32_t length);
636 static void rightJustify(
char *str, int32_t length);
641 static void center(
char *str, int32_t length);
648 static char *pad(
const char *
string,
651 uint64_t totallength);
660 static void split(
const char *
string,
661 ssize_t stringlength,
662 const char *delimiter,
663 ssize_t delimiterlength,
666 uint64_t *listlength);
675 static void split(
const char *
string,
676 const char *delimiter,
677 ssize_t delimiterlength,
680 uint64_t *listlength);
688 static void split(
const char *
string,
689 ssize_t stringlength,
690 const char *delimiter,
693 uint64_t *listlength);
702 static void split(
const char *
string,
703 const char *delimiter,
706 uint64_t *listlength);
711 static char *subString(
const char *str,
712 size_t start,
size_t end);
717 static char *subString(
const char *str,
size_t start);
721 static char *insertString(
const char *dest,
742 static ssize_t printf(
char *buffer,
size_t length,
743 const char *format, ...);
765 static ssize_t printf(
char *buffer,
size_t length,
769 #include <rudiments/private/charstring.h> Definition: charstring.h:16
Definition: character.h:11