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 
00037 #ifndef _DMXPARSE_H_
00038 #define _DMXPARSE_H_
00039 
00040 #include <stdio.h>              
00041 
00043 typedef struct _DMXConfigToken {
00044     int                      token;
00045     int                      line;
00046     const char               *comment;
00047 } DMXConfigToken, *DMXConfigTokenPtr;
00048 
00050 typedef struct _DMXConfigString {
00051     int                      token;
00052     int                      line;
00053     const char               *comment;
00054     const char               *string;
00055     struct _DMXConfigString  *next;
00056 } DMXConfigString, *DMXConfigStringPtr;
00057 
00059 typedef struct _DMXConfigNumber {
00060     int                      token;
00061     int                      line;
00062     const char               *comment;
00063     int                      number;
00064 } DMXConfigNumber, *DMXConfigNumberPtr;
00065 
00067 typedef struct _DMXConfigPair {
00068     int                      token;
00069     int                      line;
00070     const char               *comment;
00071     int                      x;
00072     int                      y;
00073     int                      xsign;
00074     int                      ysign;
00075 } DMXConfigPair, *DMXConfigPairPtr;
00076 
00078 typedef struct _DMXConfigComment {
00079     int                      token;
00080     int                      line;
00081     const char               *comment;
00082 } DMXConfigComment, *DMXConfigCommentPtr;
00083 
00084 typedef enum {
00085     dmxConfigComment,
00086     dmxConfigVirtual,
00087     dmxConfigDisplay,
00088     dmxConfigWall,
00089     dmxConfigOption,
00090     dmxConfigParam
00091 } DMXConfigType;
00092 
00094 typedef struct _DMXConfigPartDim {
00095     DMXConfigPairPtr         dim;
00096     DMXConfigPairPtr         offset;
00097 } DMXConfigPartDim, *DMXConfigPartDimPtr;
00098 
00100 typedef struct _DMXConfigFullDim {
00101     DMXConfigPartDimPtr      scrn;
00102     DMXConfigPartDimPtr      root;
00103 } DMXConfigFullDim, *DMXConfigFullDimPtr;
00104 
00106 typedef struct _DMXConfigDisplay {
00107                                 
00108     const char               *name;
00109                                 
00110     int                      scrnWidth, scrnHeight;
00111     int                      scrnX, scrnY;
00112     int                      scrnXSign, scrnYSign;
00113                                 
00114     int                      rootWidth, rootHeight;
00115     int                      rootX, rootY;
00116     int                      rootXSign, rootYSign;
00117                                 
00118     int                      rootXOrigin, rootYOrigin;
00119     
00120                                 
00121     DMXConfigTokenPtr        start;
00122     DMXConfigStringPtr       dname;
00123     DMXConfigFullDimPtr      dim;
00124     DMXConfigPairPtr         origin;
00125     DMXConfigTokenPtr        end;
00126 } DMXConfigDisplay, *DMXConfigDisplayPtr;
00127 
00129 typedef struct _DMXConfigWall {
00130                                 
00131     int                      width, height; 
00132     int                      xwall, ywall; 
00133 
00134     
00135                                 
00136     DMXConfigTokenPtr        start;
00137     DMXConfigPairPtr         wallDim;
00138     DMXConfigPairPtr         displayDim;
00139     DMXConfigStringPtr       nameList;
00140     DMXConfigTokenPtr        end;
00141 } DMXConfigWall, *DMXConfigWallPtr;
00142 
00144 typedef struct _DMXConfigOption {
00145                                 
00146     char                     *string;
00147     
00148                                 
00149     DMXConfigTokenPtr        start;
00150     DMXConfigStringPtr       option;
00151     DMXConfigTokenPtr        end;
00152 } DMXConfigOption, *DMXConfigOptionPtr;
00153 
00155 typedef struct _DMXConfigParam {
00156     int                      argc;
00157     const char               **argv;
00158     
00159     DMXConfigTokenPtr        start;
00160     DMXConfigTokenPtr        open;
00161     DMXConfigStringPtr       param;
00162     DMXConfigTokenPtr        close;
00163     DMXConfigTokenPtr        end; 
00164     struct _DMXConfigParam   *next;
00165 } DMXConfigParam, *DMXConfigParamPtr;
00166 
00168 typedef struct _DMXConfigSub {
00169     DMXConfigType             type;
00170     DMXConfigCommentPtr       comment;
00171     DMXConfigDisplayPtr       display;
00172     DMXConfigWallPtr          wall;
00173     DMXConfigOptionPtr        option;
00174     DMXConfigParamPtr         param;
00175     struct _DMXConfigSub      *next;
00176 } DMXConfigSub, *DMXConfigSubPtr;
00177 
00179 typedef struct _DMXConfigVirtual {
00180                                 
00181     const char                *name;
00182     int                       width, height;
00183 
00184                                 
00185     DMXConfigTokenPtr         start;
00186     DMXConfigStringPtr        vname;
00187     DMXConfigPairPtr          dim;
00188     DMXConfigTokenPtr         open;
00189     DMXConfigSubPtr           subentry;
00190     DMXConfigTokenPtr         close;
00191 } DMXConfigVirtual, *DMXConfigVirtualPtr;
00192 
00194 typedef struct _DMXConfigEntry {
00195     DMXConfigType            type;
00196     DMXConfigCommentPtr      comment;
00197     DMXConfigVirtualPtr      virtual;
00198     struct _DMXConfigEntry   *next;
00199 } DMXConfigEntry, *DMXConfigEntryPtr;
00200 
00201 extern DMXConfigEntryPtr   dmxConfigEntry;
00202 
00203 extern int                 yylex(void);
00204 extern int                 yydebug;
00205 extern void                yyerror(const char *message);
00206 
00207 extern void                dmxConfigLog(const char *format, ...);
00208 extern void                *dmxConfigAlloc(unsigned long bytes);
00209 extern void                *dmxConfigRealloc(void *orig,
00210                                              unsigned long orig_bytes,
00211                                              unsigned long bytes);
00212 extern const char          *dmxConfigCopyString(const char *string,
00213                                                 int length);
00214 extern void                dmxConfigFree(void *area);
00215 extern DMXConfigTokenPtr   dmxConfigCreateToken(int token, int line,
00216                                                 const char *comment);
00217 extern void                dmxConfigFreeToken(DMXConfigTokenPtr p);
00218 extern DMXConfigStringPtr  dmxConfigCreateString(int token, int line,
00219                                                  const char *comment,
00220                                                  const char *string);
00221 extern void                dmxConfigFreeString(DMXConfigStringPtr p);
00222 extern DMXConfigNumberPtr  dmxConfigCreateNumber(int token, int line,
00223                                                  const char *comment,
00224                                                  int number);
00225 extern void                dmxConfigFreeNumber(DMXConfigNumberPtr p);
00226 extern DMXConfigPairPtr    dmxConfigCreatePair(int token, int line,
00227                                                const char *comment,
00228                                                int x, int y,
00229                                                int xsign, int ysign);
00230 extern void                dmxConfigFreePair(DMXConfigPairPtr p);
00231 extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line,
00232                                                   const char *comment);
00233 extern void                dmxConfigFreeComment(DMXConfigCommentPtr p);
00234 extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim,
00235                                                   DMXConfigPairPtr pOffset);
00236 extern void                dmxConfigFreePartDim(DMXConfigPartDimPtr p);
00237 extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn,
00238                                                   DMXConfigPartDimPtr pRoot);
00239 extern void                dmxConfigFreeFullDim(DMXConfigFullDimPtr p);
00240 extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart,
00241                                                   DMXConfigStringPtr pName,
00242                                                   DMXConfigFullDimPtr pDim,
00243                                                   DMXConfigPairPtr pOrigin,
00244                                                   DMXConfigTokenPtr pEnd);
00245 extern void                dmxConfigFreeDisplay(DMXConfigDisplayPtr p);
00246 extern DMXConfigWallPtr    dmxConfigCreateWall(DMXConfigTokenPtr pStart,
00247                                                DMXConfigPairPtr pWallDim,
00248                                                DMXConfigPairPtr pDisplayDim,
00249                                                DMXConfigStringPtr pNameList,
00250                                                DMXConfigTokenPtr pEnd);
00251 extern void                dmxConfigFreeWall(DMXConfigWallPtr p);
00252 extern DMXConfigOptionPtr  dmxConfigCreateOption(DMXConfigTokenPtr pStart,
00253                                                  DMXConfigStringPtr pOption,
00254                                                  DMXConfigTokenPtr pEnd);
00255 extern void                dmxConfigFreeOption(DMXConfigOptionPtr p);
00256 extern DMXConfigParamPtr   dmxConfigCreateParam(DMXConfigTokenPtr pStart,
00257                                                 DMXConfigTokenPtr pOpen,
00258                                                 DMXConfigStringPtr pParam,
00259                                                 DMXConfigTokenPtr pClose,
00260                                                 DMXConfigTokenPtr pEnd);
00261 extern void                dmxConfigFreeParam(DMXConfigParamPtr p);
00262 extern const char          **dmxConfigLookupParam(DMXConfigParamPtr p,
00263                                                   const char *key,
00264                                                   int *argc);
00265 extern DMXConfigSubPtr     dmxConfigCreateSub(DMXConfigType type,
00266                                               DMXConfigCommentPtr comment,
00267                                               DMXConfigDisplayPtr display,
00268                                               DMXConfigWallPtr wall,
00269                                               DMXConfigOptionPtr option,
00270                                               DMXConfigParamPtr param);
00271 extern void                dmxConfigFreeSub(DMXConfigSubPtr sub);
00272 extern DMXConfigSubPtr     dmxConfigSubComment(DMXConfigCommentPtr comment);
00273 extern DMXConfigSubPtr     dmxConfigSubDisplay(DMXConfigDisplayPtr display);
00274 extern DMXConfigSubPtr     dmxConfigSubWall(DMXConfigWallPtr wall);
00275 extern DMXConfigSubPtr     dmxConfigSubOption(DMXConfigOptionPtr option);
00276 extern DMXConfigSubPtr     dmxConfigSubParam(DMXConfigParamPtr param);
00277 extern DMXConfigSubPtr     dmxConfigAddSub(DMXConfigSubPtr head,
00278                                            DMXConfigSubPtr sub);
00279 extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart,
00280                                                   DMXConfigStringPtr pName,
00281                                                   DMXConfigPairPtr pDim,
00282                                                   DMXConfigTokenPtr pOpen,
00283                                                   DMXConfigSubPtr pSubentry,
00284                                                   DMXConfigTokenPtr pClose);
00285 extern void                dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual);
00286 extern DMXConfigEntryPtr   dmxConfigCreateEntry(DMXConfigType type,
00287                                                 DMXConfigCommentPtr comment,
00288                                                 DMXConfigVirtualPtr virtual);
00289 extern void                dmxConfigFreeEntry(DMXConfigEntryPtr entry);
00290 extern DMXConfigEntryPtr   dmxConfigAddEntry(DMXConfigEntryPtr head,
00291                                              DMXConfigType type,
00292                                              DMXConfigCommentPtr comment,
00293                                              DMXConfigVirtualPtr virtual);
00294 extern DMXConfigEntryPtr   dmxConfigEntryComment(DMXConfigCommentPtr comment);
00295 extern DMXConfigEntryPtr   dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual);
00296 
00297 #endif