DDraceNetwork Documentation
Loading...
Searching...
No Matches
str.h
Go to the documentation of this file.
1#ifndef BASE_STR_H
2#define BASE_STR_H
3
4#include <cstddef>
5#include <cstdint>
6
21int str_copy(char *dst, const char *src, int dst_size);
22
34template<int N>
35void str_copy(char (&dst)[N], const char *src)
36{
37 str_copy(dst, src, N);
38}
39
52void str_append(char *dst, const char *src, int dst_size);
53
65template<int N>
66void str_append(char (&dst)[N], const char *src)
67{
68 str_append(dst, src, N);
69}
70
85void str_truncate(char *dst, int dst_size, const char *src, int truncation_len);
86
96int str_length(const char *str);
97
98char str_uppercase(char c);
99
100bool str_isnum(char c);
101
102int str_isallnum(const char *str);
103
104int str_isallnum_hex(const char *str);
105
117int str_isspace(char c);
118
132const char *str_trim_words(const char *str, int words);
133
145bool str_has_cc(const char *str);
146
156void str_sanitize_cc(char *str);
157
168void str_sanitize(char *str);
169
176void str_sanitize_filename(char *str);
177
187bool str_valid_filename(const char *str);
188
203int str_comp_filenames(const char *a, const char *b);
204
214void str_clean_whitespaces(char *str);
215
229char *str_skip_to_whitespace(char *str);
230
236const char *str_skip_to_whitespace_const(const char *str);
237
251char *str_skip_whitespaces(char *str);
252
258const char *str_skip_whitespaces_const(const char *str);
259
275int str_comp_nocase(const char *a, const char *b);
276
294int str_comp_nocase_num(const char *a, const char *b, int num);
295
310int str_comp(const char *a, const char *b);
311
327int str_comp_num(const char *a, const char *b, int num);
328
342const char *str_startswith_nocase(const char *str, const char *prefix);
343
357const char *str_startswith(const char *str, const char *prefix);
358
372const char *str_endswith_nocase(const char *str, const char *suffix);
373
385const char *str_endswith(const char *str, const char *suffix);
386
402const char *str_find_nocase(const char *haystack, const char *needle);
403
417const char *str_find(const char *haystack, const char *needle);
418
433const char *str_next_token(const char *str, const char *delim, char *buffer, int buffer_size);
434
447int str_in_list(const char *list, const char *delim, const char *needle);
448
463bool str_delimiters_around_offset(const char *haystack, const char *delim, int offset, int *start, int *end);
464
479const char *str_rchr(const char *haystack, char needle);
480
495int str_countchr(const char *haystack, char needle);
496
509void str_hex(char *dst, int dst_size, const void *data, int data_size);
510
527void str_hex_cstyle(char *dst, int dst_size, const void *data, int data_size, int bytes_per_line = 12);
528
544int str_hex_decode(void *dst, int dst_size, const char *src);
545
558void str_base64(char *dst, int dst_size, const void *data, int data_size);
559
575int str_base64_decode(void *dst, int dst_size, const char *data);
576
584void str_escape(char **dst, const char *src, const char *end);
585
586int str_toint(const char *str);
587bool str_toint(const char *str, int *out);
588int str_toint_base(const char *str, int base);
589unsigned long str_toulong_base(const char *str, int base);
590int64_t str_toint64_base(const char *str, int base = 10);
591float str_tofloat(const char *str);
592bool str_tofloat(const char *str, float *out);
593
594unsigned str_quickhash(const char *str);
595
608int str_utf8_encode(char *ptr, int chr);
609
623int str_utf8_decode(const char **ptr);
624
638void str_utf8_truncate(char *dst, int dst_size, const char *src, int truncation_len);
639
651int str_utf8_fix_truncation(char *str);
652
663void str_utf8_trim_right(char *param);
664
678void str_utf8_tolower(const char *input, char *output, size_t size);
679
689int str_utf8_isspace(int code);
690
700int str_utf8_isstart(char c);
701
715int str_utf8_rewind(const char *str, int cursor);
716
733const char *str_utf8_find_nocase(const char *haystack, const char *needle, const char **end = nullptr);
734
747int str_utf8_comp_nocase(const char *a, const char *b);
748
762int str_utf8_comp_nocase_num(const char *a, const char *b, int num);
763
774const char *str_utf8_skip_whitespaces(const char *str);
775
789int str_utf8_forward(const char *str, int cursor);
790
802int str_utf8_check(const char *str);
803
817void str_utf8_copy_num(char *dst, const char *src, int dst_size, int num);
818
833void str_utf8_stats(const char *str, size_t max_size, size_t max_count, size_t *size, size_t *count);
834
848size_t str_utf8_offset_bytes_to_chars(const char *str, size_t byte_offset);
849
863size_t str_utf8_offset_chars_to_bytes(const char *str, size_t char_offset);
864
865#endif
const char * str_rchr(const char *haystack, char needle)
Definition str.cpp:517
void str_utf8_trim_right(char *param)
Definition str.cpp:1006
void str_hex_cstyle(char *dst, int dst_size, const void *data, int data_size, int bytes_per_line=12)
Definition str.cpp:549
int str_utf8_comp_nocase(const char *a, const char *b)
Definition str.cpp:1105
char * str_skip_to_whitespace(char *str)
Definition str.cpp:279
size_t str_utf8_offset_chars_to_bytes(const char *str, size_t char_offset)
Definition str.cpp:1241
void str_utf8_copy_num(char *dst, const char *src, int dst_size, int num)
Definition str.cpp:1188
int str_length(const char *str)
Definition str.cpp:40
int str_utf8_forward(const char *str, int cursor)
Definition str.cpp:1165
const char * str_next_token(const char *str, const char *delim, char *buffer, int buffer_size)
Definition str.cpp:454
int str_utf8_decode(const char **ptr)
Definition str.cpp:905
void str_sanitize(char *str)
Definition str.cpp:124
const char * str_find_nocase(const char *haystack, const char *needle)
Definition str.cpp:402
const char * str_startswith(const char *str, const char *prefix)
Definition str.cpp:349
void str_base64(char *dst, int dst_size, const void *data, int data_size)
Definition str.cpp:641
int str_utf8_encode(char *ptr, int chr)
Definition str.cpp:860
int str_utf8_isstart(char c)
Definition str.cpp:1060
bool str_has_cc(const char *str)
Definition str.cpp:97
void str_sanitize_cc(char *str)
Definition str.cpp:112
const char * str_skip_whitespaces_const(const char *str)
Definition str.cpp:300
const char * str_skip_to_whitespace_const(const char *str)
Definition str.cpp:286
const char * str_utf8_skip_whitespaces(const char *str)
Definition str.cpp:1145
int str_comp_num(const char *a, const char *b, int num)
Definition str.cpp:331
bool str_delimiters_around_offset(const char *haystack, const char *delim, int offset, int *start, int *end)
Definition str.cpp:485
int str_base64_decode(void *dst, int dst_size, const char *data)
Definition str.cpp:718
void str_utf8_truncate(char *dst, int dst_size, const char *src, int truncation_len)
Definition str.cpp:972
void str_utf8_stats(const char *str, size_t max_size, size_t max_count, size_t *size, size_t *count)
Definition str.cpp:1206
int str_hex_decode(void *dst, int dst_size, const char *src)
Definition str.cpp:624
int str_comp_filenames(const char *a, const char *b)
Definition str.cpp:216
void str_hex(char *dst, int dst_size, const void *data, int data_size)
Definition str.cpp:534
void str_utf8_tolower(const char *input, char *output, size_t size)
Definition str.cpp:1031
int str_comp_nocase(const char *a, const char *b)
Definition str.cpp:308
void str_truncate(char *dst, int dst_size, const char *src, int truncation_len)
Definition str.cpp:30
size_t str_utf8_offset_bytes_to_chars(const char *str, size_t byte_offset)
Definition str.cpp:1226
int str_countchr(const char *haystack, char needle)
Definition str.cpp:522
int str_comp(const char *a, const char *b)
Definition str.cpp:326
void str_append(char *dst, const char *src, int dst_size)
Definition str.cpp:13
int str_utf8_check(const char *str)
Definition str.cpp:1175
const char * str_utf8_find_nocase(const char *haystack, const char *needle, const char **end=nullptr)
Definition str.cpp:1078
void str_clean_whitespaces(char *str)
Definition str.cpp:248
int str_utf8_isspace(int code)
Definition str.cpp:1049
const char * str_startswith_nocase(const char *str, const char *prefix)
Definition str.cpp:336
int str_utf8_comp_nocase_num(const char *a, const char *b, int num)
Definition str.cpp:1121
const char * str_endswith_nocase(const char *str, const char *suffix)
Definition str.cpp:362
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:6
char * str_skip_whitespaces(char *str)
Definition str.cpp:293
int str_utf8_rewind(const char *str, int cursor)
Definition str.cpp:1067
int str_utf8_fix_truncation(char *str)
Definition str.cpp:989
const char * str_find(const char *haystack, const char *needle)
Definition str.cpp:421
int str_comp_nocase_num(const char *a, const char *b, int num)
Definition str.cpp:317
int str_isspace(char c)
Definition str.cpp:79
const char * str_trim_words(const char *str, int words)
Definition str.cpp:84
int str_isallnum(const char *str)
Definition str.cpp:57
unsigned long str_toulong_base(const char *str, int base)
Definition str.cpp:825
int str_toint_base(const char *str, int base)
Definition str.cpp:820
void str_escape(char **dst, const char *src, const char *end)
Definition str.cpp:787
void str_sanitize_filename(char *str)
Definition str.cpp:135
int str_in_list(const char *list, const char *delim, const char *needle)
Definition str.cpp:471
int str_toint(const char *str)
Definition str.cpp:803
bool str_isnum(char c)
Definition str.cpp:52
float str_tofloat(const char *str)
Definition str.cpp:835
unsigned str_quickhash(const char *str)
Definition str.cpp:852
int str_isallnum_hex(const char *str)
Definition str.cpp:68
const char * str_endswith(const char *str, const char *suffix)
Definition str.cpp:382
char str_uppercase(char c)
Definition str.cpp:45
int64_t str_toint64_base(const char *str, int base=10)
Definition str.cpp:830
bool str_valid_filename(const char *str)
Definition str.cpp:149