1 module x11.Xresource; 2 3 version(Posix): 4 5 import x11.Xlib; 6 7 extern (C) nothrow: 8 9 /**************************************************************** 10 **************************************************************** 11 *** *** 12 *** *** 13 *** X Resource Manager Intrinsics *** 14 *** *** 15 *** *** 16 **************************************************************** 17 *************************************************************** 18 19 20 /**************************************************************** 21 * 22 * Memory Management 23 * 24 ****************************************************************/ 25 26 extern char* Xpermalloc( 27 uint /* size */ 28 ); 29 30 /**************************************************************** 31 * 32 * Quark Management 33 * 34 ****************************************************************/ 35 36 alias int XrmQuark; 37 alias int* XrmQuarkList; 38 const XrmQuark NULLQUARK = 0; 39 40 alias char* XrmString; 41 const XrmString NULLSTRING = null; 42 43 /* find quark for string, create new quark if none already exists */ 44 extern XrmQuark XrmStringToQuark( 45 const char* /* string */ 46 ); 47 48 extern XrmQuark XrmPermStringToQuark( 49 const char* /* string */ 50 ); 51 52 /* find string for quark */ 53 extern XrmString XrmQuarkToString( 54 XrmQuark /* quark */ 55 ); 56 57 extern XrmQuark XrmUniqueQuark( ); 58 59 bool XrmStringsEqual(XrmString a1, XrmString a2){ return *a1 == *a2; } 60 61 62 /**************************************************************** 63 * 64 * Conversion of Strings to Lists 65 * 66 ****************************************************************/ 67 68 alias int XrmBinding; 69 enum {XrmBindTightly, XrmBindLoosely} 70 alias XrmBinding* XrmBindingList; 71 72 extern void XrmStringToQuarkList( 73 const char* /* string */, 74 XrmQuarkList /* quarks_return */ 75 ); 76 77 extern void XrmStringToBindingQuarkList( 78 const char* /* string */, 79 XrmBindingList /* bindings_return */, 80 XrmQuarkList /* quarks_return */ 81 ); 82 83 /**************************************************************** 84 * 85 * Name and Class lists. 86 * 87 ****************************************************************/ 88 89 alias XrmQuark XrmName; 90 alias XrmQuarkList XrmNameList; 91 XrmString XrmNameToString(XrmName name) { return XrmQuarkToString( cast(XrmQuark) name );} 92 XrmName XrmStringToName(XrmString string) { return cast(XrmName) XrmStringToQuark(string); } 93 void XrmStringToNameList(XrmString str, XrmNameList name){ XrmStringToQuarkList(str, name); } 94 95 alias XrmQuark XrmClass; 96 alias XrmQuarkList XrmClassList; 97 XrmString XrmClassToString( XrmClass c_class ) { return XrmQuarkToString( cast(XrmQuark) c_class); } 98 XrmClass XrmStringToClass( XrmString c_class ) { return cast(XrmClass) XrmStringToQuark(c_class); } 99 void XrmStringToClassList( XrmString str, XrmClassList c_class) { XrmStringToQuarkList(str, c_class); } 100 101 102 103 /**************************************************************** 104 * 105 * Resource Representation Types and Values 106 * 107 ****************************************************************/ 108 109 alias XrmQuark XrmRepresentation; 110 XrmRepresentation XrmStringToRepresentation( XrmString string) { return cast(XrmRepresentation) XrmStringToQuark(string); } 111 XrmString XrmRepresentationToString( XrmRepresentation type) { return XrmQuarkToString(type); } 112 113 struct XrmValue{ 114 uint size; 115 XPointer addr; 116 } 117 alias XrmValue* XrmValuePtr; 118 119 120 /**************************************************************** 121 * 122 * Resource Manager Functions 123 * 124 ****************************************************************/ 125 struct _XrmHashBucketRec{} 126 alias _XrmHashBucketRec* XrmHashBucket; 127 alias XrmHashBucket* XrmHashTable; 128 alias XrmHashTable[] XrmSearchList; 129 alias _XrmHashBucketRec* XrmDatabase; 130 131 132 extern void XrmDestroyDatabase( 133 XrmDatabase /* database */ 134 ); 135 136 extern void XrmQPutResource( 137 XrmDatabase* /* database */, 138 XrmBindingList /* bindings */, 139 XrmQuarkList /* quarks */, 140 XrmRepresentation /* type */, 141 XrmValue* /* value */ 142 ); 143 144 extern void XrmPutResource( 145 XrmDatabase* /* database */, 146 const char* /* specifier */, 147 const char* /* type */, 148 XrmValue* /* value */ 149 ); 150 151 extern void XrmQPutStringResource( 152 XrmDatabase* /* database */, 153 XrmBindingList /* bindings */, 154 XrmQuarkList /* quarks */, 155 const char* /* value */ 156 ); 157 158 extern void XrmPutStringResource( 159 XrmDatabase* /* database */, 160 const char* /* specifier */, 161 const char* /* value */ 162 ); 163 164 extern void XrmPutLineResource( 165 XrmDatabase* /* database */, 166 const char* /* line */ 167 ); 168 169 extern Bool XrmQGetResource( 170 XrmDatabase /* database */, 171 XrmNameList /* quark_name */, 172 XrmClassList /* quark_class */, 173 XrmRepresentation* /* quark_type_return */, 174 XrmValue* /* value_return */ 175 ); 176 177 extern Bool XrmGetResource( 178 XrmDatabase /* database */, 179 const char* /* str_name */, 180 const char* /* str_class */, 181 char** /* str_type_return */, 182 XrmValue* /* value_return */ 183 ); 184 185 extern Bool XrmQGetSearchList( 186 XrmDatabase /* database */, 187 XrmNameList /* names */, 188 XrmClassList /* classes */, 189 XrmSearchList /* list_return */, 190 int /* list_length */ 191 ); 192 193 extern Bool XrmQGetSearchResource( 194 XrmSearchList /* list */, 195 XrmName /* name */, 196 XrmClass /* class */, 197 XrmRepresentation* /* type_return */, 198 XrmValue* /* value_return */ 199 ); 200 201 /**************************************************************** 202 * 203 * Resource Database Management 204 * 205 ****************************************************************/ 206 207 208 extern void XrmSetDatabase( 209 Display* /* display */, 210 XrmDatabase /* database */ 211 ); 212 213 extern XrmDatabase XrmGetDatabase( 214 Display* /* display */ 215 ); 216 217 218 extern XrmDatabase XrmGetFileDatabase( 219 const char* /* filename */ 220 ); 221 222 extern Status XrmCombineFileDatabase( 223 const char* /* filename */, 224 XrmDatabase* /* target */, 225 Bool /* override */ 226 ); 227 228 extern XrmDatabase XrmGetStringDatabase( 229 const char* /* data null terminated string */ 230 ); 231 232 extern void XrmPutFileDatabase( 233 XrmDatabase /* database */, 234 const char* /* filename */ 235 ); 236 237 extern void XrmMergeDatabases( 238 XrmDatabase /* source_db */, 239 XrmDatabase* /* target_db */ 240 ); 241 242 extern void XrmCombineDatabase( 243 XrmDatabase /* source_db */, 244 XrmDatabase* /* target_db */, 245 Bool /* override */ 246 ); 247 248 const uint XrmEnumAllLevels = 0; 249 const uint XrmEnumOneLevel = 1; 250 251 extern Bool XrmEnumerateDatabase( 252 XrmDatabase /* db */, 253 XrmNameList /* name_prefix */, 254 XrmClassList /* class_prefix */, 255 int /* mode */, 256 Bool function( 257 XrmDatabase* /* db */, 258 XrmBindingList /* bindings */, 259 XrmQuarkList /* quarks */, 260 XrmRepresentation* /* type */, 261 XrmValue* /* value */, 262 XPointer /* closure */ 263 ) /* proc */, 264 XPointer /* closure */ 265 ); 266 267 extern char* XrmLocaleOfDatabase( 268 XrmDatabase /* database */ 269 ); 270 271 272 /**************************************************************** 273 * 274 * Command line option mapping to resource entries 275 * 276 ****************************************************************/ 277 278 alias int XrmOptionKind; 279 enum { 280 XrmoptionNoArg, /* Value is specified in OptionDescRec.value */ 281 XrmoptionIsArg, /* Value is the option string itself */ 282 XrmoptionStickyArg, /* Value is characters immediately following option */ 283 XrmoptionSepArg, /* Value is next argument in argv */ 284 XrmoptionResArg, /* Resource and value in next argument in argv */ 285 XrmoptionSkipArg, /* Ignore this option and the next argument in argv */ 286 XrmoptionSkipLine, /* Ignore this option and the rest of argv */ 287 XrmoptionSkipNArgs /* Ignore this option and the next OptionDescRes.value arguments in argv */ 288 } 289 290 struct XrmOptionDescRec{ 291 char* option; /* Option abbreviation in argv */ 292 char* specifier; /* Resource specifier */ 293 XrmOptionKind argKind; /* Which style of option it is */ 294 XPointer value; /* Value to provide if XrmoptionNoArg */ 295 } 296 alias XrmOptionDescRec* XrmOptionDescList; 297 298 299 extern void XrmParseCommand( 300 XrmDatabase* /* database */, 301 XrmOptionDescList /* table */, 302 int /* table_count */, 303 const char* /* name */, 304 int* /* argc_in_out */, 305 char** /* argv_in_out */ 306 );