C Standard Library Extensions  1.2.3
cxstring.h
1 /*
2  * This file is part of the ESO C Extension Library
3  * Copyright (C) 2001-2017 European Southern Observatory
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef CX_STRING_H_
21 #define CX_STRING_H_ 1
22 
23 #include <stdarg.h>
24 #include <string.h>
25 #include <ctype.h>
26 
27 #include <cxtypes.h>
28 #include <cxmemory.h>
29 #include <cxmessages.h>
30 #include <cxutils.h>
31 
32 
33 CX_BEGIN_DECLS
34 
35 struct _cx_string_ {
36 
37  /* <private> */
38 
39  cxchar *data;
40  cxsize sz;
41 
42 };
43 
44 
52 typedef struct _cx_string_ cx_string;
53 
54 
55 /*
56  * Create, copy and destroy operations
57  */
58 
61 cx_string *cx_string_create(const cxchar *);
63 
64 /*
65  * Non modifying operations
66  */
67 
68 cxsize cx_string_size(const cx_string *);
69 cxbool cx_string_empty(const cx_string *);
70 
71 /*
72  * Data access
73  */
74 
75 const cxchar *cx_string_get(const cx_string *);
76 
77 /*
78  * Assignment operations
79  */
80 
81 void cx_string_set(cx_string *, const cxchar *);
82 
83 /*
84  * Modifying operations
85  */
86 void cx_string_resize(cx_string *, cxsize, cxchar);
87 void cx_string_extend(cx_string *, cxsize, cxchar);
88 
89 void cx_string_replace_character(cx_string *, cxsize, cxsize, cxchar, cxchar);
90 
96 
97 /*
98  * Inserting and removing elements
99  */
100 
101 cx_string *cx_string_prepend(cx_string *, const cxchar *);
102 cx_string *cx_string_append(cx_string *, const cxchar *);
103 cx_string *cx_string_insert(cx_string *, cxssize, const cxchar *);
104 cx_string *cx_string_erase(cx_string *, cxssize, cxssize);
106 
107 cx_string *cx_string_substr(const cx_string *, cxsize, cxsize);
108 
109 /*
110  * Comparison functions
111  */
112 
113 cxbool cx_string_equal (const cx_string *, const cx_string *);
114 cxint cx_string_compare(const cx_string *, const cx_string *);
115 cxint cx_string_casecmp(const cx_string *, const cx_string *);
116 cxint cx_string_ncasecmp(const cx_string *, const cx_string *, cxsize);
117 
118 /*
119  * Search functions
120  */
121 
122 cxsize cx_string_find_first_not_of(const cx_string *, const cxchar *);
123 cxsize cx_string_find_last_not_of(const cx_string *, const cxchar *);
124 
125 /*
126  * I/O functions
127  */
128 
130  const cxchar *, ...) CX_GNUC_PRINTF(2, 3);
132  const cxchar *, va_list) CX_GNUC_PRINTF(2, 0);
133 
134 /*
135  * Debugging utilities
136  */
137 
138 void cx_string_print(const cx_string *);
139 
140 CX_END_DECLS
141 
142 #endif /* CX_STRING_H */
cx_string * cx_string_copy(const cx_string *)
Create a copy a cx_string.
Definition: cxstring.c:250
cx_string * cx_string_new(void)
Create a new, empty string container.
Definition: cxstring.c:232
cxint cx_string_vsprintf(cx_string *self, const cxchar *format, va_list args)
Write to the string from a variable-length argument list under format control.
Definition: cxstring.c:1036
cxint cx_string_sprintf(cx_string *self, const char *format,...)
Writes to a string under format control.
Definition: cxstring.c:996
void cx_string_replace_character(cx_string *, cxsize, cxsize, cxchar, cxchar)
Replace a given character with a new character in a portion of a string.
Definition: cxstring.c:1092
cxint cx_string_compare(const cx_string *, const cx_string *)
Compare two strings.
Definition: cxstring.c:902
void cx_string_resize(cx_string *, cxsize, cxchar)
Resize a string to a given length.
Definition: cxstring.c:1147
struct _cx_string_ cx_string
The cx_string data type.
Definition: cxstring.h:52
cxsize cx_string_find_last_not_of(const cx_string *, const cxchar *)
Search a string for the last character that does not match any of the given characters.
Definition: cxstring.c:1291
cx_string * cx_string_prepend(cx_string *, const cxchar *)
Prepend an array of characters to the string.
Definition: cxstring.c:593
cx_string * cx_string_append(cx_string *, const cxchar *)
Append an array of characters to the string.
Definition: cxstring.c:645
void cx_string_set(cx_string *, const cxchar *)
Assign a value to a string.
Definition: cxstring.c:381
void cx_string_delete(cx_string *)
Destroy a string.
Definition: cxstring.c:305
cx_string * cx_string_truncate(cx_string *, cxsize)
Truncate the string.
Definition: cxstring.c:828
cx_string * cx_string_upper(cx_string *)
Converts the string into uppercase.
Definition: cxstring.c:441
const cxchar * cx_string_get(const cx_string *)
Get the string's value.
Definition: cxstring.c:414
cx_string * cx_string_insert(cx_string *, cxssize, const cxchar *)
Inserts a copy of a string at a given position.
Definition: cxstring.c:698
cxbool cx_string_empty(const cx_string *)
Checks whether a string contains any characters.
Definition: cxstring.c:355
cxbool cx_string_equal(const cx_string *, const cx_string *)
Compare two cx_string for equality.
Definition: cxstring.c:857
cx_string * cx_string_erase(cx_string *, cxssize, cxssize)
Erase a portion of the string.
Definition: cxstring.c:757
cxint cxint void cx_string_print(const cx_string *)
Print the value of a cx_string to the standard output.
Definition: cxstring.c:1058
cx_string * cx_string_strip(cx_string *)
Remove leading and trailing whitespaces from the string.
Definition: cxstring.c:565
cx_string * cx_string_substr(const cx_string *, cxsize, cxsize)
Create a new string from a portion of a string.
Definition: cxstring.c:1347
cx_string * cx_string_trim(cx_string *)
Remove leading whitespaces from the string.
Definition: cxstring.c:511
cxsize cx_string_size(const cx_string *)
Computes the length of the string.
Definition: cxstring.c:332
cxsize cx_string_find_first_not_of(const cx_string *, const cxchar *)
Search a string for the first character that does not match any of the given characters.
Definition: cxstring.c:1247
cx_string * cx_string_lower(cx_string *)
Converts the string into lowercase.
Definition: cxstring.c:476
cx_string * cx_string_create(const cxchar *)
Create a new string from a standard C string.
Definition: cxstring.c:278
void cx_string_extend(cx_string *, cxsize, cxchar)
Extend a string to a given length.
Definition: cxstring.c:1203
cx_string * cx_string_rtrim(cx_string *)
Remove trailing whitespaces from the string.
Definition: cxstring.c:538
cxint cx_string_ncasecmp(const cx_string *, const cx_string *, cxsize)
Compare the first n characters of two strings ignoring the case of characters.
Definition: cxstring.c:962
cxint cx_string_casecmp(const cx_string *, const cx_string *)
Compare two strings ignoring the case of characters.
Definition: cxstring.c:927