dmxparse.h
Go to the documentation of this file.00001 /* $XFree86$ */ 00002 /* 00003 * Copyright 2002 Red Hat Inc., Durham, North Carolina. 00004 * 00005 * All Rights Reserved. 00006 * 00007 * Permission is hereby granted, free of charge, to any person obtaining 00008 * a copy of this software and associated documentation files (the 00009 * "Software"), to deal in the Software without restriction, including 00010 * without limitation on the rights to use, copy, modify, merge, 00011 * publish, distribute, sublicense, and/or sell copies of the Software, 00012 * and to permit persons to whom the Software is furnished to do so, 00013 * subject to the following conditions: 00014 * 00015 * The above copyright notice and this permission notice (including the 00016 * next paragraph) shall be included in all copies or substantial 00017 * portions of the Software. 00018 * 00019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 00020 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 00021 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00022 * NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS 00023 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 00024 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 00025 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 00026 * SOFTWARE. 00027 */ 00028 00029 /* 00030 * Authors: 00031 * Rickard E. (Rik) Faith <faith@redhat.com> 00032 * 00033 */ 00034 00038 #ifndef _DMXPARSE_H_ 00039 #define _DMXPARSE_H_ 00040 00041 #include <stdio.h> /* For FILE */ 00042 00044 typedef struct _DMXConfigToken { 00045 int token; 00046 int line; 00047 const char *comment; 00048 } DMXConfigToken, *DMXConfigTokenPtr; 00049 00051 typedef struct _DMXConfigString { 00052 int token; 00053 int line; 00054 const char *comment; 00055 const char *string; 00056 struct _DMXConfigString *next; 00057 } DMXConfigString, *DMXConfigStringPtr; 00058 00060 typedef struct _DMXConfigNumber { 00061 int token; 00062 int line; 00063 const char *comment; 00064 int number; 00065 } DMXConfigNumber, *DMXConfigNumberPtr; 00066 00068 typedef struct _DMXConfigPair { 00069 int token; 00070 int line; 00071 const char *comment; 00072 int x; 00073 int y; 00074 int xsign; 00075 int ysign; 00076 } DMXConfigPair, *DMXConfigPairPtr; 00077 00079 typedef struct _DMXConfigComment { 00080 int token; 00081 int line; 00082 const char *comment; 00083 } DMXConfigComment, *DMXConfigCommentPtr; 00084 00085 typedef enum { 00086 dmxConfigComment, 00087 dmxConfigVirtual, 00088 dmxConfigDisplay, 00089 dmxConfigWall, 00090 dmxConfigOption, 00091 dmxConfigParam 00092 } DMXConfigType; 00093 00095 typedef struct _DMXConfigPartDim { 00096 DMXConfigPairPtr dim; 00097 DMXConfigPairPtr offset; 00098 } DMXConfigPartDim, *DMXConfigPartDimPtr; 00099 00101 typedef struct _DMXConfigFullDim { 00102 DMXConfigPartDimPtr scrn; 00103 DMXConfigPartDimPtr root; 00104 } DMXConfigFullDim, *DMXConfigFullDimPtr; 00105 00107 typedef struct _DMXConfigDisplay { 00108 /* Summary information */ 00109 const char *name; 00110 /* Screen Window Geometry */ 00111 int scrnWidth, scrnHeight; 00112 int scrnX, scrnY; 00113 int scrnXSign, scrnYSign; 00114 /* Root Window Geometry */ 00115 int rootWidth, rootHeight; 00116 int rootX, rootY; 00117 int rootXSign, rootYSign; 00118 /* Origin in global space */ 00119 int rootXOrigin, rootYOrigin; 00120 00121 /* Raw configuration information */ 00122 DMXConfigTokenPtr start; 00123 DMXConfigStringPtr dname; 00124 DMXConfigFullDimPtr dim; 00125 DMXConfigPairPtr origin; 00126 DMXConfigTokenPtr end; 00127 } DMXConfigDisplay, *DMXConfigDisplayPtr; 00128 00130 typedef struct _DMXConfigWall { 00131 /* Summary information */ 00132 int width, height; /* dimensions of displays */ 00133 int xwall, ywall; /* dimensions of wall, in tiles */ 00134 00135 00136 /* Raw configuration informaiton */ 00137 DMXConfigTokenPtr start; 00138 DMXConfigPairPtr wallDim; 00139 DMXConfigPairPtr displayDim; 00140 DMXConfigStringPtr nameList; 00141 DMXConfigTokenPtr end; 00142 } DMXConfigWall, *DMXConfigWallPtr; 00143 00145 typedef struct _DMXConfigOption { 00146 /* Summary information */ 00147 char *string; 00148 00149 /* Raw configuration informaiton */ 00150 DMXConfigTokenPtr start; 00151 DMXConfigStringPtr option; 00152 DMXConfigTokenPtr end; 00153 } DMXConfigOption, *DMXConfigOptionPtr; 00154 00156 typedef struct _DMXConfigParam { 00157 int argc; 00158 const char **argv; 00159 00160 DMXConfigTokenPtr start; 00161 DMXConfigTokenPtr open; 00162 DMXConfigStringPtr param; 00163 DMXConfigTokenPtr close; 00164 DMXConfigTokenPtr end; /* Either open/close OR end */ 00165 struct _DMXConfigParam *next; 00166 } DMXConfigParam, *DMXConfigParamPtr; 00167 00169 typedef struct _DMXConfigSub { 00170 DMXConfigType type; 00171 DMXConfigCommentPtr comment; 00172 DMXConfigDisplayPtr display; 00173 DMXConfigWallPtr wall; 00174 DMXConfigOptionPtr option; 00175 DMXConfigParamPtr param; 00176 struct _DMXConfigSub *next; 00177 } DMXConfigSub, *DMXConfigSubPtr; 00178 00180 typedef struct _DMXConfigVirtual { 00181 /* Summary information */ 00182 const char *name; 00183 int width, height; 00184 00185 /* Raw configuration information */ 00186 DMXConfigTokenPtr start; 00187 DMXConfigStringPtr vname; 00188 DMXConfigPairPtr dim; 00189 DMXConfigTokenPtr open; 00190 DMXConfigSubPtr subentry; 00191 DMXConfigTokenPtr close; 00192 } DMXConfigVirtual, *DMXConfigVirtualPtr; 00193 00195 typedef struct _DMXConfigEntry { 00196 DMXConfigType type; 00197 DMXConfigCommentPtr comment; 00198 DMXConfigVirtualPtr virtual; 00199 struct _DMXConfigEntry *next; 00200 } DMXConfigEntry, *DMXConfigEntryPtr; 00201 00202 extern DMXConfigEntryPtr dmxConfigEntry; 00203 00204 extern int yylex(void); 00205 extern int yydebug; 00206 extern void yyerror(const char *message); 00207 00208 extern void dmxConfigLog(const char *format, ...); 00209 extern void *dmxConfigAlloc(unsigned long bytes); 00210 extern void *dmxConfigRealloc(void *orig, 00211 unsigned long orig_bytes, 00212 unsigned long bytes); 00213 extern const char *dmxConfigCopyString(const char *string, 00214 int length); 00215 extern void dmxConfigFree(void *area); 00216 extern DMXConfigTokenPtr dmxConfigCreateToken(int token, int line, 00217 const char *comment); 00218 extern void dmxConfigFreeToken(DMXConfigTokenPtr p); 00219 extern DMXConfigStringPtr dmxConfigCreateString(int token, int line, 00220 const char *comment, 00221 const char *string); 00222 extern void dmxConfigFreeString(DMXConfigStringPtr p); 00223 extern DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line, 00224 const char *comment, 00225 int number); 00226 extern void dmxConfigFreeNumber(DMXConfigNumberPtr p); 00227 extern DMXConfigPairPtr dmxConfigCreatePair(int token, int line, 00228 const char *comment, 00229 int x, int y, 00230 int xsign, int ysign); 00231 extern void dmxConfigFreePair(DMXConfigPairPtr p); 00232 extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line, 00233 const char *comment); 00234 extern void dmxConfigFreeComment(DMXConfigCommentPtr p); 00235 extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim, 00236 DMXConfigPairPtr pOffset); 00237 extern void dmxConfigFreePartDim(DMXConfigPartDimPtr p); 00238 extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn, 00239 DMXConfigPartDimPtr pRoot); 00240 extern void dmxConfigFreeFullDim(DMXConfigFullDimPtr p); 00241 extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart, 00242 DMXConfigStringPtr pName, 00243 DMXConfigFullDimPtr pDim, 00244 DMXConfigPairPtr pOrigin, 00245 DMXConfigTokenPtr pEnd); 00246 extern void dmxConfigFreeDisplay(DMXConfigDisplayPtr p); 00247 extern DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart, 00248 DMXConfigPairPtr pWallDim, 00249 DMXConfigPairPtr pDisplayDim, 00250 DMXConfigStringPtr pNameList, 00251 DMXConfigTokenPtr pEnd); 00252 extern void dmxConfigFreeWall(DMXConfigWallPtr p); 00253 extern DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart, 00254 DMXConfigStringPtr pOption, 00255 DMXConfigTokenPtr pEnd); 00256 extern void dmxConfigFreeOption(DMXConfigOptionPtr p); 00257 extern DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart, 00258 DMXConfigTokenPtr pOpen, 00259 DMXConfigStringPtr pParam, 00260 DMXConfigTokenPtr pClose, 00261 DMXConfigTokenPtr pEnd); 00262 extern void dmxConfigFreeParam(DMXConfigParamPtr p); 00263 extern const char **dmxConfigLookupParam(DMXConfigParamPtr p, 00264 const char *key, 00265 int *argc); 00266 extern DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type, 00267 DMXConfigCommentPtr comment, 00268 DMXConfigDisplayPtr display, 00269 DMXConfigWallPtr wall, 00270 DMXConfigOptionPtr option, 00271 DMXConfigParamPtr param); 00272 extern void dmxConfigFreeSub(DMXConfigSubPtr sub); 00273 extern DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment); 00274 extern DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display); 00275 extern DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall); 00276 extern DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option); 00277 extern DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param); 00278 extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head, 00279 DMXConfigSubPtr sub); 00280 extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart, 00281 DMXConfigStringPtr pName, 00282 DMXConfigPairPtr pDim, 00283 DMXConfigTokenPtr pOpen, 00284 DMXConfigSubPtr pSubentry, 00285 DMXConfigTokenPtr pClose); 00286 extern void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual); 00287 extern DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type, 00288 DMXConfigCommentPtr comment, 00289 DMXConfigVirtualPtr virtual); 00290 extern void dmxConfigFreeEntry(DMXConfigEntryPtr entry); 00291 extern DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head, 00292 DMXConfigType type, 00293 DMXConfigCommentPtr comment, 00294 DMXConfigVirtualPtr virtual); 00295 extern DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment); 00296 extern DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual); 00297 00298 #endif
Generated June 29, 2004 for Distributed Multihead X by doxygen 1.3.4.