1 /* 2 * Copyright © 2001 Red Hat, Inc. 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of Red Hat not be used in advertising or 9 * publicity pertaining to distribution of the software without specific, 10 * written prior permission. Red Hat makes no representations about the 11 * suitability of this software for any purpose. It is provided "as is" 12 * without express or implied warranty. 13 * 14 * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT 16 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 18 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 19 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20 * 21 * Author: Owen Taylor, Red Hat, Inc. 22 */ 23 #ifndef XSETTINGS_COMMON_H 24 #define XSETTINGS_COMMON_H 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif /* __cplusplus */ 29 30 /* Renames for GDK inclusion */ 31 32 #define xsettings_byte_order _gdk_xsettings_byte_order 33 #define xsettings_client_destroy _gdk_xsettings_client_destroy 34 #define xsettings_client_get_setting _gdk_xsettings_client_get_setting 35 #define xsettings_client_new _gdk_xsettings_client_new 36 #define xsettings_client_new_with_grab_funcs _gdk_xsettings_client_new_with_grab_funcs 37 #define xsettings_client_set_grab_func _gdk_xsettings_client_set_grab_func 38 #define xsettings_client_set_ungrab_func _gdk_xsettings_client_set_ungrab_func 39 #define xsettings_client_process_event _gdk_xsettings_client_process_event 40 #define xsettings_list_copy _gdk_xsettings_list_copy 41 #define xsettings_list_delete _gdk_xsettings_list_delete 42 #define xsettings_list_free _gdk_xsettings_list_free 43 #define xsettings_list_insert _gdk_xsettings_list_insert 44 #define xsettings_list_lookup _gdk_xsettings_list_lookup 45 #define xsettings_setting_copy _gdk_xsettings_setting_copy 46 #define xsettings_setting_equal _gdk_xsettings_setting_equal 47 #define xsettings_setting_free _gdk_xsettings_setting_free 48 49 50 typedef struct _XSettingsBuffer XSettingsBuffer; 51 typedef struct _XSettingsColor XSettingsColor; 52 typedef struct _XSettingsList XSettingsList; 53 typedef struct _XSettingsSetting XSettingsSetting; 54 55 /* Types of settings possible. Enum values correspond to 56 * protocol values. 57 */ 58 typedef enum 59 { 60 XSETTINGS_TYPE_INT = 0, 61 XSETTINGS_TYPE_STRING = 1, 62 XSETTINGS_TYPE_COLOR = 2 63 } XSettingsType; 64 65 typedef enum 66 { 67 XSETTINGS_SUCCESS, 68 XSETTINGS_NO_MEM, 69 XSETTINGS_ACCESS, 70 XSETTINGS_FAILED, 71 XSETTINGS_NO_ENTRY, 72 XSETTINGS_DUPLICATE_ENTRY 73 } XSettingsResult; 74 75 struct _XSettingsBuffer 76 { 77 char byte_order; 78 size_t len; 79 unsigned char *data; 80 unsigned char *pos; 81 }; 82 83 struct _XSettingsColor 84 { 85 unsigned short red, green, blue, alpha; 86 }; 87 88 struct _XSettingsList 89 { 90 XSettingsSetting *setting; 91 XSettingsList *next; 92 }; 93 94 struct _XSettingsSetting 95 { 96 char *name; 97 XSettingsType type; 98 99 union { 100 int v_int; 101 char *v_string; 102 XSettingsColor v_color; 103 } data; 104 105 unsigned long last_change_serial; 106 }; 107 108 XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting); 109 void xsettings_setting_free (XSettingsSetting *setting); 110 int xsettings_setting_equal (XSettingsSetting *setting_a, 111 XSettingsSetting *setting_b); 112 113 void xsettings_list_free (XSettingsList *list); 114 XSettingsList *xsettings_list_copy (XSettingsList *list); 115 XSettingsResult xsettings_list_insert (XSettingsList **list, 116 XSettingsSetting *setting); 117 XSettingsSetting *xsettings_list_lookup (XSettingsList *list, 118 const char *name); 119 XSettingsResult xsettings_list_delete (XSettingsList **list, 120 const char *name); 121 122 char xsettings_byte_order (void); 123 124 #define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1))) 125 126 #ifdef __cplusplus 127 } 128 #endif /* __cplusplus */ 129 130 #endif /* XSETTINGS_COMMON_H */ 131