X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fparse.h;h=199e8104d7d1abd81e232a97a1d308ec12bb606e;hb=d2857b11944146e2e6973b7f7280cb57e1ee260b;hp=3ce5ebbdc3420b1c6cac2a394ba2611530d54418;hpb=d22e9c9c1d669c27e50c3cd191cf19d31d67fb4d;p=chaz%2Fopenbox diff --git a/openbox/parse.h b/openbox/parse.h index 3ce5ebbd..199e8104 100644 --- a/openbox/parse.h +++ b/openbox/parse.h @@ -1,48 +1,38 @@ #ifndef __parse_h #define __parse_h +#include "action.h" + +#include #include -#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 = BOOL, - 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