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