Rudiments
charstring.h
1 // Copyright (c) 2003 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_CHARSTRING_H
5 #define RUDIMENTS_CHARSTRING_H
6 
7 #include <rudiments/private/charstringincludes.h>
8 
16 class RUDIMENTS_DLLSPEC charstring {
17  public:
18 
20  static size_t length(const char *string);
21 
23  static size_t length(const unsigned char *string);
24 
26  static bool isNullOrEmpty(const char *string);
27 
29  static bool isNullOrEmpty(const unsigned char *string);
30 
32  static void zero(char *str, size_t size);
33 
37  static char *append(char *dest, const char *source);
38 
42  static char *append(char *dest, const char *source,
43  size_t size);
44 
48  static char *append(char *dest, int64_t number);
49 
53  static char *append(char *dest, uint64_t number);
54 
58  static char *append(char *dest, double number);
59 
64  static char *append(char *dest, double number,
65  uint16_t scale);
66 
71  static char *append(char *dest, double number,
72  uint16_t precision,
73  uint16_t scale);
74 
78  static char *copy(char *dest, const char *source);
79 
83  static char *copy(char *dest,
84  const char *source, size_t size);
85 
90  static char *copy(char *dest, size_t location,
91  const char *source);
92 
97  static char *copy(char *dest, size_t location,
98  const char *source, size_t size);
99 
104  static char *safeCopy(char *dest, size_t destsize,
105  const char *source);
106 
111  static char *safeCopy(char *dest, size_t destsize,
112  const char *source, size_t sourcesize);
113 
116  static int32_t compare(const char *str1, const char *str2);
117 
120  static int32_t compare(const char *str1, const char *str2,
121  size_t size);
122 
125  static int32_t compareIgnoringCase(const char *str1,
126  const char *str2);
127 
131  static int32_t compareIgnoringCase(const char *str1,
132  const char *str2,
133  size_t size);
134 
139  static bool inSet(const char *str, const char * const *set);
140 
145  static bool inSetIgnoringCase(const char *str,
146  const char * const *set);
147 
150  static bool contains(const char *haystack,
151  const char *needle);
152 
155  static bool contains(const char *haystack, char needle);
156 
159  static const char *findFirst(const char *haystack,
160  const char *needle);
161 
164  static const char *findFirst(const char *haystack,
165  char needle);
166 
170  static const char *findFirstOrEnd(const char *haystack,
171  char needle);
172 
176  static const char *findFirstOrEnd(const char *haystack,
177  const char *needle);
178 
181  static const char *findLast(const char *haystack,
182  const char *needle);
183 
186  static const char *findLast(const char *haystack,
187  char needle);
188 
191  static char *findFirst(char *haystack, const char *needle);
192 
195  static char *findFirst(char *haystack, char needle);
196 
200  static char *findFirstOrEnd(char *haystack,
201  const char *needle);
202 
205  static char *findLast(char *haystack, const char *needle);
206 
209  static char *findLast(char *haystack, char needle);
210 
214  static const char *findFirstOfSet(const char *haystack,
215  const char *set);
216 
220  static char *findFirstOfSet(char *haystack,
221  const char *set);
222 
227  static const char *findFirstOfSetOrEnd(
228  const char *haystack,
229  const char *set);
230 
235  static char *findFirstOfSetOrEnd(
236  char *haystack,
237  const char *set);
238 
242  static size_t lengthContainingSet(const char *haystack,
243  const char *set);
244 
248  static size_t lengthNotContainingSet(const char *haystack,
249  const char *set);
250 
255  static char *duplicate(const char *str);
256 
262  static char *duplicate(const char *str, size_t length);
263 
265  static void upper(char *str);
266 
268  static void lower(char *str);
269 
272  static void capitalize(char *str);
273 
275  static void rightTrim(char *str);
276 
279  static void rightTrim(char *str, char character);
280 
282  static void leftTrim(char *str);
283 
286  static void leftTrim(char *str, char character);
287 
289  static void bothTrim(char *str);
290 
292  static void bothTrim(char *str, char character);
293 
297  static bool strip(char *str, char character);
298 
302  static bool strip(char *str1, const char *str2);
303 
307  static bool stripSet(char *str1, const char *set);
308 
311  static void replace(char *str,
312  char oldchar, char newchar);
313 
316  static void replace(char *str,
317  const char *oldchars, char newchar);
318 
321  static uint16_t integerLength(int16_t number);
322 
325  static uint16_t integerLength(int32_t number);
326 
329  static uint16_t integerLength(int64_t number);
330 
333  static uint16_t integerLength(uint16_t number);
334 
337  static uint16_t integerLength(uint32_t number);
338 
341  static uint16_t integerLength(uint64_t number);
342 
345  static bool isInteger(const char *val);
346 
349  static bool isInteger(const char *val, int32_t size);
350 
353  static bool isNumber(const char *val);
354 
357  static bool isNumber(const char *val, int32_t size);
358 
362  static char *parseNumber(int16_t number);
363 
367  static char *parseNumber(uint16_t number);
368 
372  static char *parseNumber(int16_t number,
373  uint16_t zeropadding);
374 
378  static char *parseNumber(uint16_t number,
379  uint16_t zeropadding);
380 
384  static char *parseNumber(int32_t number);
385 
389  static char *parseNumber(uint32_t number);
390 
394  static char *parseNumber(int32_t number,
395  uint16_t zeropadding);
396 
400  static char *parseNumber(uint32_t number,
401  uint16_t zeropadding);
402 
406  static char *parseNumber(int64_t number);
407 
411  static char *parseNumber(uint64_t number);
412 
416  static char *parseNumber(int64_t number,
417  uint16_t zeropadding);
418 
422  static char *parseNumber(uint64_t number,
423  uint16_t zeropadding);
424 
425 
429  static char *parseNumber(float number);
430 
434  static char *parseNumber(float number,
435  uint16_t scale);
436 
440  static char *parseNumber(float number,
441  uint16_t precision,
442  uint16_t scale);
443 
447  static char *parseNumber(double number);
448 
452  static char *parseNumber(double number,
453  uint16_t scale);
454 
458  static char *parseNumber(double number,
459  uint16_t precision,
460  uint16_t scale);
461 
465  static char *parseNumber(long double number);
466 
470  static char *parseNumber(long double number,
471  uint16_t scale);
472 
476  static char *parseNumber(long double number,
477  uint16_t precision,
478  uint16_t scale);
479 
481  static int64_t toInteger(const char *string);
482 
486  static int64_t toInteger(const char *string,
487  const char **endptr);
488 
490  static int64_t toInteger(const char *string, int32_t base);
491 
495  static int64_t toInteger(const char *string,
496  const char **endptr, int32_t base);
497 
499  static uint64_t toUnsignedInteger(const char *string);
500 
504  static uint64_t toUnsignedInteger(const char *string,
505  const char **endptr);
506 
509  static uint64_t toUnsignedInteger(const char *string,
510  int32_t base);
511 
516  static uint64_t toUnsignedInteger(const char *string,
517  const char **endptr,
518  int32_t base);
519 
520 
522  static long double toFloat(const char *string);
523 
527  static long double toFloat(const char *string,
528  const char **endptr);
529 
532  static int64_t convertAmount(const char *amount);
533 
536  static char *convertAmount(int64_t amount);
537 
543  static char *convertAmount(int64_t amount,
544  uint16_t padding);
545 
546 
550  static char *httpEscape(const char *input);
551 
555  static char *httpUnescape(const char *input);
556 
561  static char *escape(const char *input,
562  const char *characters);
563 
568  static char *unescape(const char *input);
569 
573  static void escape(const char *input, uint64_t inputsize,
574  char **output, uint64_t *outputsize,
575  const char *characters);
576 
580  static void unescape(const char *input, uint64_t inputsize,
581  char **output, uint64_t *outputsize);
582 
586  static char *base64Encode(const unsigned char *input);
587 
590  static char *base64Encode(const unsigned char *input,
591  uint64_t inputsize);
592 
596  static void base64Encode(const unsigned char *input,
597  uint64_t inputsize,
598  char **output,
599  uint64_t *outputsize);
600 
604  static unsigned char *base64Decode(const char *input);
605 
608  static unsigned char *base64Decode(const char *input,
609  uint64_t inputsize);
610 
614  static void base64Decode(const char *input,
615  uint64_t inputsize,
616  unsigned char **output,
617  uint64_t *outputsize);
618 
620  static void obfuscate(char *str);
621 
624  static void deobfuscate(char *str);
625 
630  static void leftJustify(char *str, int32_t length);
631 
636  static void rightJustify(char *str, int32_t length);
637 
641  static void center(char *str, int32_t length);
642 
648  static char *pad(const char *string,
649  char padchar,
650  int16_t direction,
651  uint64_t totallength);
652 
660  static void split(const char *string,
661  ssize_t stringlength,
662  const char *delimiter,
663  ssize_t delimiterlength,
664  bool collapse,
665  char ***list,
666  uint64_t *listlength);
667 
675  static void split(const char *string,
676  const char *delimiter,
677  ssize_t delimiterlength,
678  bool collapse,
679  char ***list,
680  uint64_t *listlength);
688  static void split(const char *string,
689  ssize_t stringlength,
690  const char *delimiter,
691  bool collapse,
692  char ***list,
693  uint64_t *listlength);
694 
702  static void split(const char *string,
703  const char *delimiter,
704  bool collapse,
705  char ***list,
706  uint64_t *listlength);
707 
711  static char *subString(const char *str,
712  size_t start, size_t end);
713 
717  static char *subString(const char *str, size_t start);
718 
721  static char *insertString(const char *dest,
722  const char *src,
723  uint64_t index);
724 
742  static ssize_t printf(char *buffer, size_t length,
743  const char *format, ...);
744 
765  static ssize_t printf(char *buffer, size_t length,
766  const char *format,
767  va_list *argp);
768 
769  #include <rudiments/private/charstring.h>
770 };
771 
772 #endif
Definition: charstring.h:16
Definition: character.h:11