aboutsummaryrefslogtreecommitdiff
path: root/src/lex.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lex.h')
-rw-r--r--src/lex.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/lex.h b/src/lex.h
new file mode 100644
index 0000000..2105d0e
--- /dev/null
+++ b/src/lex.h
@@ -0,0 +1,115 @@
+/**
+ * @file lex.h
+ * @author Joe Wingbermuehle
+ * @date 2004-2006
+ *
+ * @brief XML lexer header file.
+ *
+ */
+
+#ifndef LEX_H
+#define LEX_H
+
+/** Tokens.
+ * Note that any change made to this typedef must be reflected in
+ * TOKEN_MAP in lex.c.
+ */
+typedef enum {
+
+ TOK_INVALID,
+
+ TOK_ACTIVEBACKGROUND,
+ TOK_ACTIVEFOREGROUND,
+ TOK_BACKGROUND,
+ TOK_BORDERSTYLE,
+ TOK_CLASS,
+ TOK_CLOCK,
+ TOK_CLOCKSTYLE,
+ TOK_CLOSE,
+ TOK_DESKTOPS,
+ TOK_DOCK,
+ TOK_DOUBLECLICKSPEED,
+ TOK_DOUBLECLICKDELTA,
+ TOK_EXIT,
+ TOK_FOCUSMODEL,
+ TOK_FONT,
+ TOK_FOREGROUND,
+ TOK_GROUP,
+ TOK_HEIGHT,
+ TOK_ICONPATH,
+ TOK_INCLUDE,
+ TOK_JWM,
+ TOK_KEY,
+ TOK_KILL,
+ TOK_LAYER,
+ TOK_MAXIMIZE,
+ TOK_MENU,
+ TOK_MENUSTYLE,
+ TOK_MINIMIZE,
+ TOK_MOUSE,
+ TOK_MOVE,
+ TOK_MOVEMODE,
+ TOK_NAME,
+ TOK_OPTION,
+ TOK_OUTLINE,
+ TOK_PAGER,
+ TOK_PAGERSTYLE,
+ TOK_POPUP,
+ TOK_POPUPSTYLE,
+ TOK_PROGRAM,
+ TOK_RESIZE,
+ TOK_RESIZEMODE,
+ TOK_RESTART,
+ TOK_RESTARTCOMMAND,
+ TOK_ROOTMENU,
+ TOK_SENDTO,
+ TOK_SEPARATOR,
+ TOK_SHADE,
+ TOK_SHUTDOWNCOMMAND,
+ TOK_SNAPMODE,
+ TOK_STARTUPCOMMAND,
+ TOK_STICK,
+ TOK_SWALLOW,
+ TOK_TASKLISTSTYLE,
+ TOK_TASKLIST,
+ TOK_THEME,
+ TOK_THEMEPATH,
+ TOK_TRAY,
+ TOK_TRAYBUTTON,
+ TOK_TRAYBUTTONSTYLE,
+ TOK_TRAYSTYLE,
+ TOK_WIDTH
+
+} TokenType;
+
+/** Structure to represent an XML attribute. */
+typedef struct AttributeNode {
+
+ char *name; /**< The name of the attribute. */
+ char *value; /**< The value for the attribute. */
+ struct AttributeNode *next; /**< The next attribute in the list. */
+
+} AttributeNode;
+
+/** Structure to represent an XML tag. */
+typedef struct TokenNode {
+
+ TokenType type;
+ char *invalidName;
+ char *value;
+ char *fileName;
+ int line;
+ struct AttributeNode *attributes;
+ struct TokenNode *parent;
+ struct TokenNode *subnodeHead, *subnodeTail;
+ struct TokenNode *next;
+
+} TokenNode;
+
+TokenNode *Tokenize(const char *line, const char *fileName);
+
+const char *GetTokenName(const TokenNode *tp);
+const char *GetTokenTypeName(TokenType type);
+
+#endif
+