xresource.pp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. {
  2. $Id$
  3. }
  4. unit xresource;
  5. interface
  6. uses
  7. xlib;
  8. {$LinkLib c}
  9. {$LinkLib X11}
  10. {***************************************************************
  11. * Quark Management
  12. ***************************************************************}
  13. type
  14. TXrmQuark = Longint;
  15. PXrmQuark = ^TXrmQuark;
  16. TXrmQuarkList = PXrmQuark;
  17. TXrmString = Pchar;
  18. Const
  19. NULLQUARK = 0 ;
  20. NULLSTRING = 0;
  21. { find quark for string, create new quark if none already exists }
  22. Function XrmStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;external;
  23. Function XrmPermStringToQuark( p1 : pchar ) : TXrmQuark;cdecl;external;
  24. { find string for quark }
  25. Function XrmQuarkToString( p1 : TXrmQuark) : TXrmString;cdecl;external;
  26. Function XrmUniqueQuark : TXrmQuark;cdecl;external;
  27. {
  28. #define XrmStringsEqual(a1, a2) (strcmp(a1, a2) == 0)
  29. }
  30. {***************************************************************
  31. * Conversion of Strings to Lists
  32. ***************************************************************}
  33. type
  34. TXrmBinding = longint;
  35. TXrmBindingList = ^longint;
  36. Const
  37. XrmBindTightly = 0;
  38. XrmBindLoosely = 1;
  39. procedure XrmStringToQuarkList(
  40. p1 : pchar { string };
  41. p2 : TXrmQuarkList { quarks_return }
  42. );cdecl;external;
  43. procedure XrmStringToBindingQuarkList(
  44. p1 : pchar { string };
  45. p2 : TXrmBindingList { bindings_return };
  46. p3 : TXrmQuarkList { quarks_return }
  47. );cdecl;external;
  48. {***************************************************************
  49. * Name and Class lists.
  50. ***************************************************************}
  51. type
  52. TXrmName = TXrmQuark;
  53. TXrmNameList = TXrmQuarkList ;
  54. {
  55. #define XrmNameToString(name) XrmQuarkToString(name)
  56. #define XrmStringToName(string) XrmStringToQuark(string)
  57. #define XrmStringToNameList(str, name) XrmStringToQuarkList(str, name)
  58. }
  59. TXrmClass = TXrmQuark;
  60. TXrmClassList = TXrmQuarkList;
  61. {
  62. #define XrmClassToString(c_class) XrmQuarkToString(c_class)
  63. #define XrmStringToClass(c_class) XrmStringToQuark(c_class)
  64. #define XrmStringToClassList(str,c_class) XrmStringToQuarkList(str, c_class)
  65. }
  66. {***************************************************************
  67. * Resource Representation Types and Values
  68. ***************************************************************}
  69. type
  70. TXrmRepresentation = TXrmQuark ;
  71. PXrmRepresentation = ^TXrmRepresentation;
  72. {
  73. #define XrmStringToRepresentation(string) XrmStringToQuark(string)
  74. #define XrmRepresentationToString(type) XrmQuarkToString(type)
  75. }
  76. type
  77. TXrmValue = record
  78. size : word;
  79. theaddr : TXPointer;
  80. end;
  81. PXrmValue = ^TXrmValue;
  82. TXrmValuePtr = PXrmValue;
  83. {***************************************************************
  84. * Resource Manager Functions
  85. ***************************************************************}
  86. {
  87. typedef struct _XrmHashBucketRec *XrmHashBucket;
  88. typedef XrmHashBucket *XrmHashTable;
  89. typedef XrmHashTable XrmSearchList[];
  90. typedef struct _XrmHashBucketRec *XrmDatabase;
  91. }
  92. Type
  93. TXrmHashBucket = pointer;
  94. TXrmHashTable = ^TXrmHashBucket;
  95. TXrmSearchList = ^TXrmHashTable;
  96. TXrmDatabase = pointer;
  97. PXrmDatabase = ^TXrmDatabase;
  98. procedure XrmDestroyDatabase(
  99. p1 : TXrmDatabase { database }
  100. );cdecl;external;
  101. Procedure XrmQPutResource(
  102. p1 : PXrmDatabase { database };
  103. p2 : TXrmBindingList { bindings };
  104. p3 : TXrmQuarkList { quarks };
  105. p4 : TXrmRepresentation { type };
  106. p5 : PXrmValue { value }
  107. );cdecl;external;
  108. Procedure XrmPutResource(
  109. p1 : PXrmDatabase { database };
  110. p2 : pchar { specifier };
  111. p3 : pchar { type };
  112. p4 : PXrmValue { value }
  113. );cdecl;external;
  114. Procedure XrmQPutStringResource(
  115. p1 : PXrmDatabase { database };
  116. p2 : TXrmBindingList { bindings };
  117. p3 : TXrmQuarkList { quarks };
  118. p4 : Pchar { value }
  119. );cdecl;external;
  120. Procedure XrmPutStringResource(
  121. P1 : PXrmDatabase { database };
  122. p2,p3 : pchar
  123. );cdecl;external;
  124. Procedure XrmPutLineResource(
  125. p1 : PXrmDatabase { database };
  126. p2 : pchar { line }
  127. );cdecl;external;
  128. Function XrmQGetResource(
  129. p1 : PXrmDatabase { database };
  130. p2 : TXrmNameList { quark_name };
  131. p3 : TXrmClassList { quark_class };
  132. p4 : PXrmRepresentation { quark_type_return };
  133. p5 : PXrmValue { value_return }
  134. ) : Integer;cdecl;external;
  135. Function XrmGetResource(
  136. p1 : TXrmDatabase { database };
  137. p2 : pchar { str_name };
  138. p3 : pchar { str_class };
  139. p4 : ppchar { str_type_return };
  140. p5 : PXrmValue { value_return }
  141. ) : Tbool;cdecl;external;
  142. Function XrmQGetSearchList(
  143. p1 : TXrmDatabase { database };
  144. p2 : TXrmNameList { names };
  145. p3 : TXrmClassList { classes };
  146. p4 : TXrmSearchList { list_return };
  147. p5 : integer { list_length }
  148. ) : Tbool;cdecl;external;
  149. Function XrmQGetSearchResource(
  150. P1 : TXrmSearchList { list };
  151. p2 : TXrmName { name };
  152. p3 : TXrmClass { class };
  153. p4 : PXrmRepresentation { type_return };
  154. p5 : PXrmValue { value_return }
  155. ) : TBool;cdecl;external;
  156. {***************************************************************
  157. *
  158. * Resource Database Management
  159. *
  160. ***************************************************************}
  161. procedure XrmSetDatabase(
  162. p1 : PDisplay { display };
  163. p2 : TXrmDatabase { database }
  164. );cdecl;external;
  165. Function XrmGetDatabase(
  166. p1 : PDisplay { display }
  167. ) : TXrmDatabase;cdecl;external;
  168. Function XrmGetFileDatabase(
  169. p1 : pchar { filename }
  170. ) : TXrmDatabase ;cdecl;external;
  171. Function XrmCombineFileDatabase(
  172. p1 : pchar { filename };
  173. p2 : PXrmDatabase { target };
  174. p3 : TBool { override }
  175. ) : TStatus ;cdecl;external;
  176. function XrmGetStringDatabase(
  177. p1 : pchar { data } { null terminated string }
  178. ) : TXrmDatabase ;cdecl;external;
  179. Procedure XrmPutFileDatabase(
  180. p1 : TXrmDatabase { database };
  181. p2: pchar { filename }
  182. );cdecl;external;
  183. Procedure XrmMergeDatabases(
  184. p1 : TXrmDatabase { source_db };
  185. p2 : PXrmDatabase { target_db }
  186. );cdecl;external;
  187. procedure XrmCombineDatabase(
  188. p1 : TXrmDatabase { source_db };
  189. p2 : PXrmDatabase { target_db };
  190. p3 : TBool { override }
  191. );cdecl;external;
  192. const
  193. XrmEnumAllLevels = 0;
  194. XrmEnumOneLevel = 1;
  195. (*
  196. Function XrmEnumerateDatabase(
  197. XrmDatabase { db };
  198. XrmNameList { name_prefix };
  199. XrmClassList { class_prefix };
  200. int { mode };
  201. Bool *(#if NeedNestedPrototypes
  202. XrmDatabase* { db };
  203. XrmBindingList { bindings };
  204. XrmQuarkList { quarks };
  205. XrmRepresentation* { type };
  206. XrmValue* { value };
  207. XPointer { closure }
  208. ) { proc };
  209. XPointer { closure }
  210. ) : TBool;
  211. *)
  212. Function XrmLocaleOfDatabase(
  213. P1 : TXrmDatabase { database }
  214. ) : Pchar;cdecl;external;
  215. {***************************************************************
  216. *
  217. * Command line option mapping to resource entries
  218. *
  219. ***************************************************************}
  220. Const
  221. XrmoptionNoArg = 0; { Value is specified in OptionDescRec.value }
  222. XrmoptionIsArg = 1; { Value is the option string itself }
  223. XrmoptionStickyArg = 2; { Value is characters immediately following option }
  224. XrmoptionSepArg = 3; { Value is next argument in argv }
  225. XrmoptionResArg = 4; { Resource and value in next argument in argv }
  226. XrmoptionSkipArg = 5; { Ignore this option and the next argument in argv }
  227. XrmoptionSkipLine = 6; { Ignore this option and the rest of argv }
  228. XrmoptionSkipNArgs = 7; { Ignore this option and the next
  229. OptionDescRes.value arguments in argv }
  230. Type TXrmOptionKind = Integer;
  231. TXrmOptionDescRec = record
  232. option : pchar; { Option abbreviation in argv }
  233. specifier : pchar; { Resource specifier }
  234. argKind : TXrmOptionKind; { Which style of option it is }
  235. value : TXpointer; { Value to provide if XrmoptionNoArg }
  236. end;
  237. PXrmOptionDescRec= ^TXrmOptionDescRec;
  238. TXrmOptionDescList = PXrmOptionDescRec;
  239. Procedure XrmParseCommand(
  240. p1 : TXrmDatabase { database };
  241. p2 : TXrmOptionDescList { table };
  242. p3 : integer { table_count };
  243. p4 : pchar { name };
  244. p5 : Pointer { argc_in_out };
  245. p6 : ppchar { argv_in_out }
  246. );cdecl;external;
  247. Implementation
  248. end.
  249. {
  250. $Log$
  251. Revision 1.2 2000-07-13 11:33:34 michael
  252. + removed logs
  253. }