Rev 8793 | Rev 9810 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8793 | Rev 9766 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | /* String handling |
- | |
2 | - | ||
3 | This file is part of the Public Domain C Library (PDCLib). |
- | |
4 | Permission is granted to use, modify, and / or redistribute at will. |
- | |
5 | */ |
- | |
6 | - | ||
7 | #ifndef _STRING_H_ |
1 | #ifndef _STRING_H_ |
8 | #define _STRING_H_ |
2 | #define _STRING_H_ |
Line 9... | Line 3... | ||
9 | 3 | ||
Line 10... | Line -... | ||
10 | #include |
- | |
11 | - | ||
12 | #ifdef __cplusplus |
- | |
13 | extern "C" { |
- | |
14 | #endif |
- | |
15 | - | ||
16 | /* String function conventions */ |
- | |
17 | - | ||
18 | /* |
- | |
19 | In any of the following functions taking a size_t n to specify the length of |
- | |
20 | an array or size of a memory region, n may be 0, but the pointer arguments to |
- | |
21 | the call shall still be valid unless otherwise stated. |
- | |
22 | */ |
- | |
23 | - | ||
24 | /* Copying functions */ |
4 | #include |
Line 25... | Line -... | ||
25 | - | ||
26 | extern void* _FUNC(memccpy)(void *restrict dest, const void *restrict src, int c, size_t n); |
- | |
27 | - | ||
28 | /* Copy a number of n characters from the memory area pointed to by s2 to the |
- | |
29 | area pointed to by s1. If the two areas overlap, behaviour is undefined. |
- | |
30 | Returns the value of s1. |
5 | |
31 | */ |
6 | extern void* _FUNC(memccpy)(void* restrict dest, const void* restrict src, int c, size_t n); |
32 | 7 | ||
33 | #ifdef __TINYC__ |
8 | #ifdef __TINYC__ |
34 | extern void* memcpy(void* s1, const void* s2, size_t n); |
9 | extern void* memcpy(void* s1, const void* s2, size_t n); |
35 | extern void* memset(void* s, int c, size_t n); |
10 | extern void* memset(void* s, int c, size_t n); |
36 | extern void* memmove(void* s1, const void* s2, size_t n); |
11 | extern void* memmove(void* s1, const void* s2, size_t n); |
37 | #else |
12 | #else |
38 | extern void* _FUNC(memcpy)(void* s1, const void* s2, size_t n); |
13 | extern void* _FUNC(memcpy)(void* s1, const void* s2, size_t n); |
Line 39... | Line -... | ||
39 | extern void* _FUNC(memset)(void* s, int c, size_t n); |
- | |
40 | extern void* _FUNC(memmove)(void* s1, const void* s2, size_t n); |
- | |
41 | #endif |
- | |
42 | - | ||
43 | /* Copy the character array s2 (including terminating '\0' byte) into the |
14 | extern void* _FUNC(memset)(void* s, int c, size_t n); |
44 | character array s1. |
- | |
45 | Returns the value of s1. |
- | |
46 | */ |
- | |
47 | extern char* _FUNC(strcpy)(char* s1, const char* s2); |
- | |
48 | - | ||
49 | /* Copy a maximum of n characters from the character array s2 into the character |
- | |
50 | array s1. If s2 is shorter than n characters, '\0' bytes will be appended to |
- | |
51 | the copy in s1 until n characters have been written. If s2 is longer than n |
- | |
52 | characters, NO terminating '\0' will be written to s1. If the arrays overlap, |
15 | extern void* _FUNC(memmove)(void* s1, const void* s2, size_t n); |
53 | behaviour is undefined. |
- | |
54 | Returns the value of s1. |
- | |
55 | */ |
- | |
56 | extern char* _FUNC(strncpy)(char* s1, const char* s2, size_t n); |
- | |
57 | - | ||
58 | /* Concatenation functions */ |
- | |
59 | - | ||
60 | /* Append the contents of the character array s2 (including terminating '\0') to |
- | |
61 | the character array s1 (first character of s2 overwriting the '\0' of s1). If |
16 | #endif |
62 | the arrays overlap, behaviour is undefined. |
- | |
63 | Returns the value of s1. |
- | |
64 | */ |
- | |
65 | extern char* _FUNC(strcat)(char* s1, const char* s2); |
- | |
66 | - | ||
67 | /* Append a maximum of n characters from the character array s2 to the character |
- | |
68 | array s1 (first character of s2 overwriting the '\0' of s1). A terminating |
- | |
69 | '\0' is ALWAYS appended, even if the full n characters have already been |
17 | |
70 | written. If the arrays overlap, behaviour is undefined. |
- | |
71 | Returns the value of s1. |
- | |
72 | */ |
- | |
73 | extern char* _FUNC(strncat)(char* s1, const char* s2, size_t n); |
- | |
74 | - | ||
75 | /* Comparison functions */ |
- | |
76 | - | ||
77 | /* Compare the first n characters of the memory areas pointed to by s1 and s2. |
18 | extern char* _FUNC(strcpy)(char* s1, const char* s2); |
78 | Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if |
- | |
79 | s1 > s2. |
- | |
80 | */ |
- | |
81 | extern int _FUNC(memcmp)(const void * s1, const void* s2, size_t n); |
- | |
82 | - | ||
83 | /* Compare the character arrays s1 and s2. |
19 | extern char* _FUNC(strncpy)(char* s1, const char* s2, size_t n); |
84 | Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if |
- | |
85 | s1 > s2. |
- | |
86 | */ |
- | |
87 | extern int _FUNC(strcmp)(const char * s1, const char* s2); |
- | |
88 | - | ||
89 | /* Compare the character arrays s1 and s2, interpreted as specified by the |
- | |
90 | LC_COLLATE category of the current locale. |
- | |
91 | Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if |
- | |
92 | s1 > s2. |
20 | extern char* _FUNC(strcat)(char* s1, const char* s2); |
93 | TODO: Currently a dummy wrapper for strcmp() as PDCLib does not yet support |
- | |
94 | locales. |
- | |
95 | */ |
- | |
96 | extern int _FUNC(strcoll)(const char* s1, const char* s2); |
- | |
97 | - | ||
98 | /* Compare no more than the first n characters of the character arrays s1 and |
- | |
99 | s2. |
21 | extern char* _FUNC(strncat)(char* s1, const char* s2, size_t n); |
100 | Returns 0 if s1 == s2, a negative number if s1 < s2, and a positive number if |
- | |
101 | s1 > s2. |
- | |
102 | */ |
- | |
103 | extern int _FUNC(strncmp)(const char* s1, const char* s2, size_t n); |
- | |
104 | - | ||
105 | /* Transform the character array s2 as appropriate for the LC_COLLATE setting of |
- | |
106 | the current locale. If length of resulting string is less than n, store it in |
22 | extern int _FUNC(memcmp)(const void* s1, const void* s2, size_t n); |
107 | the character array pointed to by s1. Return the length of the resulting |
- | |
108 | string. |
- | |
109 | */ |
- | |
110 | extern size_t _FUNC(strxfrm)(char* s1, const char* s2, size_t n); |
- | |
111 | - | ||
112 | /* Search functions */ |
- | |
113 | - | ||
114 | /* Search the first n characters in the memory area pointed to by s for the |
23 | extern int _FUNC(strcmp)(const char* s1, const char* s2); |
115 | character c (interpreted as unsigned char). |
- | |
116 | Returns a pointer to the first instance found, or NULL. |
- | |
117 | */ |
- | |
118 | extern void* _FUNC(memchr)(const void* s, int c, size_t n); |
- | |
119 | - | ||
120 | /* Search the character array s (including terminating '\0') for the character c |
24 | extern int _FUNC(strcoll)(const char* s1, const char* s2); |
121 | (interpreted as char). |
- | |
122 | Returns a pointer to the first instance found, or NULL. |
- | |
123 | */ |
- | |
124 | extern char* _FUNC(strchr)(const char* s, int c); |
- | |
125 | - | ||
126 | /* Determine the length of the initial substring of character array s1 which |
25 | extern int _FUNC(strncmp)(const char* s1, const char* s2, size_t n); |
127 | consists only of characters not from the character array s2. |
- | |
128 | Returns the length of that substring. |
- | |
129 | */ |
- | |
130 | extern size_t _FUNC(strcspn)(const char* s1, const char* s2); |
- | |
131 | 26 | extern size_t _FUNC(strxfrm)(char* s1, const char* s2, size_t n); |
|
132 | /* Search the character array s1 for any character from the character array s2. |
- | |
133 | Returns a pointer to the first occurrence, or NULL. |
- | |
134 | */ |
- | |
135 | extern char* _FUNC(strpbrk)(const char* s1, const char* s2); |
- | |
136 | - | ||
137 | /* Search the character array s (including terminating '\0') for the character c |
27 | extern void* _FUNC(memchr)(const void* s, int c, size_t n); |
138 | (interpreted as char). |
- | |
139 | Returns a pointer to the last instance found, or NULL. |
- | |
140 | */ |
- | |
141 | extern char* _FUNC(strrchr)(const char * s, int c ); |
- | |
142 | - | ||
143 | /* Determine the length of the initial substring of character array s1 which |
28 | extern char* _FUNC(strchr)(const char* s, int c); |
144 | consists only of characters from the character array s2. |
- | |
145 | Returns the length of that substring. |
- | |
146 | */ |
- | |
147 | extern size_t _FUNC(strspn)(const char * s1, const char * s2); |
- | |
148 | - | ||
149 | /* Search the character array s1 for the substring in character array s2. |
29 | extern size_t _FUNC(strcspn)(const char* s1, const char* s2); |
150 | Returns a pointer to that sbstring, or NULL. If s2 is of length zero, |
- | |
151 | returns s1. |
- | |
152 | */ |
- | |
153 | extern char* _FUNC(strstr)(const char * s1, const char * s2); |
- | |
154 | - | ||
155 | /* In a series of subsequent calls, parse a C string into tokens. |
- | |
156 | On the first call to strtok(), the first argument is a pointer to the to-be- |
- | |
157 | parsed C string. On subsequent calls, the first argument is NULL unless you |
- | |
158 | want to start parsing a new string. s2 holds an array of separator characters |
- | |
159 | which can differ from call to call. Leading separators are skipped, the first |
- | |
160 | trailing separator overwritten with '\0'. |
30 | extern char* _FUNC(strpbrk)(const char* s1, const char* s2); |
161 | Returns a pointer to the next token. |
- | |
162 | WARNING: This function uses static storage, and as such is not reentrant. |
- | |
163 | */ |
- | |
164 | extern char* _FUNC(strtok)(char* s1, const char* s2); |
- | |
165 | - | ||
166 | /* Map an error number to a (locale-specific) error message string. Error |
31 | extern char* _FUNC(strrchr)(const char* s, int c); |
167 | numbers are typically errno values, but any number is mapped to a message. |
- | |
168 | TODO: PDCLib does not yet support locales. |
- | |
169 | */ |
32 | extern size_t _FUNC(strspn)(const char* s1, const char* s2); |
170 | extern char* _FUNC(strerror)(int errnum); |
- | |
171 | - | ||
172 | /* Returns the length of the string s (excluding terminating '\0').*/ |
33 | extern char* _FUNC(strstr)(const char* s1, const char* s2); |
173 | extern size_t _FUNC(strlen)(const char * s); |
- | |
174 | - | ||
175 | /* The function reverses the sequence of characters in the string pointed to by str. */ |
34 | extern char* _FUNC(strtok)(char* s1, const char* s2); |
Line 176... | Line 35... | ||
176 | extern char* _FUNC(strrev)(char *str); |
35 | extern char* _FUNC(strerror)(int errnum); |