D-Bus
1.6.8
Main Page
Related Pages
Modules
Data Structures
Files
File List
dbus
dbus-string.h
1
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
2
/* dbus-string.h String utility class (internal to D-Bus implementation)
3
*
4
* Copyright (C) 2002, 2003 Red Hat, Inc.
5
* Copyright (C) 2006 Ralf Habacker <ralf.habacker@freenet.de>
6
*
7
* Licensed under the Academic Free License version 2.1
8
*
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation; either version 2 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*
23
*/
24
25
#ifndef DBUS_STRING_H
26
#define DBUS_STRING_H
27
28
#include <dbus/dbus-macros.h>
29
#include <dbus/dbus-types.h>
30
#include <dbus/dbus-memory.h>
31
32
#include <stdarg.h>
33
34
DBUS_BEGIN_DECLS
35
40
typedef
struct
DBusString
DBusString
;
41
42
struct
DBusString
43
{
44
#if defined(DBUS_WIN) && defined(_DEBUG)
45
const
char
*
dummy1
;
46
#else
47
const
void
*
dummy1
;
48
#endif
49
int
dummy2
;
50
int
dummy3
;
51
unsigned
int
dummy_bit1
: 1;
52
unsigned
int
dummy_bit2
: 1;
53
unsigned
int
dummy_bit3
: 1;
54
unsigned
int
dummy_bits
: 3;
55
};
56
57
#ifdef DBUS_DISABLE_ASSERT
58
/* Some simple inlining hacks; the current linker is not smart enough
59
* to inline non-exported symbols across files in the library.
60
* Note that these break type safety (due to the casts)
61
*/
62
#define _dbus_string_get_data(s) ((char*)(((DBusString*)(s))->dummy1))
63
#define _dbus_string_get_length(s) (((DBusString*)(s))->dummy2)
64
#define _dbus_string_set_byte(s, i, b) ((((unsigned char*)(((DBusString*)(s))->dummy1))[(i)]) = (unsigned char) (b))
65
#define _dbus_string_get_byte(s, i) (((const unsigned char*)(((DBusString*)(s))->dummy1))[(i)])
66
#define _dbus_string_get_const_data(s) ((const char*)(((DBusString*)(s))->dummy1))
67
#define _dbus_string_get_const_data_len(s,start,len) (((const char*)(((DBusString*)(s))->dummy1)) + (start))
68
#endif
69
70
dbus_bool_t
_dbus_string_init
(
DBusString
*str);
71
void
_dbus_string_init_const
(
DBusString
*str,
72
const
char
*value);
73
void
_dbus_string_init_const_len
(
DBusString
*str,
74
const
char
*value,
75
int
len);
76
dbus_bool_t
_dbus_string_init_preallocated
(
DBusString
*str,
77
int
allocate_size);
78
void
_dbus_string_free
(
DBusString
*str);
79
void
_dbus_string_lock (
DBusString
*str);
80
dbus_bool_t
_dbus_string_compact
(
DBusString
*str,
81
int
max_waste);
82
#ifndef _dbus_string_get_data
83
char
*
_dbus_string_get_data
(
DBusString
*str);
84
#endif
/* _dbus_string_get_data */
85
#ifndef _dbus_string_get_const_data
86
const
char
*
_dbus_string_get_const_data
(
const
DBusString
*str);
87
#endif
/* _dbus_string_get_const_data */
88
char
*
_dbus_string_get_data_len
(
DBusString
*str,
89
int
start,
90
int
len);
91
#ifndef _dbus_string_get_const_data_len
92
const
char
*
_dbus_string_get_const_data_len
(
const
DBusString
*str,
93
int
start,
94
int
len);
95
#endif
96
#ifndef _dbus_string_set_byte
97
void
_dbus_string_set_byte
(
DBusString
*str,
98
int
i,
99
unsigned
char
byte);
100
#endif
101
#ifndef _dbus_string_get_byte
102
unsigned
char
_dbus_string_get_byte
(
const
DBusString
*str,
103
int
start);
104
#endif
/* _dbus_string_get_byte */
105
dbus_bool_t
_dbus_string_insert_bytes
(
DBusString
*str,
106
int
i,
107
int
n_bytes,
108
unsigned
char
byte);
109
dbus_bool_t
_dbus_string_insert_byte
(
DBusString
*str,
110
int
i,
111
unsigned
char
byte);
112
dbus_bool_t
_dbus_string_steal_data
(
DBusString
*str,
113
char
**data_return);
114
dbus_bool_t
_dbus_string_steal_data_len (
DBusString
*str,
115
char
**data_return,
116
int
start,
117
int
len);
118
dbus_bool_t
_dbus_string_copy_data
(
const
DBusString
*str,
119
char
**data_return);
120
dbus_bool_t
_dbus_string_copy_data_len (
const
DBusString
*str,
121
char
**data_return,
122
int
start,
123
int
len);
124
void
_dbus_string_copy_to_buffer
(
const
DBusString
*str,
125
char
*buffer,
126
int
len);
127
void
_dbus_string_copy_to_buffer_with_nul
(
const
DBusString
*str,
128
char
*buffer,
129
int
avail_len);
130
#ifndef _dbus_string_get_length
131
int
_dbus_string_get_length
(
const
DBusString
*str);
132
#endif
/* !_dbus_string_get_length */
133
134
dbus_bool_t
_dbus_string_lengthen
(
DBusString
*str,
135
int
additional_length);
136
void
_dbus_string_shorten
(
DBusString
*str,
137
int
length_to_remove);
138
dbus_bool_t
_dbus_string_set_length
(
DBusString
*str,
139
int
length);
140
dbus_bool_t
_dbus_string_align_length
(
DBusString
*str,
141
int
alignment);
142
dbus_bool_t
_dbus_string_alloc_space
(
DBusString
*str,
143
int
extra_bytes);
144
dbus_bool_t
_dbus_string_append
(
DBusString
*str,
145
const
char
*buffer);
146
dbus_bool_t
_dbus_string_append_len
(
DBusString
*str,
147
const
char
*buffer,
148
int
len);
149
dbus_bool_t
_dbus_string_append_int
(
DBusString
*str,
150
long
value);
151
dbus_bool_t
_dbus_string_append_uint
(
DBusString
*str,
152
unsigned
long
value);
153
dbus_bool_t
_dbus_string_append_byte
(
DBusString
*str,
154
unsigned
char
byte);
155
dbus_bool_t
_dbus_string_append_printf
(
DBusString
*str,
156
const
char
*format,
157
...) _DBUS_GNUC_PRINTF (2, 3);
158
dbus_bool_t
_dbus_string_append_printf_valist
(
DBusString
*str,
159
const
char
*format,
160
va_list args);
161
dbus_bool_t
_dbus_string_insert_2_aligned
(
DBusString
*str,
162
int
insert_at,
163
const
unsigned
char
octets[2]);
164
dbus_bool_t
_dbus_string_insert_4_aligned
(
DBusString
*str,
165
int
insert_at,
166
const
unsigned
char
octets[4]);
167
dbus_bool_t
_dbus_string_insert_8_aligned
(
DBusString
*str,
168
int
insert_at,
169
const
unsigned
char
octets[8]);
170
dbus_bool_t
_dbus_string_insert_alignment
(
DBusString
*str,
171
int
*insert_at,
172
int
alignment);
173
void
_dbus_string_delete
(
DBusString
*str,
174
int
start,
175
int
len);
176
dbus_bool_t
_dbus_string_move
(
DBusString
*source,
177
int
start,
178
DBusString
*dest,
179
int
insert_at);
180
dbus_bool_t
_dbus_string_copy
(const
DBusString
*source,
181
int
start,
182
DBusString
*dest,
183
int
insert_at);
184
dbus_bool_t
_dbus_string_move_len
(
DBusString
*source,
185
int
start,
186
int
len,
187
DBusString
*dest,
188
int
insert_at);
189
dbus_bool_t
_dbus_string_copy_len
(const
DBusString
*source,
190
int
start,
191
int
len,
192
DBusString
*dest,
193
int
insert_at);
194
dbus_bool_t
_dbus_string_replace_len
(const
DBusString
*source,
195
int
start,
196
int
len,
197
DBusString
*dest,
198
int
replace_at,
199
int
replace_len);
200
dbus_bool_t
_dbus_string_split_on_byte
(
DBusString
*source,
201
unsigned
char
byte,
202
DBusString
*tail);
203
dbus_bool_t
_dbus_string_parse_int
(const
DBusString
*str,
204
int
start,
205
long
*value_return,
206
int
*end_return);
207
dbus_bool_t
_dbus_string_parse_uint
(const
DBusString
*str,
208
int
start,
209
unsigned
long
*value_return,
210
int
*end_return);
211
dbus_bool_t
_dbus_string_find
(const
DBusString
*str,
212
int
start,
213
const
char
*substr,
214
int
*found);
215
dbus_bool_t
_dbus_string_find_eol
(const
DBusString
*str,
216
int
start,
217
int
*found,
218
int
*found_len);
219
dbus_bool_t
_dbus_string_find_to
(const
DBusString
*str,
220
int
start,
221
int
end,
222
const
char
*substr,
223
int
*found);
224
dbus_bool_t
_dbus_string_find_byte_backward
(const
DBusString
*str,
225
int
start,
226
unsigned
char
byte,
227
int
*found);
228
dbus_bool_t
_dbus_string_find_blank
(const
DBusString
*str,
229
int
start,
230
int
*found);
231
void
_dbus_string_skip_blank
(const
DBusString
*str,
232
int
start,
233
int
*end);
234
void
_dbus_string_skip_white
(const
DBusString
*str,
235
int
start,
236
int
*end);
237
void
_dbus_string_skip_white_reverse
(const
DBusString
*str,
238
int
end,
239
int
*start);
240
dbus_bool_t
_dbus_string_equal
(const
DBusString
*a,
241
const
DBusString
*b);
242
dbus_bool_t
_dbus_string_equal_c_str
(const
DBusString
*a,
243
const
char
*c_str);
244
dbus_bool_t
_dbus_string_equal_len
(const
DBusString
*a,
245
const
DBusString
*b,
246
int
len);
247
dbus_bool_t
_dbus_string_equal_substring
(const
DBusString
*a,
248
int
a_start,
249
int
a_len,
250
const
DBusString
*b,
251
int
b_start);
252
dbus_bool_t
_dbus_string_starts_with_c_str
(const
DBusString
*a,
253
const
char
*c_str);
254
dbus_bool_t
_dbus_string_ends_with_c_str
(const
DBusString
*a,
255
const
char
*c_str);
256
dbus_bool_t
_dbus_string_pop_line
(
DBusString
*source,
257
DBusString
*dest);
258
void
_dbus_string_delete_first_word (
DBusString
*str);
259
void
_dbus_string_delete_leading_blanks (
DBusString
*str);
260
void
_dbus_string_chop_white
(
DBusString
*str);
261
dbus_bool_t
_dbus_string_append_byte_as_hex
(
DBusString
*str,
262
int
byte);
263
dbus_bool_t
_dbus_string_hex_encode
(const
DBusString
*source,
264
int
start,
265
DBusString
*dest,
266
int
insert_at);
267
dbus_bool_t
_dbus_string_hex_decode
(const
DBusString
*source,
268
int
start,
269
int
*end_return,
270
DBusString
*dest,
271
int
insert_at);
272
void
_dbus_string_tolower_ascii
(const
DBusString
*str,
273
int
start,
274
int
len);
275
void
_dbus_string_toupper_ascii
(const
DBusString
*str,
276
int
start,
277
int
len);
278
dbus_bool_t
_dbus_string_validate_ascii
(const
DBusString
*str,
279
int
start,
280
int
len);
281
dbus_bool_t
_dbus_string_validate_utf8
(const
DBusString
*str,
282
int
start,
283
int
len);
284
dbus_bool_t
_dbus_string_validate_nul
(const
DBusString
*str,
285
int
start,
286
int
len);
287
void
_dbus_string_zero
(
DBusString
*str);
288
289
295
#define _DBUS_STRING_ALLOCATION_PADDING 8
296
304
#define _DBUS_STRING_DEFINE_STATIC(name, str) \
305
static const char _dbus_static_string_##name[] = str; \
306
static const DBusString name = { _dbus_static_string_##name, \
307
sizeof(_dbus_static_string_##name), \
308
sizeof(_dbus_static_string_##name) + \
309
_DBUS_STRING_ALLOCATION_PADDING, \
310
TRUE, TRUE, FALSE, 0 }
311
312
DBUS_END_DECLS
313
314
#endif
/* DBUS_STRING_H */
Generated on Tue Jun 10 2014 19:46:20 for D-Bus by
1.8.3