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 
38  static bool isYes(const char *string);
39 
46  static bool isNo(const char *string);
47 
49  static void zero(char *str, size_t size);
50 
54  static char *append(char *dest, const char *source);
55 
59  static char *append(char *dest, const char *source,
60  size_t size);
61 
65  static char *append(char *dest, int64_t number);
66 
70  static char *append(char *dest, uint64_t number);
71 
75  static char *append(char *dest, double number);
76 
81  static char *append(char *dest, double number,
82  uint16_t scale);
83 
88  static char *append(char *dest, double number,
89  uint16_t precision,
90  uint16_t scale);
91 
95  static char *copy(char *dest, const char *source);
96 
100  static char *copy(char *dest,
101  const char *source, size_t size);
102 
107  static char *copy(char *dest, size_t location,
108  const char *source);
109 
114  static char *copy(char *dest, size_t location,
115  const char *source, size_t size);
116 
121  static char *safeCopy(char *dest, size_t destsize,
122  const char *source);
123 
128  static char *safeCopy(char *dest, size_t destsize,
129  const char *source, size_t sourcesize);
130 
133  static int32_t compare(const char *str1, const char *str2);
134 
137  static int32_t compare(const char *str1, const char *str2,
138  size_t size);
139 
142  static int32_t compareIgnoringCase(const char *str1,
143  const char *str2);
144 
148  static int32_t compareIgnoringCase(const char *str1,
149  const char *str2,
150  size_t size);
151 
156  static bool inSet(const char *str, const char * const *set);
157 
162  static bool inSetIgnoringCase(const char *str,
163  const char * const *set);
164 
167  static bool contains(const char *haystack,
168  const char *needle);
169 
172  static bool contains(const char *haystack, char needle);
173 
176  static const char *findFirst(const char *haystack,
177  const char *needle);
178 
181  static const char *findFirst(const char *haystack,
182  char needle);
183 
187  static const char *findFirstOrEnd(const char *haystack,
188  char needle);
189 
193  static const char *findFirstOrEnd(const char *haystack,
194  const char *needle);
195 
198  static const char *findLast(const char *haystack,
199  const char *needle);
200 
203  static const char *findLast(const char *haystack,
204  char needle);
205 
208  static char *findFirst(char *haystack, const char *needle);
209 
212  static char *findFirst(char *haystack, char needle);
213 
217  static char *findFirstOrEnd(char *haystack,
218  const char *needle);
219 
222  static char *findLast(char *haystack, const char *needle);
223 
226  static char *findLast(char *haystack, char needle);
227 
231  static const char *findFirstOfSet(const char *haystack,
232  const char *set);
233 
237  static char *findFirstOfSet(char *haystack,
238  const char *set);
239 
244  static const char *findFirstOfSetOrEnd(
245  const char *haystack,
246  const char *set);
247 
252  static char *findFirstOfSetOrEnd(
253  char *haystack,
254  const char *set);
255 
259  static const char *findLastOfSet(const char *haystack,
260  const char *set);
261 
265  static char *findLastOfSet(char *haystack,
266  const char *set);
267 
272  static const char *findLastOfSetOrEnd(
273  const char *haystack,
274  const char *set);
275 
280  static char *findLastOfSetOrEnd(
281  char *haystack,
282  const char *set);
283 
287  static size_t lengthContainingSet(const char *haystack,
288  const char *set);
289 
293  static size_t lengthNotContainingSet(const char *haystack,
294  const char *set);
295 
300  static char *duplicate(const char *str);
301 
307  static char *duplicate(const char *str, size_t length);
308 
310  static void upper(char *str);
311 
313  static void lower(char *str);
314 
317  static void capitalize(char *str);
318 
320  static void rightTrim(char *str);
321 
324  static void rightTrim(char *str, char character);
325 
327  static void leftTrim(char *str);
328 
331  static void leftTrim(char *str, char character);
332 
334  static void bothTrim(char *str);
335 
337  static void bothTrim(char *str, char character);
338 
342  static bool strip(char *str, char character);
343 
347  static bool strip(char *str1, const char *str2);
348 
352  static bool stripSet(char *str1, const char *set);
353 
356  static void replace(char *str,
357  char oldchar, char newchar);
358 
361  static void replace(char *str,
362  const char *oldchars, char newchar);
363 
367  static char *replace(const char *str,
368  const char *oldstr,
369  const char *newstr);
370 
377  static char *replace(const char *str,
378  const char * const *oldstrset,
379  ssize_t *oldstrlen,
380  const char * const *newstrset);
381 
388  static char *replace(const char *str,
389  regularexpression *from,
390  const char *to,
391  bool global);
392 
395  static uint16_t integerLength(int16_t number);
396 
399  static uint16_t integerLength(int32_t number);
400 
403  static uint16_t integerLength(int64_t number);
404 
407  static uint16_t integerLength(uint16_t number);
408 
411  static uint16_t integerLength(uint32_t number);
412 
415  static uint16_t integerLength(uint64_t number);
416 
419  static bool isInteger(const char *val);
420 
423  static bool isInteger(const char *val, int32_t size);
424 
427  static bool isNumber(const char *val);
428 
431  static bool isNumber(const char *val, int32_t size);
432 
436  static char *parseNumber(int16_t number);
437 
441  static char *parseNumber(uint16_t number);
442 
446  static char *parseNumber(int16_t number,
447  uint16_t zeropadding);
448 
452  static char *parseNumber(uint16_t number,
453  uint16_t zeropadding);
454 
458  static char *parseNumber(int32_t number);
459 
463  static char *parseNumber(uint32_t number);
464 
468  static char *parseNumber(int32_t number,
469  uint16_t zeropadding);
470 
474  static char *parseNumber(uint32_t number,
475  uint16_t zeropadding);
476 
480  static char *parseNumber(int64_t number);
481 
485  static char *parseNumber(uint64_t number);
486 
490  static char *parseNumber(int64_t number,
491  uint16_t zeropadding);
492 
496  static char *parseNumber(uint64_t number,
497  uint16_t zeropadding);
498 
499 
503  static char *parseNumber(float number);
504 
508  static char *parseNumber(float number,
509  uint16_t scale);
510 
514  static char *parseNumber(float number,
515  uint16_t precision,
516  uint16_t scale);
517 
521  static char *parseNumber(double number);
522 
526  static char *parseNumber(double number,
527  uint16_t scale);
528 
532  static char *parseNumber(double number,
533  uint16_t precision,
534  uint16_t scale);
535 
539  static char *parseNumber(long double number);
540 
544  static char *parseNumber(long double number,
545  uint16_t scale);
546 
550  static char *parseNumber(long double number,
551  uint16_t precision,
552  uint16_t scale);
553 
555  static int64_t toInteger(const char *string);
556 
560  static int64_t toInteger(const char *string,
561  const char **endptr);
562 
564  static int64_t toInteger(const char *string, int32_t base);
565 
569  static int64_t toInteger(const char *string,
570  const char **endptr, int32_t base);
571 
573  static uint64_t toUnsignedInteger(const char *string);
574 
578  static uint64_t toUnsignedInteger(const char *string,
579  const char **endptr);
580 
583  static uint64_t toUnsignedInteger(const char *string,
584  int32_t base);
585 
590  static uint64_t toUnsignedInteger(const char *string,
591  const char **endptr,
592  int32_t base);
593 
594 
596  static long double toFloat(const char *string);
597 
608  static long double toFloatC(const char *string);
609 
613  static long double toFloat(const char *string,
614  const char **endptr);
615 
618  static int64_t convertAmount(const char *amount);
619 
622  static char *convertAmount(int64_t amount);
623 
629  static char *convertAmount(int64_t amount,
630  uint16_t padding);
631 
632 
636  static char *httpEscape(const char *input);
637 
641  static char *httpUnescape(const char *input);
642 
647  static char *escape(const char *input,
648  const char *characters);
649 
654  static char *unescape(const char *input);
655 
659  static void escape(const char *input, uint64_t inputsize,
660  char **output, uint64_t *outputsize,
661  const char *characters);
662 
666  static void unescape(const char *input, uint64_t inputsize,
667  char **output, uint64_t *outputsize);
668 
672  static char *base64Encode(const unsigned char *input);
673 
676  static char *base64Encode(const unsigned char *input,
677  uint64_t inputsize);
678 
682  static void base64Encode(const unsigned char *input,
683  uint64_t inputsize,
684  char **output,
685  uint64_t *outputsize);
686 
690  static unsigned char *base64Decode(const char *input);
691 
694  static unsigned char *base64Decode(const char *input,
695  uint64_t inputsize);
696 
700  static void base64Decode(const char *input,
701  uint64_t inputsize,
702  unsigned char **output,
703  uint64_t *outputsize);
704 
706  static void obfuscate(char *str);
707 
710  static void deobfuscate(char *str);
711 
716  static void leftJustify(char *str, int32_t length);
717 
722  static void rightJustify(char *str, int32_t length);
723 
727  static void center(char *str, int32_t length);
728 
734  static char *pad(const char *string,
735  char padchar,
736  int16_t direction,
737  uint64_t totallength);
738 
746  static void split(const char *string,
747  ssize_t stringlength,
748  const char *delimiter,
749  ssize_t delimiterlength,
750  bool collapse,
751  char ***list,
752  uint64_t *listlength);
753 
761  static void split(const char *string,
762  const char *delimiter,
763  ssize_t delimiterlength,
764  bool collapse,
765  char ***list,
766  uint64_t *listlength);
774  static void split(const char *string,
775  ssize_t stringlength,
776  const char *delimiter,
777  bool collapse,
778  char ***list,
779  uint64_t *listlength);
780 
788  static void split(const char *string,
789  const char *delimiter,
790  bool collapse,
791  char ***list,
792  uint64_t *listlength);
793 
797  static char *subString(const char *str,
798  size_t start, size_t end);
799 
803  static char *subString(const char *str, size_t start);
804 
807  static char *insertString(const char *dest,
808  const char *src,
809  uint64_t index);
810 
828  static ssize_t printf(char *buffer, size_t length,
829  const char *format, ...);
830 
851  static ssize_t printf(char *buffer, size_t length,
852  const char *format,
853  va_list *argp);
854 
866  static ssize_t printf(char **buffer,
867  const char *format, ...);
868 
880  static ssize_t printf(char **buffer,
881  const char *format,
882  va_list *argp);
883 
884  #include <rudiments/private/charstring.h>
885 };
886 
887 #endif
Definition: charstring.h:16
Definition: input.h:9
Definition: character.h:11
Definition: regularexpression.h:14
Definition: output.h:9