source: trunk/third/glib2/glib/gstrfuncs.h @ 20721

Revision 20721, 8.7 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r20720, which included commits to RCS files with non-trunk default branches.
Line 
1/* GLIB - Library of useful routines for C programming
2 * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20/*
21 * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
22 * file for a list of people on the GLib Team.  See the ChangeLog
23 * files for a list of changes.  These files are distributed with
24 * GLib at ftp://ftp.gtk.org/pub/gtk/.
25 */
26
27#ifndef __G_STRFUNCS_H__
28#define __G_STRFUNCS_H__
29
30#include <stdarg.h>
31#include <glib/gtypes.h>
32
33G_BEGIN_DECLS
34
35/* Functions like the ones in <ctype.h> that are not affected by locale. */
36typedef enum {
37  G_ASCII_ALNUM  = 1 << 0,
38  G_ASCII_ALPHA  = 1 << 1,
39  G_ASCII_CNTRL  = 1 << 2,
40  G_ASCII_DIGIT  = 1 << 3,
41  G_ASCII_GRAPH  = 1 << 4,
42  G_ASCII_LOWER  = 1 << 5,
43  G_ASCII_PRINT  = 1 << 6,
44  G_ASCII_PUNCT  = 1 << 7,
45  G_ASCII_SPACE  = 1 << 8,
46  G_ASCII_UPPER  = 1 << 9,
47  G_ASCII_XDIGIT = 1 << 10
48} GAsciiType;
49
50GLIB_VAR const guint16 * const g_ascii_table;
51
52#define g_ascii_isalnum(c) \
53  ((g_ascii_table[(guchar) (c)] & G_ASCII_ALNUM) != 0)
54
55#define g_ascii_isalpha(c) \
56  ((g_ascii_table[(guchar) (c)] & G_ASCII_ALPHA) != 0)
57
58#define g_ascii_iscntrl(c) \
59  ((g_ascii_table[(guchar) (c)] & G_ASCII_CNTRL) != 0)
60
61#define g_ascii_isdigit(c) \
62  ((g_ascii_table[(guchar) (c)] & G_ASCII_DIGIT) != 0)
63
64#define g_ascii_isgraph(c) \
65  ((g_ascii_table[(guchar) (c)] & G_ASCII_GRAPH) != 0)
66
67#define g_ascii_islower(c) \
68  ((g_ascii_table[(guchar) (c)] & G_ASCII_LOWER) != 0)
69
70#define g_ascii_isprint(c) \
71  ((g_ascii_table[(guchar) (c)] & G_ASCII_PRINT) != 0)
72
73#define g_ascii_ispunct(c) \
74  ((g_ascii_table[(guchar) (c)] & G_ASCII_PUNCT) != 0)
75
76#define g_ascii_isspace(c) \
77  ((g_ascii_table[(guchar) (c)] & G_ASCII_SPACE) != 0)
78
79#define g_ascii_isupper(c) \
80  ((g_ascii_table[(guchar) (c)] & G_ASCII_UPPER) != 0)
81
82#define g_ascii_isxdigit(c) \
83  ((g_ascii_table[(guchar) (c)] & G_ASCII_XDIGIT) != 0)
84
85gchar                 g_ascii_tolower  (gchar        c) G_GNUC_CONST;
86gchar                 g_ascii_toupper  (gchar        c) G_GNUC_CONST;
87
88gint                  g_ascii_digit_value  (gchar    c) G_GNUC_CONST;
89gint                  g_ascii_xdigit_value (gchar    c) G_GNUC_CONST;
90
91/* String utility functions that modify a string argument or
92 * return a constant string that must not be freed.
93 */
94#define  G_STR_DELIMITERS       "_-|> <."
95gchar*                g_strdelimit     (gchar        *string,
96                                        const gchar  *delimiters,
97                                        gchar         new_delimiter);
98gchar*                g_strcanon       (gchar        *string,
99                                        const gchar  *valid_chars,
100                                        gchar         substitutor);
101G_CONST_RETURN gchar* g_strerror       (gint          errnum) G_GNUC_CONST;
102G_CONST_RETURN gchar* g_strsignal      (gint          signum) G_GNUC_CONST;
103gchar*                g_strreverse     (gchar        *string);
104gsize                 g_strlcpy        (gchar        *dest,
105                                        const gchar  *src,
106                                        gsize         dest_size);
107gsize                 g_strlcat        (gchar        *dest,
108                                        const gchar  *src,
109                                        gsize         dest_size);
110gchar *               g_strstr_len     (const gchar  *haystack,
111                                        gssize        haystack_len,
112                                        const gchar  *needle);
113gchar *               g_strrstr        (const gchar  *haystack,
114                                        const gchar  *needle);
115gchar *               g_strrstr_len    (const gchar  *haystack,
116                                        gssize        haystack_len,
117                                        const gchar  *needle);
118
119gboolean              g_str_has_suffix (const gchar  *str,
120                                        const gchar  *suffix);
121gboolean              g_str_has_prefix (const gchar  *str,
122                                        const gchar  *prefix);
123
124/* String to/from double conversion functions */
125
126gdouble               g_strtod         (const gchar  *nptr,
127                                        gchar       **endptr);
128gdouble               g_ascii_strtod   (const gchar  *nptr,
129                                        gchar       **endptr);
130guint64               g_ascii_strtoull (const gchar *nptr,
131                                        gchar      **endptr,
132                                        guint        base);
133/* 29 bytes should enough for all possible values that
134 * g_ascii_dtostr can produce.
135 * Then add 10 for good measure */
136#define G_ASCII_DTOSTR_BUF_SIZE (29 + 10)
137gchar *               g_ascii_dtostr   (gchar        *buffer,
138                                        gint          buf_len,
139                                        gdouble       d);
140gchar *               g_ascii_formatd  (gchar        *buffer,
141                                        gint          buf_len,
142                                        const gchar  *format,
143                                        gdouble       d);
144
145/* removes leading spaces */
146gchar*                g_strchug        (gchar        *string);
147/* removes trailing spaces */
148gchar*                g_strchomp       (gchar        *string);
149/* removes leading & trailing spaces */
150#define g_strstrip( string )    g_strchomp (g_strchug (string))
151
152gint                  g_ascii_strcasecmp  (const gchar *s1,
153                                           const gchar *s2);
154gint                  g_ascii_strncasecmp (const gchar *s1,
155                                           const gchar *s2,
156                                           gsize        n);
157gchar*                g_ascii_strdown     (const gchar *str,
158                                           gssize       len);
159gchar*                g_ascii_strup       (const gchar *str,
160                                           gssize       len);
161
162#ifndef G_DISABLE_DEPRECATED
163
164/* The following four functions are deprecated and will be removed in
165 * the next major release. They use the locale-specific tolower and
166 * toupper, which is almost never the right thing.
167 */
168
169gint                  g_strcasecmp     (const gchar *s1,
170                                        const gchar *s2);
171gint                  g_strncasecmp    (const gchar *s1,
172                                        const gchar *s2,
173                                        guint        n);
174gchar*                g_strdown        (gchar        *string);
175gchar*                g_strup          (gchar        *string);
176
177#endif /* G_DISABLE_DEPRECATED */
178
179/* String utility functions that return a newly allocated string which
180 * ought to be freed with g_free from the caller at some point.
181 */
182gchar*                g_strdup         (const gchar *str);
183gchar*                g_strdup_printf  (const gchar *format,
184                                        ...) G_GNUC_PRINTF (1, 2);
185gchar*                g_strdup_vprintf (const gchar *format,
186                                        va_list      args);
187gchar*                g_strndup        (const gchar *str,
188                                        gsize        n); 
189gchar*                g_strnfill       (gsize        length, 
190                                        gchar        fill_char);
191gchar*                g_strconcat      (const gchar *string1,
192                                        ...); /* NULL terminated */
193gchar*                g_strjoin        (const gchar  *separator,
194                                        ...); /* NULL terminated */
195/* Make a copy of a string interpreting C string -style escape
196 * sequences. Inverse of g_strescape. The recognized sequences are \b
197 * \f \n \r \t \\ \" and the octal format.
198 */
199gchar*                g_strcompress    (const gchar *source);
200
201/* Copy a string escaping nonprintable characters like in C strings.
202 * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points
203 * to a string containing characters that are not to be escaped.
204 *
205 * Deprecated API: gchar* g_strescape (const gchar *source);
206 * Luckily this function wasn't used much, using NULL as second parameter
207 * provides mostly identical semantics.
208 */
209gchar*                g_strescape      (const gchar *source,
210                                        const gchar *exceptions);
211
212gpointer              g_memdup         (gconstpointer mem,
213                                        guint          byte_size);
214
215/* NULL terminated string arrays.
216 * g_strsplit(), g_strsplit_set() split up string into max_tokens tokens
217 * at delim and return a newly allocated string array.
218 * g_strjoinv() concatenates all of str_array's strings, sliding in an
219 * optional separator, the returned string is newly allocated.
220 * g_strfreev() frees the array itself and all of its strings.
221 * g_strdupv() copies a NULL-terminated array of strings
222 */
223gchar**               g_strsplit       (const gchar  *string,
224                                        const gchar  *delimiter,
225                                        gint          max_tokens);
226gchar **              g_strsplit_set   (const gchar *string,
227                                        const gchar *delimiters,
228                                        gint         max_tokens);
229gchar*                g_strjoinv       (const gchar  *separator,
230                                        gchar       **str_array);
231void                  g_strfreev       (gchar       **str_array);
232gchar**               g_strdupv        (gchar       **str_array);
233
234gchar*                g_stpcpy         (gchar        *dest,
235                                        const char   *src);
236
237G_CONST_RETURN gchar *g_strip_context  (const gchar *msgid,
238                                        const gchar *msgval);
239
240G_END_DECLS
241
242#endif /* __G_STRFUNCS_H__ */
Note: See TracBrowser for help on using the repository browser.