298 lines
13 KiB
C
298 lines
13 KiB
C
/*
|
|
* Copyright 2002 Red Hat Inc., Durham, North Carolina.
|
|
*
|
|
* All Rights Reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files (the
|
|
* "Software"), to deal in the Software without restriction, including
|
|
* without limitation on the rights to use, copy, modify, merge,
|
|
* publish, distribute, sublicense, and/or sell copies of the Software,
|
|
* and to permit persons to whom the Software is furnished to do so,
|
|
* subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice (including the
|
|
* next paragraph) shall be included in all copies or substantial
|
|
* portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
/*
|
|
* Authors:
|
|
* Rickard E. (Rik) Faith <faith@redhat.com>
|
|
*
|
|
*/
|
|
|
|
/** \file
|
|
* Interface to DMX configuration file parser. \see dmxparse.c */
|
|
|
|
#ifndef _DMXPARSE_H_
|
|
#define _DMXPARSE_H_
|
|
|
|
#include <stdio.h> /* For FILE */
|
|
|
|
/** Stores tokens not stored in other structures (e.g., keywords and ;) */
|
|
typedef struct _DMXConfigToken {
|
|
int token;
|
|
int line;
|
|
const char *comment;
|
|
} DMXConfigToken, *DMXConfigTokenPtr;
|
|
|
|
/** Stores parsed strings. */
|
|
typedef struct _DMXConfigString {
|
|
int token;
|
|
int line;
|
|
const char *comment;
|
|
const char *string;
|
|
struct _DMXConfigString *next;
|
|
} DMXConfigString, *DMXConfigStringPtr;
|
|
|
|
/** Stores parsed numbers. */
|
|
typedef struct _DMXConfigNumber {
|
|
int token;
|
|
int line;
|
|
const char *comment;
|
|
int number;
|
|
} DMXConfigNumber, *DMXConfigNumberPtr;
|
|
|
|
/** Stores parsed pairs (e.g., x y) */
|
|
typedef struct _DMXConfigPair {
|
|
int token;
|
|
int line;
|
|
const char *comment;
|
|
int x;
|
|
int y;
|
|
int xsign;
|
|
int ysign;
|
|
} DMXConfigPair, *DMXConfigPairPtr;
|
|
|
|
/** Stores parsed comments not stored with a token. */
|
|
typedef struct _DMXConfigComment {
|
|
int token;
|
|
int line;
|
|
const char *comment;
|
|
} DMXConfigComment, *DMXConfigCommentPtr;
|
|
|
|
typedef enum {
|
|
dmxConfigComment,
|
|
dmxConfigVirtual,
|
|
dmxConfigDisplay,
|
|
dmxConfigWall,
|
|
dmxConfigOption,
|
|
dmxConfigParam
|
|
} DMXConfigType;
|
|
|
|
/** Stores a geometry specification. */
|
|
typedef struct _DMXConfigPartDim {
|
|
DMXConfigPairPtr dim;
|
|
DMXConfigPairPtr offset;
|
|
} DMXConfigPartDim, *DMXConfigPartDimPtr;
|
|
|
|
/** Stores a pair of geometry specifications. */
|
|
typedef struct _DMXConfigFullDim {
|
|
DMXConfigPartDimPtr scrn;
|
|
DMXConfigPartDimPtr root;
|
|
} DMXConfigFullDim, *DMXConfigFullDimPtr;
|
|
|
|
/** Stores parsed display information. */
|
|
typedef struct _DMXConfigDisplay {
|
|
/* Summary information */
|
|
const char *name;
|
|
/* Screen Window Geometry */
|
|
int scrnWidth, scrnHeight;
|
|
int scrnX, scrnY;
|
|
int scrnXSign, scrnYSign;
|
|
/* Root Window Geometry */
|
|
int rootWidth, rootHeight;
|
|
int rootX, rootY;
|
|
int rootXSign, rootYSign;
|
|
/* Origin in global space */
|
|
int rootXOrigin, rootYOrigin;
|
|
|
|
/* Raw configuration information */
|
|
DMXConfigTokenPtr start;
|
|
DMXConfigStringPtr dname;
|
|
DMXConfigFullDimPtr dim;
|
|
DMXConfigPairPtr origin;
|
|
DMXConfigTokenPtr end;
|
|
} DMXConfigDisplay, *DMXConfigDisplayPtr;
|
|
|
|
/** Stores parsed wall information. */
|
|
typedef struct _DMXConfigWall {
|
|
/* Summary information */
|
|
int width, height; /* dimensions of displays */
|
|
int xwall, ywall; /* dimensions of wall, in tiles */
|
|
|
|
|
|
/* Raw configuration informaiton */
|
|
DMXConfigTokenPtr start;
|
|
DMXConfigPairPtr wallDim;
|
|
DMXConfigPairPtr displayDim;
|
|
DMXConfigStringPtr nameList;
|
|
DMXConfigTokenPtr end;
|
|
} DMXConfigWall, *DMXConfigWallPtr;
|
|
|
|
/** Stores parsed option information. */
|
|
typedef struct _DMXConfigOption {
|
|
/* Summary information */
|
|
char *string;
|
|
|
|
/* Raw configuration informaiton */
|
|
DMXConfigTokenPtr start;
|
|
DMXConfigStringPtr option;
|
|
DMXConfigTokenPtr end;
|
|
} DMXConfigOption, *DMXConfigOptionPtr;
|
|
|
|
/** Stores parsed param information. */
|
|
typedef struct _DMXConfigParam {
|
|
int argc;
|
|
const char **argv;
|
|
|
|
DMXConfigTokenPtr start;
|
|
DMXConfigTokenPtr open;
|
|
DMXConfigStringPtr param;
|
|
DMXConfigTokenPtr close;
|
|
DMXConfigTokenPtr end; /* Either open/close OR end */
|
|
struct _DMXConfigParam *next;
|
|
} DMXConfigParam, *DMXConfigParamPtr;
|
|
|
|
/** Stores options under an entry (subentry). */
|
|
typedef struct _DMXConfigSub {
|
|
DMXConfigType type;
|
|
DMXConfigCommentPtr comment;
|
|
DMXConfigDisplayPtr display;
|
|
DMXConfigWallPtr wall;
|
|
DMXConfigOptionPtr option;
|
|
DMXConfigParamPtr param;
|
|
struct _DMXConfigSub *next;
|
|
} DMXConfigSub, *DMXConfigSubPtr;
|
|
|
|
/** Stores parsed virtual information. */
|
|
typedef struct _DMXConfigVirtual {
|
|
/* Summary information */
|
|
const char *name;
|
|
int width, height;
|
|
|
|
/* Raw configuration information */
|
|
DMXConfigTokenPtr start;
|
|
DMXConfigStringPtr vname;
|
|
DMXConfigPairPtr dim;
|
|
DMXConfigTokenPtr open;
|
|
DMXConfigSubPtr subentry;
|
|
DMXConfigTokenPtr close;
|
|
} DMXConfigVirtual, *DMXConfigVirtualPtr;
|
|
|
|
/** Heads entry storage. */
|
|
typedef struct _DMXConfigEntry {
|
|
DMXConfigType type;
|
|
DMXConfigCommentPtr comment;
|
|
DMXConfigVirtualPtr virtual;
|
|
struct _DMXConfigEntry *next;
|
|
} DMXConfigEntry, *DMXConfigEntryPtr;
|
|
|
|
extern DMXConfigEntryPtr dmxConfigEntry;
|
|
|
|
extern int yylex(void);
|
|
extern int yydebug;
|
|
extern void yyerror(const char *message);
|
|
|
|
extern void dmxConfigLog(const char *format, ...);
|
|
extern void *dmxConfigAlloc(unsigned long bytes);
|
|
extern void *dmxConfigRealloc(void *orig,
|
|
unsigned long orig_bytes,
|
|
unsigned long bytes);
|
|
extern const char *dmxConfigCopyString(const char *string,
|
|
int length);
|
|
extern void dmxConfigFree(void *area);
|
|
extern DMXConfigTokenPtr dmxConfigCreateToken(int token, int line,
|
|
const char *comment);
|
|
extern void dmxConfigFreeToken(DMXConfigTokenPtr p);
|
|
extern DMXConfigStringPtr dmxConfigCreateString(int token, int line,
|
|
const char *comment,
|
|
const char *string);
|
|
extern void dmxConfigFreeString(DMXConfigStringPtr p);
|
|
extern DMXConfigNumberPtr dmxConfigCreateNumber(int token, int line,
|
|
const char *comment,
|
|
int number);
|
|
extern void dmxConfigFreeNumber(DMXConfigNumberPtr p);
|
|
extern DMXConfigPairPtr dmxConfigCreatePair(int token, int line,
|
|
const char *comment,
|
|
int x, int y,
|
|
int xsign, int ysign);
|
|
extern void dmxConfigFreePair(DMXConfigPairPtr p);
|
|
extern DMXConfigCommentPtr dmxConfigCreateComment(int token, int line,
|
|
const char *comment);
|
|
extern void dmxConfigFreeComment(DMXConfigCommentPtr p);
|
|
extern DMXConfigPartDimPtr dmxConfigCreatePartDim(DMXConfigPairPtr pDim,
|
|
DMXConfigPairPtr pOffset);
|
|
extern void dmxConfigFreePartDim(DMXConfigPartDimPtr p);
|
|
extern DMXConfigFullDimPtr dmxConfigCreateFullDim(DMXConfigPartDimPtr pScrn,
|
|
DMXConfigPartDimPtr pRoot);
|
|
extern void dmxConfigFreeFullDim(DMXConfigFullDimPtr p);
|
|
extern DMXConfigDisplayPtr dmxConfigCreateDisplay(DMXConfigTokenPtr pStart,
|
|
DMXConfigStringPtr pName,
|
|
DMXConfigFullDimPtr pDim,
|
|
DMXConfigPairPtr pOrigin,
|
|
DMXConfigTokenPtr pEnd);
|
|
extern void dmxConfigFreeDisplay(DMXConfigDisplayPtr p);
|
|
extern DMXConfigWallPtr dmxConfigCreateWall(DMXConfigTokenPtr pStart,
|
|
DMXConfigPairPtr pWallDim,
|
|
DMXConfigPairPtr pDisplayDim,
|
|
DMXConfigStringPtr pNameList,
|
|
DMXConfigTokenPtr pEnd);
|
|
extern void dmxConfigFreeWall(DMXConfigWallPtr p);
|
|
extern DMXConfigOptionPtr dmxConfigCreateOption(DMXConfigTokenPtr pStart,
|
|
DMXConfigStringPtr pOption,
|
|
DMXConfigTokenPtr pEnd);
|
|
extern void dmxConfigFreeOption(DMXConfigOptionPtr p);
|
|
extern DMXConfigParamPtr dmxConfigCreateParam(DMXConfigTokenPtr pStart,
|
|
DMXConfigTokenPtr pOpen,
|
|
DMXConfigStringPtr pParam,
|
|
DMXConfigTokenPtr pClose,
|
|
DMXConfigTokenPtr pEnd);
|
|
extern void dmxConfigFreeParam(DMXConfigParamPtr p);
|
|
extern const char **dmxConfigLookupParam(DMXConfigParamPtr p,
|
|
const char *key,
|
|
int *argc);
|
|
extern DMXConfigSubPtr dmxConfigCreateSub(DMXConfigType type,
|
|
DMXConfigCommentPtr comment,
|
|
DMXConfigDisplayPtr display,
|
|
DMXConfigWallPtr wall,
|
|
DMXConfigOptionPtr option,
|
|
DMXConfigParamPtr param);
|
|
extern void dmxConfigFreeSub(DMXConfigSubPtr sub);
|
|
extern DMXConfigSubPtr dmxConfigSubComment(DMXConfigCommentPtr comment);
|
|
extern DMXConfigSubPtr dmxConfigSubDisplay(DMXConfigDisplayPtr display);
|
|
extern DMXConfigSubPtr dmxConfigSubWall(DMXConfigWallPtr wall);
|
|
extern DMXConfigSubPtr dmxConfigSubOption(DMXConfigOptionPtr option);
|
|
extern DMXConfigSubPtr dmxConfigSubParam(DMXConfigParamPtr param);
|
|
extern DMXConfigSubPtr dmxConfigAddSub(DMXConfigSubPtr head,
|
|
DMXConfigSubPtr sub);
|
|
extern DMXConfigVirtualPtr dmxConfigCreateVirtual(DMXConfigTokenPtr pStart,
|
|
DMXConfigStringPtr pName,
|
|
DMXConfigPairPtr pDim,
|
|
DMXConfigTokenPtr pOpen,
|
|
DMXConfigSubPtr pSubentry,
|
|
DMXConfigTokenPtr pClose);
|
|
extern void dmxConfigFreeVirtual(DMXConfigVirtualPtr virtual);
|
|
extern DMXConfigEntryPtr dmxConfigCreateEntry(DMXConfigType type,
|
|
DMXConfigCommentPtr comment,
|
|
DMXConfigVirtualPtr virtual);
|
|
extern void dmxConfigFreeEntry(DMXConfigEntryPtr entry);
|
|
extern DMXConfigEntryPtr dmxConfigAddEntry(DMXConfigEntryPtr head,
|
|
DMXConfigType type,
|
|
DMXConfigCommentPtr comment,
|
|
DMXConfigVirtualPtr virtual);
|
|
extern DMXConfigEntryPtr dmxConfigEntryComment(DMXConfigCommentPtr comment);
|
|
extern DMXConfigEntryPtr dmxConfigEntryVirtual(DMXConfigVirtualPtr virtual);
|
|
|
|
#endif
|