00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00038 #ifndef _DMXPARSE_H_
00039 #define _DMXPARSE_H_
00040
00041 #include <stdio.h>
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
00109 const char *name;
00110
00111 int scrnWidth, scrnHeight;
00112 int scrnX, scrnY;
00113 int scrnXSign, scrnYSign;
00114
00115 int rootWidth, rootHeight;
00116 int rootX, rootY;
00117 int rootXSign, rootYSign;
00118
00119 int rootXOrigin, rootYOrigin;
00120
00121
00122 DMXConfigTokenPtr start;
00123 DMXConfigStringPtr dname;
00124 DMXConfigFullDimPtr dim;
00125 DMXConfigPairPtr origin;
00126 DMXConfigTokenPtr end;
00127 } DMXConfigDisplay, *DMXConfigDisplayPtr;
00128
00130 typedef struct _DMXConfigWall {
00131
00132 int width, height;
00133 int xwall, ywall;
00134
00135
00136
00137 DMXConfigTokenPtr start;
00138 DMXConfigPairPtr wallDim;
00139 DMXConfigPairPtr displayDim;
00140 DMXConfigStringPtr nameList;
00141 DMXConfigTokenPtr end;
00142 } DMXConfigWall, *DMXConfigWallPtr;
00143
00145 typedef struct _DMXConfigOption {
00146
00147 char *string;
00148
00149
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;
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
00182 const char *name;
00183 int width, height;
00184
00185
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