]> Dogcows Code - chaz/openbox/blobdiff - openbox/parse.h
ECKS EM ELL
[chaz/openbox] / openbox / parse.h
index abd5bb2d7ef718c41ba9c1a72f6e05b639ed9e83..199e8104d7d1abd81e232a97a1d308ec12bb606e 100644 (file)
@@ -1,48 +1,38 @@
 #ifndef __parse_h
 #define __parse_h
 
+#include "action.h"
+
+#include <libxml/parser.h>
 #include <glib.h>
-#ifndef NO_TAB_H
-#include "parse.tab.h"
-#endif
 
-typedef enum {
-    TOKEN_REAL       = REAL,
-    TOKEN_INTEGER    = INTEGER,
-    TOKEN_STRING     = STRING,
-    TOKEN_IDENTIFIER = IDENTIFIER,
-    TOKEN_BOOL       = BOOLEAN,
-    TOKEN_LIST,
-    TOKEN_LBRACE     = '{',
-    TOKEN_RBRACE     = '}',
-    TOKEN_COMMA      = ',',
-    TOKEN_NEWLINE    = '\n'
-} ParseTokenType;
-
-typedef struct {
-    ParseTokenType type;
-    union ParseTokenData data;
-} ParseToken;
-
-typedef void (*ParseFunc)(ParseToken *token);
-typedef void (*AssignParseFunc)(char *name, ParseToken *value);
+typedef void (*ParseCallback)(xmlDocPtr doc, xmlNodePtr node, void *data);
 
 void parse_startup();
 void parse_shutdown();
 
-/* Parse the RC file
-   found in parse.yacc
-*/
-void parse_rc();
+void parse_register(const char *tag, ParseCallback func, void *data);
+
+void parse_config();
+
+void parse_tree(xmlDocPtr doc, xmlNodePtr node, void *nothing);
+
+
+/* helpers */
+
+xmlNodePtr parse_find_node(const char *tag, xmlNodePtr node);
 
-void parse_reg_section(char *section, ParseFunc func, AssignParseFunc afunc);
+char *parse_string(xmlDocPtr doc, xmlNodePtr node);
+int parse_int(xmlDocPtr doc, xmlNodePtr node);
+gboolean parse_bool(xmlDocPtr doc, xmlNodePtr node);
 
+gboolean parse_contains(const char *val, xmlDocPtr doc, xmlNodePtr node);
+gboolean parse_attr_contains(const char *val, xmlNodePtr node,
+                             const char *name);
 
-/* Free a parsed token's allocated memory */
-void parse_free_token(ParseToken *token);
+gboolean parse_attr_string(const char *name, xmlNodePtr node, char **value);
+gboolean parse_attr_int(const char *name, xmlNodePtr node, int *value);
 
-/* Display an error message while parsing.
-   found in parse.yacc */
-void yyerror(char *err);
+Action *parse_action(xmlDocPtr doc, xmlNodePtr node);
 
 #endif
This page took 0.022532 seconds and 4 git commands to generate.