PageRenderTime 52ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/hw/dmx/config/dmxparse.h

#
C Header | 297 lines | 210 code | 29 blank | 58 comment | 0 complexity | 7c5100a5a0b505b579002891360edfd7 MD5 | raw file
Possible License(s): MIT
  1. /*
  2. * Copyright 2002 Red Hat Inc., Durham, North Carolina.
  3. *
  4. * All Rights Reserved.
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining
  7. * a copy of this software and associated documentation files (the
  8. * "Software"), to deal in the Software without restriction, including
  9. * without limitation on the rights to use, copy, modify, merge,
  10. * publish, distribute, sublicense, and/or sell copies of the Software,
  11. * and to permit persons to whom the Software is furnished to do so,
  12. * subject to the following conditions:
  13. *
  14. * The above copyright notice and this permission notice (including the
  15. * next paragraph) shall be included in all copies or substantial
  16. * portions of the Software.
  17. *
  18. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  19. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  20. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  21. * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
  22. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  23. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  24. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  25. * SOFTWARE.
  26. */
  27. /*
  28. * Authors:
  29. * Rickard E. (Rik) Faith <faith@redhat.com>
  30. *
  31. */
  32. /** \file
  33. * Interface to DMX configuration file parser. \see dmxparse.c */
  34. #ifndef _DMXPARSE_H_
  35. #define _DMXPARSE_H_
  36. #include <stdio.h> /* For FILE */
  37. /** Stores tokens not stored in other structures (e.g., keywords and ;) */
  38. typedef struct _DMXConfigToken {
  39. int token;
  40. int line;
  41. const char *comment;
  42. } DMXConfigToken, *DMXConfigTokenPtr;
  43. /** Stores parsed strings. */
  44. typedef struct _DMXConfigString {
  45. int token;
  46. int line;
  47. const char *comment;
  48. const char *string;
  49. struct _DMXConfigString *next;
  50. } DMXConfigString, *DMXConfigStringPtr;
  51. /** Stores parsed numbers. */
  52. typedef struct _DMXConfigNumber {
  53. int token;
  54. int line;
  55. const char *comment;
  56. int number;
  57. } DMXConfigNumber, *DMXConfigNumberPtr;
  58. /** Stores parsed pairs (e.g., x y) */
  59. typedef struct _DMXConfigPair {
  60. int token;
  61. int line;
  62. const char *comment;
  63. int x;
  64. int y;
  65. int xsign;
  66. int ysign;
  67. } DMXConfigPair, *DMXConfigPairPtr;
  68. /** Stores parsed comments not stored with a token. */
  69. typedef struct _DMXConfigComment {
  70. int token;
  71. int line;
  72. const char *comment;
  73. } DMXConfigComment, *DMXConfigCommentPtr;
  74. typedef enum {
  75. dmxConfigComment,
  76. dmxConfigVirtual,
  77. dmxConfigDisplay,
  78. dmxConfigWall,
  79. dmxConfigOption,
  80. dmxConfigParam
  81. } DMXConfigType;
  82. /** Stores a geometry specification. */
  83. typedef struct _DMXConfigPartDim {
  84. DMXConfigPairPtr dim;
  85. DMXConfigPairPtr offset;
  86. } DMXConfigPartDim, *DMXConfigPartDimPtr;
  87. /** Stores a pair of geometry specifications. */
  88. typedef struct _DMXConfigFullDim {
  89. DMXConfigPartDimPtr scrn;
  90. DMXConfigPartDimPtr root;
  91. } DMXConfigFullDim, *DMXConfigFullDimPtr;
  92. /** Stores parsed display information. */
  93. typedef struct _DMXConfigDisplay {
  94. /* Summary information */
  95. const char *name;
  96. /* Screen Window Geometry */
  97. int scrnWidth, scrnHeight;
  98. int scrnX, scrnY;
  99. int scrnXSign, scrnYSign;
  100. /* Root Window Geometry */
  101. int rootWidth, rootHeight;
  102. int rootX, rootY;
  103. int rootXSign, rootYSign;
  104. /* Origin in global space */
  105. int rootXOrigin, rootYOrigin;
  106. /* Raw configuration information */
  107. DMXConfigTokenPtr start;
  108. DMXConfigStringPtr dname;
  109. DMXConfigFullDimPtr dim;
  110. DMXConfigPairPtr origin;
  111. DMXConfigTokenPtr end;
  112. } DMXConfigDisplay, *DMXConfigDisplayPtr;
  113. /** Stores parsed wall information. */
  114. typedef struct _DMXConfigWall {
  115. /* Summary information */
  116. int width, height; /* dimensions of displays */
  117. int xwall, ywall; /* dimensions of wall, in tiles */
  118. /* Raw configuration informaiton */
  119. DMXConfigTokenPtr start;
  120. DMXConfigPairPtr wallDim;
  121. DMXConfigPairPtr displayDim;
  122. DMXConfigStringPtr nameList;
  123. DMXConfigTokenPtr end;
  124. } DMXConfigWall, *DMXConfigWallPtr;
  125. /** Stores parsed option information. */
  126. typedef struct _DMXConfigOption {
  127. /* Summary information */
  128. char *string;
  129. /* Raw configuration informaiton */
  130. DMXConfigTokenPtr start;
  131. DMXConfigStringPtr option;
  132. DMXConfigTokenPtr end;
  133. } DMXConfigOption, *DMXConfigOptionPtr;
  134. /** Stores parsed param information. */
  135. typedef struct _DMXConfigParam {
  136. int argc;
  137. const char **argv;
  138. DMXConfigTokenPtr start;
  139. DMXConfigTokenPtr open;
  140. DMXConfigStringPtr param;
  141. DMXConfigTokenPtr close;
  142. DMXConfigTokenPtr end; /* Either open/close OR end */
  143. struct _DMXConfigParam *next;
  144. } DMXConfigParam, *DMXConfigParamPtr;
  145. /** Stores options under an entry (subentry). */
  146. typedef struct _DMXConfigSub {
  147. DMXConfigType type;
  148. DMXConfigCommentPtr comment;
  149. DMXConfigDisplayPtr display;
  150. DMXConfigWallPtr wall;
  151. DMXConfigOptionPtr option;
  152. DMXConfigParamPtr param;
  153. struct _DMXConfigSub *next;
  154. } DMXConfigSub, *DMXConfigSubPtr;
  155. /** Stores parsed virtual information. */
  156. typedef struct _DMXConfigVirtual {
  157. /* Summary information */
  158. const char *name;
  159. int width, height;
  160. /* Raw configuration information */
  161. DMXConfigTokenPtr start;
  162. DMXConfigStringPtr vname;
  163. DMXConfigPairPtr dim;
  164. DMXConfigTokenPtr open;
  165. DMXConfigSubPtr subentry;
  166. DMXConfigTokenPtr close;
  167. } DMXConfigVirtual, *DMXConfigVirtualPtr;
  168. /** Heads entry storage. */
  169. typedef struct _DMXConfigEntry {
  170. DMXConfigType type;
  171. DMXConfigCommentPtr comment;
  172. DMXConfigVirtualPtr virtual;
  173. struct _DMXConfigEntry *next;
  174. } DMXConfigEntry, *DMXConfigEntryPtr;
  175. extern DMXConfigEntryPtr dmxConfigEntry;
  176. extern int yylex(void);
  177. extern int yydebug;
  178. extern void yyerror(const char *message);
  179. extern void dmxConfigLog(const char *format, ...);
  180. extern void *dmxConfigAlloc(unsigned long bytes);
  181. extern void *dmxConfigRealloc(void *orig,
  182. unsigned long orig_bytes,
  183. unsigned long bytes);
  184. extern const char *dmxConfigCopyString(const char *string,
  185. int length);
  186. extern void dmxConfigFree(void *area);
  187. extern DMXConfigTokenPtr dmxConfigCreateToken(int token, int line,
  188. const char *comment);
  189. extern void dmxConfigFreeToken(DMXConfigTokenPtr p);
  190. extern DMXConfigStringPtr dmxConfigCreateString(int token, int line,
  191. const char *comment,
  192. const char *string);
  193. extern void dmxConfigFreeString(DMXConfigStringPtr p);
  194. extern DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line,
  195. const char *comment,
  196. int number);
  197. extern void dmxConfigFreeNumber(DMXConfigNumberPtr p);
  198. extern DMXConfigPairPtr dmxConfigCreatePair(int token, int line,
  199. const char *comment,
  200. int x, int y,
  201. int xsign, int ysign);
  202. extern void dmxConfigFreePair(DMXConfigPairPtr p);
  203. extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line,
  204. const char *comment);
  205. extern void dmxConfigFreeComment(DMXConfigCommentPtr p);
  206. extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim,
  207. DMXConfigPairPtr pOffset);
  208. extern void dmxConfigFreePartDim(DMXConfigPartDimPtr p);
  209. extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn,
  210. DMXConfigPartDimPtr pRoot);
  211. extern void dmxConfigFreeFullDim(DMXConfigFullDimPtr p);
  212. extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart,
  213. DMXConfigStringPtr pName,
  214. DMXConfigFullDimPtr pDim,
  215. DMXConfigPairPtr pOrigin,
  216. DMXConfigTokenPtr pEnd);
  217. extern void dmxConfigFreeDisplay(DMXConfigDisplayPtr p);
  218. extern DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart,
  219. DMXConfigPairPtr pWallDim,
  220. DMXConfigPairPtr pDisplayDim,
  221. DMXConfigStringPtr pNameList,
  222. DMXConfigTokenPtr pEnd);
  223. extern void dmxConfigFreeWall(DMXConfigWallPtr p);
  224. extern DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart,
  225. DMXConfigStringPtr pOption,
  226. DMXConfigTokenPtr pEnd);
  227. extern void dmxConfigFreeOption(DMXConfigOptionPtr p);
  228. extern DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart,
  229. DMXConfigTokenPtr pOpen,
  230. DMXConfigStringPtr pParam,
  231. DMXConfigTokenPtr pClose,
  232. DMXConfigTokenPtr pEnd);
  233. extern void dmxConfigFreeParam(DMXConfigParamPtr p);
  234. extern const char **dmxConfigLookupParam(DMXConfigParamPtr p,
  235. const char *key,
  236. int *argc);
  237. extern DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type,
  238. DMXConfigCommentPtr comment,
  239. DMXConfigDisplayPtr display,
  240. DMXConfigWallPtr wall,
  241. DMXConfigOptionPtr option,
  242. DMXConfigParamPtr param);
  243. extern void dmxConfigFreeSub(DMXConfigSubPtr sub);
  244. extern DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment);
  245. extern DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display);
  246. extern DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall);
  247. extern DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option);
  248. extern DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param);
  249. extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head,
  250. DMXConfigSubPtr sub);
  251. extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart,
  252. DMXConfigStringPtr pName,
  253. DMXConfigPairPtr pDim,
  254. DMXConfigTokenPtr pOpen,
  255. DMXConfigSubPtr pSubentry,
  256. DMXConfigTokenPtr pClose);
  257. extern void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual);
  258. extern DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type,
  259. DMXConfigCommentPtr comment,
  260. DMXConfigVirtualPtr virtual);
  261. extern void dmxConfigFreeEntry(DMXConfigEntryPtr entry);
  262. extern DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head,
  263. DMXConfigType type,
  264. DMXConfigCommentPtr comment,
  265. DMXConfigVirtualPtr virtual);
  266. extern DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment);
  267. extern DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual);
  268. #endif