00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef DBUS_STRING_H
00025 #define DBUS_STRING_H
00026
00027 #include <config.h>
00028
00029 #include <dbus/dbus-memory.h>
00030 #include <dbus/dbus-types.h>
00031 #include <dbus/dbus-sysdeps.h>
00032
00033 #include <stdarg.h>
00034
00035 DBUS_BEGIN_DECLS
00036
00040 struct DBusString
00041 {
00042 void *dummy1;
00043 int dummy2;
00044 int dummy3;
00045 int dummy4;
00046 unsigned int dummy5 : 1;
00047 unsigned int dummy6 : 1;
00048 unsigned int dummy7 : 1;
00049 unsigned int dummy8 : 3;
00050 };
00051
00052 #ifdef DBUS_DISABLE_ASSERT
00053
00054
00055
00056
00057 #define _dbus_string_get_length(s) (((DBusString*)(s))->dummy2)
00058 #define _dbus_string_get_byte(s, i) (((const unsigned char*)(((DBusString*)(s))->dummy1))[(i)])
00059 #define _dbus_string_get_const_data(s) ((const char*)(((DBusString*)(s))->dummy1))
00060 #endif
00061
00062 dbus_bool_t _dbus_string_init (DBusString *str);
00063 void _dbus_string_init_const (DBusString *str,
00064 const char *value);
00065 void _dbus_string_init_const_len (DBusString *str,
00066 const char *value,
00067 int len);
00068 dbus_bool_t _dbus_string_init_preallocated (DBusString *str,
00069 int allocate_size);
00070 void _dbus_string_free (DBusString *str);
00071 void _dbus_string_lock (DBusString *str);
00072 char* _dbus_string_get_data (DBusString *str);
00073 #ifndef _dbus_string_get_const_data
00074 const char* _dbus_string_get_const_data (const DBusString *str);
00075 #endif
00076 char* _dbus_string_get_data_len (DBusString *str,
00077 int start,
00078 int len);
00079 const char* _dbus_string_get_const_data_len (const DBusString *str,
00080 int start,
00081 int len);
00082 void _dbus_string_set_byte (DBusString *str,
00083 int i,
00084 unsigned char byte);
00085 #ifndef _dbus_string_get_byte
00086 unsigned char _dbus_string_get_byte (const DBusString *str,
00087 int start);
00088 #endif
00089 dbus_bool_t _dbus_string_insert_bytes (DBusString *str,
00090 int i,
00091 int n_bytes,
00092 unsigned char byte);
00093 dbus_bool_t _dbus_string_insert_byte (DBusString *str,
00094 int i,
00095 unsigned char byte);
00096 dbus_bool_t _dbus_string_steal_data (DBusString *str,
00097 char **data_return);
00098 dbus_bool_t _dbus_string_steal_data_len (DBusString *str,
00099 char **data_return,
00100 int start,
00101 int len);
00102 dbus_bool_t _dbus_string_copy_data (const DBusString *str,
00103 char **data_return);
00104 dbus_bool_t _dbus_string_copy_data_len (const DBusString *str,
00105 char **data_return,
00106 int start,
00107 int len);
00108 void _dbus_string_copy_to_buffer (const DBusString *str,
00109 char *buffer,
00110 int len);
00111 #ifndef _dbus_string_get_length
00112 int _dbus_string_get_length (const DBusString *str);
00113 #endif
00114
00115 dbus_bool_t _dbus_string_lengthen (DBusString *str,
00116 int additional_length);
00117 void _dbus_string_shorten (DBusString *str,
00118 int length_to_remove);
00119 dbus_bool_t _dbus_string_set_length (DBusString *str,
00120 int length);
00121 dbus_bool_t _dbus_string_align_length (DBusString *str,
00122 int alignment);
00123 dbus_bool_t _dbus_string_alloc_space (DBusString *str,
00124 int extra_bytes);
00125 dbus_bool_t _dbus_string_append (DBusString *str,
00126 const char *buffer);
00127 dbus_bool_t _dbus_string_append_len (DBusString *str,
00128 const char *buffer,
00129 int len);
00130 dbus_bool_t _dbus_string_append_int (DBusString *str,
00131 long value);
00132 dbus_bool_t _dbus_string_append_uint (DBusString *str,
00133 unsigned long value);
00134 dbus_bool_t _dbus_string_append_double (DBusString *str,
00135 double value);
00136 dbus_bool_t _dbus_string_append_byte (DBusString *str,
00137 unsigned char byte);
00138 dbus_bool_t _dbus_string_append_unichar (DBusString *str,
00139 dbus_unichar_t ch);
00140 dbus_bool_t _dbus_string_append_4_aligned (DBusString *str,
00141 const unsigned char octets[4]);
00142 dbus_bool_t _dbus_string_append_8_aligned (DBusString *str,
00143 const unsigned char octets[8]);
00144 dbus_bool_t _dbus_string_append_printf (DBusString *str,
00145 const char *format,
00146 ...) _DBUS_GNUC_PRINTF (2, 3);
00147 dbus_bool_t _dbus_string_append_printf_valist (DBusString *str,
00148 const char *format,
00149 va_list args);
00150 dbus_bool_t _dbus_string_insert_4_aligned (DBusString *str,
00151 int insert_at,
00152 const unsigned char octets[4]);
00153 dbus_bool_t _dbus_string_insert_8_aligned (DBusString *str,
00154 int insert_at,
00155 const unsigned char octets[8]);
00156 dbus_bool_t _dbus_string_insert_alignment (DBusString *str,
00157 int *insert_at,
00158 int alignment);
00159 void _dbus_string_delete (DBusString *str,
00160 int start,
00161 int len);
00162 dbus_bool_t _dbus_string_move (DBusString *source,
00163 int start,
00164 DBusString *dest,
00165 int insert_at);
00166 dbus_bool_t _dbus_string_copy (const DBusString *source,
00167 int start,
00168 DBusString *dest,
00169 int insert_at);
00170 dbus_bool_t _dbus_string_move_len (DBusString *source,
00171 int start,
00172 int len,
00173 DBusString *dest,
00174 int insert_at);
00175 dbus_bool_t _dbus_string_copy_len (const DBusString *source,
00176 int start,
00177 int len,
00178 DBusString *dest,
00179 int insert_at);
00180 dbus_bool_t _dbus_string_replace_len (const DBusString *source,
00181 int start,
00182 int len,
00183 DBusString *dest,
00184 int replace_at,
00185 int replace_len);
00186 void _dbus_string_get_unichar (const DBusString *str,
00187 int start,
00188 dbus_unichar_t *ch_return,
00189 int *end_return);
00190 dbus_bool_t _dbus_string_parse_int (const DBusString *str,
00191 int start,
00192 long *value_return,
00193 int *end_return);
00194 dbus_bool_t _dbus_string_parse_uint (const DBusString *str,
00195 int start,
00196 unsigned long *value_return,
00197 int *end_return);
00198 dbus_bool_t _dbus_string_parse_double (const DBusString *str,
00199 int start,
00200 double *value,
00201 int *end_return);
00202 dbus_bool_t _dbus_string_parse_basic_type (const DBusString *str,
00203 char type,
00204 int start,
00205 void *value,
00206 int *end_return);
00207 dbus_bool_t _dbus_string_find (const DBusString *str,
00208 int start,
00209 const char *substr,
00210 int *found);
00211 dbus_bool_t _dbus_string_find_to (const DBusString *str,
00212 int start,
00213 int end,
00214 const char *substr,
00215 int *found);
00216 dbus_bool_t _dbus_string_find_byte_backward (const DBusString *str,
00217 int start,
00218 unsigned char byte,
00219 int *found);
00220 dbus_bool_t _dbus_string_find_blank (const DBusString *str,
00221 int start,
00222 int *found);
00223 void _dbus_string_skip_blank (const DBusString *str,
00224 int start,
00225 int *end);
00226 void _dbus_string_skip_white (const DBusString *str,
00227 int start,
00228 int *end);
00229 dbus_bool_t _dbus_string_equal (const DBusString *a,
00230 const DBusString *b);
00231 dbus_bool_t _dbus_string_equal_c_str (const DBusString *a,
00232 const char *c_str);
00233 dbus_bool_t _dbus_string_equal_len (const DBusString *a,
00234 const DBusString *b,
00235 int len);
00236 dbus_bool_t _dbus_string_equal_substring (const DBusString *a,
00237 int a_start,
00238 int a_len,
00239 const DBusString *b,
00240 int b_start);
00241 dbus_bool_t _dbus_string_starts_with_c_str (const DBusString *a,
00242 const char *c_str);
00243 dbus_bool_t _dbus_string_ends_with_c_str (const DBusString *a,
00244 const char *c_str);
00245 dbus_bool_t _dbus_string_pop_line (DBusString *source,
00246 DBusString *dest);
00247 void _dbus_string_delete_first_word (DBusString *str);
00248 void _dbus_string_delete_leading_blanks (DBusString *str);
00249 dbus_bool_t _dbus_string_hex_encode (const DBusString *source,
00250 int start,
00251 DBusString *dest,
00252 int insert_at);
00253 dbus_bool_t _dbus_string_hex_decode (const DBusString *source,
00254 int start,
00255 int *end_return,
00256 DBusString *dest,
00257 int insert_at);
00258 dbus_bool_t _dbus_string_validate_ascii (const DBusString *str,
00259 int start,
00260 int len);
00261 dbus_bool_t _dbus_string_validate_utf8 (const DBusString *str,
00262 int start,
00263 int len);
00264 dbus_bool_t _dbus_string_validate_nul (const DBusString *str,
00265 int start,
00266 int len);
00267 dbus_bool_t _dbus_string_validate_path (const DBusString *str,
00268 int start,
00269 int len);
00270 dbus_bool_t _dbus_string_validate_interface (const DBusString *str,
00271 int start,
00272 int len);
00273 dbus_bool_t _dbus_string_validate_member (const DBusString *str,
00274 int start,
00275 int len);
00276 dbus_bool_t _dbus_string_validate_error_name (const DBusString *str,
00277 int start,
00278 int len);
00279 dbus_bool_t _dbus_string_validate_service (const DBusString *str,
00280 int start,
00281 int len);
00282 dbus_bool_t _dbus_string_validate_signature (const DBusString *str,
00283 int start,
00284 int len);
00285 void _dbus_string_zero (DBusString *str);
00286
00287
00288 DBUS_END_DECLS
00289
00290 #endif