move config option loading for the kernel into config.c/h
[mikachu/openbox.git] / openbox / parse.h
1 #ifndef __parse_h
2 #define __parse_h
3
4 #include <glib.h>
5 #include "parse.tab.h"
6
7 typedef enum {
8     TOKEN_REAL       = REAL,
9     TOKEN_INTEGER    = INTEGER,
10     TOKEN_STRING     = STRING,
11     TOKEN_IDENTIFIER = IDENTIFIER,
12     TOKEN_BOOL       = BOOL,
13     TOKEN_LIST,
14     TOKEN_LBRACE     = '{',
15     TOKEN_RBRACE     = '}',
16     TOKEN_COMMA      = ',',
17     TOKEN_NEWLINE    = '\n'
18 } ParseTokenType;
19
20 typedef struct {
21     ParseTokenType type;
22     union ParseTokenData data;
23 } ParseToken;
24
25 typedef void (*ParseFunc)(ParseToken *token);
26 typedef void (*AssignParseFunc)(char *name, ParseToken *value);
27
28 void parse_startup();
29 void parse_shutdown();
30
31 /* Parse the RC file
32    found in parse.yacc
33 */
34 void parse_rc();
35
36 void parse_reg_section(char *section, ParseFunc func, AssignParseFunc afunc);
37
38
39 /* Free a parsed token's allocated memory */
40 void parse_free_token(ParseToken *token);
41
42 /* Display an error message while parsing.
43    found in parse.yacc */
44 void yyerror(char *err);
45
46 #endif