-
Notifications
You must be signed in to change notification settings - Fork 0
/
stringslib.h
137 lines (114 loc) · 3.97 KB
/
stringslib.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#ifndef STRINGSLIB_H
#define STRINGSLIB_H
#include <stddef.h>
#define True 1
#define False 0
#ifdef __cplusplus
extern "C" {
#endif
/*
* Get the size of the string.
*/
size_t str_length(const char *str);
/*
* Compare two strings lexicographically.
* Returns:
* - < 0 if str1 is before str2
* - = 0 if str1 is the same as str2
* - > 0 if str1 is after str2
*/
int str_compare(const char *str1, const char *str2);
/*
* Search for the needle in the haystack.
* Returns a pointer to the beginning of haystack in needle,
* or NULL if needle is not in haystack.
*/
const char *str_search(const char *haystack, const char *needle);
/*
* Search for a character in the string.
* Returns a pointer to the first character,
* or NULL if the character is not in the string.
*/
const char *str_search_first_char(const char *haystack, char needle);
/*
* Search for a character in the string.
* Returns a pointer to the last character,
* or NULL if the character is not in the string.
*/
const char *str_search_last_char(const char *haystack, char needle);
/*
* Calculates the length of the initial segment of str which consists entirely of
* bytes in chars.
*/
size_t str_prefix_accept(const char *str, const char *chars);
/*
* Calculates the length of the initial segment of str which consists entirely of
* bytes *not* in chars.
*/
size_t str_prefix_reject(const char *str, const char *chars);
/*
* Transform a string with a base-10 number into an integer.
* Returns the number or 0 if the string does not start with a number.
*/
int str_to_integer(const char *str);
/*
* Transform a string with a number into an integer.
* The base argument contains the base of the representation, from 2 to 36.
* For a base greater than 10, latin letters (uppercase or lowercase) are used.
* Returns the number or 0 if the string does not start with a number.
* If endptr is not NULL, the function stores the address of the first invalid character.
*/
int str_to_integer_ex(const char *str, const char **endptr, int base);
/*
* Transform an integer into a string.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_from_integer(char *dest, size_t size, int n);
/*
* Make a copy of a string.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_copy(char *dest, size_t size, const char *str);
/*
* Duplicate a string.
* Returns a copy of the argument, allocated with malloc or calloc.
*/
char *str_duplicate(const char *str);
/*
* Concatenate a string to an existing string.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_concat_string(char *dest, size_t size, const char *str);
/*
* Concatenate a character to an existing string.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_concat_char(char *dest, size_t size, char c);
/*
* Concatenate an integer to an existing string.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_concat_integer(char *dest, size_t size, int n);
/*
* Concatenate an array of strings to an existing string.
* A separator is added between the existing string and each string in the array.
* The end of the array is identified by NULL.
* The destination buffer has a length of size bytes. If there
* is not enough space in the buffer, the result is truncated.
*/
void str_concat_array(char *dest, size_t size, const char *args[], char separator);
/*
* Join two strings in a new string with a separator.
* Returns a new string allocated with malloc or calloc.
*/
char *str_join_string(const char *str1, const char *str2, char separator);
char *str_join_array(const char *args[], char separator);
#ifdef __cplusplus
}
#endif
#endif // STRINGSLIB_H