4 #ifndef RUDIMENTS_CHARSTRING_H
5 #define RUDIMENTS_CHARSTRING_H
7 #include <rudiments/private/charstringincludes.h>
17 static size_t length(
const char *
string);
20 static size_t length(
const unsigned char *
string);
23 static void zero(
char *str,
size_t size);
28 static char *append(
char *dest,
const char *source);
33 static char *append(
char *dest,
const char *source,
39 static char *append(
char *dest, int64_t number);
44 static char *append(
char *dest, uint64_t number);
49 static char *append(
char *dest,
double number);
55 static char *append(
char *dest,
double number,
62 static char *append(
char *dest,
double number,
69 static char *copy(
char *dest,
const char *source);
74 static char *copy(
char *dest,
75 const char *source,
size_t size);
81 static char *copy(
char *dest,
size_t location,
88 static char *copy(
char *dest,
size_t location,
89 const char *source,
size_t size);
95 static char *safeCopy(
char *dest,
size_t destsize,
102 static char *safeCopy(
char *dest,
size_t destsize,
103 const char *source,
size_t sourcesize);
107 static int32_t compare(
const char *str1,
const char *str2);
111 static int32_t compare(
const char *str1,
const char *str2,
116 static int32_t compareIgnoringCase(
const char *str1,
122 static int32_t compareIgnoringCase(
const char *str1,
130 static bool inSet(
const char *str,
const char *
const *set);
136 static bool inSetIgnoringCase(
const char *str,
137 const char *
const *set);
141 static bool contains(
const char *haystack,
146 static bool contains(
const char *haystack,
char needle);
150 static const char *findFirst(
const char *haystack,
155 static const char *findFirst(
const char *haystack,
161 static const char *findFirstOrEnd(
const char *haystack,
167 static const char *findFirstOrEnd(
const char *haystack,
172 static const char *findLast(
const char *haystack,
177 static const char *findLast(
const char *haystack,
182 static char *findFirst(
char *haystack,
const char *needle);
186 static char *findFirst(
char *haystack,
char needle);
191 static char *findFirstOrEnd(
char *haystack,
196 static char *findLast(
char *haystack,
const char *needle);
200 static char *findLast(
char *haystack,
char needle);
205 static const char *findFirstOfSet(
const char *haystack,
211 static char *findFirstOfSet(
char *haystack,
218 static const char *findFirstOfSetOrEnd(
219 const char *haystack,
226 static char *findFirstOfSetOrEnd(
233 static size_t lengthContainingSet(
const char *haystack,
239 static size_t lengthNotContainingSet(
const char *haystack,
246 static char *duplicate(
const char *str);
253 static char *duplicate(
const char *str,
size_t length);
256 static void upper(
char *str);
259 static void lower(
char *str);
263 static void capitalize(
char *str);
266 static void rightTrim(
char *str);
270 static void rightTrim(
char *str,
char character);
273 static void leftTrim(
char *str);
277 static void leftTrim(
char *str,
char character);
280 static void bothTrim(
char *str);
283 static void bothTrim(
char *str,
char character);
288 static bool strip(
char *str,
char character);
293 static bool strip(
char *str1,
const char *str2);
298 static bool stripSet(
char *str1,
const char *set);
302 static void replace(
char *str,
303 char oldchar,
char newchar);
307 static void replace(
char *str,
308 const char *oldchars,
char newchar);
312 static uint16_t integerLength(int16_t number);
316 static uint16_t integerLength(int32_t number);
320 static uint16_t integerLength(int64_t number);
324 static uint16_t integerLength(uint16_t number);
328 static uint16_t integerLength(uint32_t number);
332 static uint16_t integerLength(uint64_t number);
336 static bool isInteger(
const char *val);
340 static bool isInteger(
const char *val, int32_t size);
344 static bool isNumber(
const char *val);
348 static bool isNumber(
const char *val, int32_t size);
353 static char *parseNumber(int16_t number);
358 static char *parseNumber(uint16_t number);
363 static char *parseNumber(int16_t number,
364 uint16_t zeropadding);
369 static char *parseNumber(uint16_t number,
370 uint16_t zeropadding);
375 static char *parseNumber(int32_t number);
380 static char *parseNumber(uint32_t number);
385 static char *parseNumber(int32_t number,
386 uint16_t zeropadding);
391 static char *parseNumber(uint32_t number,
392 uint16_t zeropadding);
397 static char *parseNumber(int64_t number);
402 static char *parseNumber(uint64_t number);
407 static char *parseNumber(int64_t number,
408 uint16_t zeropadding);
413 static char *parseNumber(uint64_t number,
414 uint16_t zeropadding);
420 static char *parseNumber(
float number);
425 static char *parseNumber(
float number,
431 static char *parseNumber(
float number,
438 static char *parseNumber(
double number);
443 static char *parseNumber(
double number,
449 static char *parseNumber(
double number,
456 static char *parseNumber(
long double number);
461 static char *parseNumber(
long double number,
467 static char *parseNumber(
long double number,
472 static int64_t toInteger(
const char *
string);
477 static int64_t toInteger(
const char *
string,
char **endptr);
480 static int64_t toInteger(
const char *
string, int32_t base);
485 static int64_t toInteger(
const char *
string,
486 char **endptr, int32_t base);
489 static uint64_t toUnsignedInteger(
const char *
string);
494 static uint64_t toUnsignedInteger(
const char *
string,
499 static uint64_t toUnsignedInteger(
const char *
string,
506 static uint64_t toUnsignedInteger(
const char *
string,
512 static long double toFloat(
const char *
string);
517 static long double toFloat(
const char *
string,
522 static int64_t convertAmount(
const char *amount);
526 static char *convertAmount(int64_t amount);
533 static char *convertAmount(int64_t amount,
540 static char *httpEscape(
const char *input);
545 static char *httpUnescape(
const char *input);
551 static char *escape(
const char *input,
552 const char *characters);
558 static char *unescape(
const char *input);
563 static void escape(
const char *input, uint64_t inputsize,
564 char **output, uint64_t *outputsize,
565 const char *characters);
570 static void unescape(
const char *input, uint64_t inputsize,
571 char **output, uint64_t *outputsize);
576 static char *base64Encode(
const unsigned char *input);
580 static char *base64Encode(
const unsigned char *input,
586 static void base64Encode(
const unsigned char *input,
589 uint64_t *outputsize);
594 static unsigned char *base64Decode(
const char *input);
598 static unsigned char *base64Decode(
const char *input,
604 static void base64Decode(
const char *input,
606 unsigned char **output,
607 uint64_t *outputsize);
613 static void leftJustify(
char *str, int32_t length);
625 static void rightPad(
char *str, int32_t lngth,
626 char padchar,
bool fill);
632 static void rightJustify(
char *str, int32_t length);
637 static void center(
char *str, int32_t length);
646 static void split(
const char *
string,
647 ssize_t stringlength,
648 const char *delimiter,
649 ssize_t delimiterlength,
652 uint64_t *listlength);
661 static void split(
const char *
string,
662 const char *delimiter,
663 ssize_t delimiterlength,
666 uint64_t *listlength);
674 static void split(
const char *
string,
675 ssize_t stringlength,
676 const char *delimiter,
679 uint64_t *listlength);
688 static void split(
const char *
string,
689 const char *delimiter,
692 uint64_t *listlength);
697 static char *subString(
const char *str,
698 size_t start,
size_t end);
703 static char *subString(
const char *str,
size_t start);
707 static char *insertString(
const char *dest,
712 static void obfuscate(
char *str);
716 static void deobfuscate(
char *str);
723 static char *padString(
const char *
string,
726 uint64_t totallength);
745 static ssize_t printf(
char *buffer,
size_t length,
746 const char *format, ...);
768 static ssize_t printf(
char *buffer,
size_t length,
772 #include <rudiments/private/charstring.h>
Definition: charstring.h:13
Definition: character.h:11