2003-03-31 Havoc Pennington <hp@redhat.com>
[platform/upstream/dbus.git] / dbus / dbus-string.h
1 /* -*- mode: C; c-file-style: "gnu" -*- */
2 /* dbus-string.h String utility class (internal to D-BUS implementation)
3  * 
4  * Copyright (C) 2002  Red Hat, Inc.
5  *
6  * Licensed under the Academic Free License version 1.2
7  * 
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  * 
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  *
22  */
23
24 #ifndef DBUS_STRING_H
25 #define DBUS_STRING_H
26
27 #include <config.h>
28
29 #include <dbus/dbus-memory.h>
30 #include <dbus/dbus-types.h>
31
32 DBUS_BEGIN_DECLS;
33
34 typedef struct DBusString DBusString;
35
36 struct DBusString
37 {
38   void *dummy1; /**< placeholder */
39   int   dummy2; /**< placeholder */
40   int   dummy3; /**< placeholder */
41   int   dummy4; /**< placeholder */
42   unsigned int dummy5 : 1; /**< placeholder */
43   unsigned int dummy6 : 1; /**< placeholder */
44   unsigned int dummy7 : 1; /**< placeholder */
45   unsigned int dummy8 : 3; /**< placeholder */
46 };
47
48 dbus_bool_t _dbus_string_init           (DBusString *str);
49 void        _dbus_string_init_const     (DBusString *str,
50                                          const char *value);
51 void        _dbus_string_init_const_len (DBusString *str,
52                                          const char *value,
53                                          int         len);
54 void        _dbus_string_free           (DBusString *str);
55 void        _dbus_string_lock           (DBusString *str);
56
57 char*       _dbus_string_get_data           (DBusString        *str);
58 const char* _dbus_string_get_const_data     (const DBusString  *str);
59 char*       _dbus_string_get_data_len       (DBusString        *str,
60                                              int                start,
61                                              int                len);
62 const char* _dbus_string_get_const_data_len (const DBusString  *str,
63                                              int                start,
64                                              int                len);
65 void        _dbus_string_set_byte           (DBusString        *str,
66                                              int                i,
67                                              unsigned char      byte);
68 unsigned char _dbus_string_get_byte         (const DBusString  *str,
69                                              int                start);
70 dbus_bool_t _dbus_string_insert_byte        (DBusString        *str,
71                                              int                i,
72                                              unsigned char      byte);
73 dbus_bool_t _dbus_string_steal_data         (DBusString        *str,
74                                              char             **data_return);
75 dbus_bool_t _dbus_string_steal_data_len     (DBusString        *str,
76                                              char             **data_return,
77                                              int                start,
78                                              int                len);
79 dbus_bool_t _dbus_string_copy_data          (const DBusString  *str,
80                                              char             **data_return);
81 dbus_bool_t _dbus_string_copy_data_len      (const DBusString  *str,
82                                              char             **data_return,
83                                              int                start,
84                                              int                len);
85
86 int  _dbus_string_get_length         (const DBusString  *str);
87
88 dbus_bool_t _dbus_string_lengthen     (DBusString *str,
89                                        int         additional_length);
90 void        _dbus_string_shorten      (DBusString *str,
91                                        int         length_to_remove);
92 dbus_bool_t _dbus_string_set_length   (DBusString *str,
93                                        int         length);
94 dbus_bool_t _dbus_string_align_length (DBusString *str,
95                                        int         alignment);
96
97 dbus_bool_t _dbus_string_append         (DBusString    *str,
98                                          const char    *buffer);
99 dbus_bool_t _dbus_string_append_len     (DBusString    *str,
100                                          const char    *buffer,
101                                          int            len);
102 dbus_bool_t _dbus_string_append_int     (DBusString    *str,
103                                          long           value);
104 dbus_bool_t _dbus_string_append_uint    (DBusString    *str,
105                                          unsigned long  value);
106 dbus_bool_t _dbus_string_append_double  (DBusString    *str,
107                                          double         value);
108 dbus_bool_t _dbus_string_append_byte    (DBusString    *str,
109                                          unsigned char  byte);
110 dbus_bool_t _dbus_string_append_unichar (DBusString    *str,
111                                          dbus_unichar_t ch);
112
113
114 void        _dbus_string_delete     (DBusString       *str,
115                                      int               start,
116                                      int               len);
117 dbus_bool_t _dbus_string_move       (DBusString       *source,
118                                      int               start,
119                                      DBusString       *dest,
120                                      int               insert_at);
121 dbus_bool_t _dbus_string_copy       (const DBusString *source,
122                                      int               start,
123                                      DBusString       *dest,
124                                      int               insert_at);
125 dbus_bool_t _dbus_string_move_len   (DBusString       *source,
126                                      int               start,
127                                      int               len,
128                                      DBusString       *dest,
129                                      int               insert_at);
130 dbus_bool_t _dbus_string_copy_len   (const DBusString *source,
131                                      int               start,
132                                      int               len,
133                                      DBusString       *dest,
134                                      int               insert_at);
135
136 dbus_bool_t _dbus_string_replace_len (const DBusString *source,
137                                       int               start,
138                                       int               len,
139                                       DBusString       *dest,
140                                       int               replace_at,
141                                       int               replace_len);
142
143 void       _dbus_string_get_unichar (const DBusString *str,
144                                      int               start,
145                                      dbus_unichar_t   *ch_return,
146                                      int              *end_return);
147
148 dbus_bool_t _dbus_string_parse_int    (const DBusString *str,
149                                        int               start,
150                                        long             *value_return,
151                                        int              *end_return);
152 dbus_bool_t _dbus_string_parse_uint   (const DBusString *str,
153                                        int               start,
154                                        unsigned long    *value_return,
155                                        int              *end_return);
156 dbus_bool_t _dbus_string_parse_double (const DBusString *str,
157                                        int               start,
158                                        double           *value,
159                                        int              *end_return);
160
161 dbus_bool_t _dbus_string_find         (const DBusString *str,
162                                        int               start,
163                                        const char       *substr,
164                                        int              *found);
165
166 dbus_bool_t _dbus_string_find_to      (const DBusString *str,
167                                        int               start,
168                                        int               end,
169                                        const char       *substr,
170                                        int              *found);
171 dbus_bool_t _dbus_string_find_blank   (const DBusString *str,
172                                        int               start,
173                                        int              *found);
174
175 void        _dbus_string_skip_blank   (const DBusString *str,
176                                        int               start,
177                                        int              *end);
178
179 void        _dbus_string_skip_white   (const DBusString *str,
180                                        int               start,
181                                        int              *end);
182
183 dbus_bool_t _dbus_string_equal        (const DBusString *a,
184                                        const DBusString *b);
185
186 dbus_bool_t _dbus_string_equal_c_str  (const DBusString *a,
187                                        const char       *c_str);
188
189 dbus_bool_t _dbus_string_equal_len    (const DBusString *a,
190                                        const DBusString *b,
191                                        int               len);
192
193 dbus_bool_t _dbus_string_starts_with_c_str  (const DBusString *a,
194                                              const char       *c_str);
195 dbus_bool_t _dbus_string_ends_with_c_str    (const DBusString *a,
196                                              const char       *c_str);
197
198 dbus_bool_t _dbus_string_pop_line              (DBusString *source,
199                                                 DBusString *dest);
200 void        _dbus_string_delete_first_word     (DBusString *str);
201 void        _dbus_string_delete_leading_blanks (DBusString *str);
202
203
204 dbus_bool_t _dbus_string_base64_encode (const DBusString *source,
205                                         int               start,
206                                         DBusString       *dest,
207                                         int               insert_at);
208 dbus_bool_t _dbus_string_base64_decode (const DBusString *source,
209                                         int               start,
210                                         DBusString       *dest,
211                                         int               insert_at);
212 dbus_bool_t _dbus_string_hex_encode    (const DBusString *source,
213                                         int               start,
214                                         DBusString       *dest,
215                                         int               insert_at);
216 dbus_bool_t _dbus_string_hex_decode    (const DBusString *source,
217                                         int               start,
218                                         DBusString       *dest,
219                                         int               insert_at);
220
221 dbus_bool_t _dbus_string_validate_ascii (const DBusString *str,
222                                          int               start,
223                                          int               len);
224
225 dbus_bool_t _dbus_string_validate_utf8  (const DBusString *str,
226                                          int               start,
227                                          int               len);
228
229 dbus_bool_t _dbus_string_validate_nul   (const DBusString *str,
230                                          int               start,
231                                          int               len);
232
233 void _dbus_string_zero (DBusString *str);
234
235 DBUS_END_DECLS;
236
237 #endif /* DBUS_STRING_H */