diff options
Diffstat (limited to 'dbus/dbus-string.h')
-rw-r--r-- | dbus/dbus-string.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/dbus/dbus-string.h b/dbus/dbus-string.h index 51f41a4c..c30a63fe 100644 --- a/dbus/dbus-string.h +++ b/dbus/dbus-string.h @@ -49,11 +49,14 @@ struct DBusString unsigned int dummy8 : 3; /**< placeholder */ }; -/* Unless we want to run all the assertions in the function, - * inline this thing, it shows up high in the profile - */ #ifdef DBUS_DISABLE_ASSERT -#define _dbus_string_get_length(s) ((s)->dummy2) +/* Some simple inlining hacks; the current linker is not smart enough + * to inline non-exported symbols across files in the library. + * Note that these break type safety (due to the casts) + */ +#define _dbus_string_get_length(s) (((DBusString*)(s))->dummy2) +#define _dbus_string_get_byte(s, i) (((const unsigned char*)(((DBusString*)(s))->dummy1))[(i)]) +#define _dbus_string_get_const_data(s) ((const char*)(((DBusString*)(s))->dummy1)) #endif dbus_bool_t _dbus_string_init (DBusString *str); @@ -67,7 +70,9 @@ dbus_bool_t _dbus_string_init_preallocated (DBusString *str, void _dbus_string_free (DBusString *str); void _dbus_string_lock (DBusString *str); char* _dbus_string_get_data (DBusString *str); +#ifndef _dbus_string_get_const_data const char* _dbus_string_get_const_data (const DBusString *str); +#endif /* _dbus_string_get_const_data */ char* _dbus_string_get_data_len (DBusString *str, int start, int len); @@ -77,8 +82,10 @@ const char* _dbus_string_get_const_data_len (const DBusString *str, void _dbus_string_set_byte (DBusString *str, int i, unsigned char byte); +#ifndef _dbus_string_get_byte unsigned char _dbus_string_get_byte (const DBusString *str, int start); +#endif /* _dbus_string_get_byte */ dbus_bool_t _dbus_string_insert_bytes (DBusString *str, int i, int n_bytes, |