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 void zero(
char *str,
size_t size);
31 static char *append(
char *dest,
const char *source);
36 static char *append(
char *dest,
const char *source,
42 static char *append(
char *dest, int64_t number);
47 static char *append(
char *dest, uint64_t number);
52 static char *append(
char *dest,
double number);
58 static char *append(
char *dest,
double number,
65 static char *append(
char *dest,
double number,
72 static char *copy(
char *dest,
const char *source);
77 static char *copy(
char *dest,
78 const char *source,
size_t size);
84 static char *copy(
char *dest,
size_t location,
91 static char *copy(
char *dest,
size_t location,
92 const char *source,
size_t size);
98 static char *safeCopy(
char *dest,
size_t destsize,
105 static char *safeCopy(
char *dest,
size_t destsize,
106 const char *source,
size_t sourcesize);
110 static int32_t compare(
const char *str1,
const char *str2);
114 static int32_t compare(
const char *str1,
const char *str2,
119 static int32_t compareIgnoringCase(
const char *str1,
125 static int32_t compareIgnoringCase(
const char *str1,
133 static bool inSet(
const char *str,
const char *
const *set);
139 static bool inSetIgnoringCase(
const char *str,
140 const char *
const *set);
144 static bool contains(
const char *haystack,
149 static bool contains(
const char *haystack,
char needle);
153 static const char *findFirst(
const char *haystack,
158 static const char *findFirst(
const char *haystack,
164 static const char *findFirstOrEnd(
const char *haystack,
170 static const char *findFirstOrEnd(
const char *haystack,
175 static const char *findLast(
const char *haystack,
180 static const char *findLast(
const char *haystack,
185 static char *findFirst(
char *haystack,
const char *needle);
189 static char *findFirst(
char *haystack,
char needle);
194 static char *findFirstOrEnd(
char *haystack,
199 static char *findLast(
char *haystack,
const char *needle);
203 static char *findLast(
char *haystack,
char needle);
208 static const char *findFirstOfSet(
const char *haystack,
214 static char *findFirstOfSet(
char *haystack,
221 static const char *findFirstOfSetOrEnd(
222 const char *haystack,
229 static char *findFirstOfSetOrEnd(
236 static size_t lengthContainingSet(
const char *haystack,
242 static size_t lengthNotContainingSet(
const char *haystack,
249 static char *duplicate(
const char *str);
256 static char *duplicate(
const char *str,
size_t length);
259 static void upper(
char *str);
262 static void lower(
char *str);
266 static void capitalize(
char *str);
269 static void rightTrim(
char *str);
273 static void rightTrim(
char *str,
char character);
276 static void leftTrim(
char *str);
280 static void leftTrim(
char *str,
char character);
283 static void bothTrim(
char *str);
286 static void bothTrim(
char *str,
char character);
291 static bool strip(
char *str,
char character);
296 static bool strip(
char *str1,
const char *str2);
301 static bool stripSet(
char *str1,
const char *set);
305 static void replace(
char *str,
306 char oldchar,
char newchar);
310 static void replace(
char *str,
311 const char *oldchars,
char newchar);
315 static uint16_t integerLength(int16_t number);
319 static uint16_t integerLength(int32_t number);
323 static uint16_t integerLength(int64_t number);
327 static uint16_t integerLength(uint16_t number);
331 static uint16_t integerLength(uint32_t number);
335 static uint16_t integerLength(uint64_t number);
339 static bool isInteger(
const char *val);
343 static bool isInteger(
const char *val, int32_t size);
347 static bool isNumber(
const char *val);
351 static bool isNumber(
const char *val, int32_t size);
356 static char *parseNumber(int16_t number);
361 static char *parseNumber(uint16_t number);
366 static char *parseNumber(int16_t number,
367 uint16_t zeropadding);
372 static char *parseNumber(uint16_t number,
373 uint16_t zeropadding);
378 static char *parseNumber(int32_t number);
383 static char *parseNumber(uint32_t number);
388 static char *parseNumber(int32_t number,
389 uint16_t zeropadding);
394 static char *parseNumber(uint32_t number,
395 uint16_t zeropadding);
400 static char *parseNumber(int64_t number);
405 static char *parseNumber(uint64_t number);
410 static char *parseNumber(int64_t number,
411 uint16_t zeropadding);
416 static char *parseNumber(uint64_t number,
417 uint16_t zeropadding);
423 static char *parseNumber(
float number);
428 static char *parseNumber(
float number,
434 static char *parseNumber(
float number,
441 static char *parseNumber(
double number);
446 static char *parseNumber(
double number,
452 static char *parseNumber(
double number,
459 static char *parseNumber(
long double number);
464 static char *parseNumber(
long double number,
470 static char *parseNumber(
long double number,
475 static int64_t toInteger(
const char *
string);
480 static int64_t toInteger(
const char *
string,
char **endptr);
483 static int64_t toInteger(
const char *
string, int32_t base);
488 static int64_t toInteger(
const char *
string,
489 char **endptr, int32_t base);
492 static uint64_t toUnsignedInteger(
const char *
string);
497 static uint64_t toUnsignedInteger(
const char *
string,
502 static uint64_t toUnsignedInteger(
const char *
string,
509 static uint64_t toUnsignedInteger(
const char *
string,
515 static long double toFloat(
const char *
string);
520 static long double toFloat(
const char *
string,
525 static int64_t convertAmount(
const char *amount);
529 static char *convertAmount(int64_t amount);
536 static char *convertAmount(int64_t amount,
543 static char *httpEscape(
const char *input);
548 static char *httpUnescape(
const char *input);
554 static char *escape(
const char *input,
555 const char *characters);
561 static char *unescape(
const char *input);
566 static void escape(
const char *input, uint64_t inputsize,
567 char **output, uint64_t *outputsize,
568 const char *characters);
573 static void unescape(
const char *input, uint64_t inputsize,
574 char **output, uint64_t *outputsize);
579 static char *base64Encode(
const unsigned char *input);
583 static char *base64Encode(
const unsigned char *input,
589 static void base64Encode(
const unsigned char *input,
592 uint64_t *outputsize);
597 static unsigned char *base64Decode(
const char *input);
601 static unsigned char *base64Decode(
const char *input,
607 static void base64Decode(
const char *input,
609 unsigned char **output,
610 uint64_t *outputsize);
613 static void obfuscate(
char *str);
617 static void deobfuscate(
char *str);
623 static void leftJustify(
char *str, int32_t length);
629 static void rightJustify(
char *str, int32_t length);
634 static void center(
char *str, int32_t length);
641 static char *pad(
const char *
string,
644 uint64_t totallength);
653 static void split(
const char *
string,
654 ssize_t stringlength,
655 const char *delimiter,
656 ssize_t delimiterlength,
659 uint64_t *listlength);
668 static void split(
const char *
string,
669 const char *delimiter,
670 ssize_t delimiterlength,
673 uint64_t *listlength);
681 static void split(
const char *
string,
682 ssize_t stringlength,
683 const char *delimiter,
686 uint64_t *listlength);
695 static void split(
const char *
string,
696 const char *delimiter,
699 uint64_t *listlength);
704 static char *subString(
const char *str,
705 size_t start,
size_t end);
710 static char *subString(
const char *str,
size_t start);
714 static char *insertString(
const char *dest,
735 static ssize_t printf(
char *buffer,
size_t length,
736 const char *format, ...);
758 static ssize_t printf(
char *buffer,
size_t length,
762 #include <rudiments/private/charstring.h>
Definition: charstring.h:16
Definition: character.h:11