X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fparse.h;h=199e8104d7d1abd81e232a97a1d308ec12bb606e;hb=d2857b11944146e2e6973b7f7280cb57e1ee260b;hp=f2d22f817e201e8eb76e7f3a9a5a227333c2eadc;hpb=b66b0ef95a678fb821ffce78bb22309966b8eada;p=chaz%2Fopenbox diff --git a/openbox/parse.h b/openbox/parse.h index f2d22f81..199e8104 100644 --- a/openbox/parse.h +++ b/openbox/parse.h @@ -1,42 +1,38 @@ #ifndef __parse_h #define __parse_h +#include "action.h" + +#include #include -#include "parse.tab.h" - -typedef enum { - TOKEN_REAL = REAL, - TOKEN_INTEGER = INTEGER, - TOKEN_STRING = STRING, - TOKEN_IDENTIFIER = IDENTIFIER, - TOKEN_BOOL = BOOL, - TOKEN_LBRACKET = '(', - TOKEN_RBRACKET = ')', - TOKEN_LBRACE = '{', - TOKEN_RBRACE = '}', - TOKEN_EQUALS = '=', - TOKEN_COMMA = ',', - TOKEN_NEWLINE = '\n' -} ParseTokenType; - -typedef void (*ParseFunc)(ParseTokenType type, union ParseToken token); + +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); +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(ParseTokenType type, union 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