create a generic tokenizer/sectionizer for the config file. pass off the token to...
[dana/openbox.git] / openbox / parse.h
1 #ifndef __parse_h
2 #define __parse_h
3
4 #include <glib.h>
5 #include "y.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_LBRACKET   = '(',
14     TOKEN_RBRACKET   = ')',
15     TOKEN_LBRACE     = '{',
16     TOKEN_RBRACE     = '}',
17     TOKEN_EQUALS     = '=',
18     TOKEN_COMMA      = ',',
19     TOKEN_NEWLINE    = '\n'
20 } ParseTokenType;
21
22 typedef void (*ParseFunc)(ParseTokenType type, union ParseToken token);
23
24 void parse_startup();
25 void parse_shutdown();
26
27 /* Parse the RC file
28    found in parse.yacc
29 */
30 void parse_rc();
31
32 void parse_reg_section(char *section, ParseFunc func);
33
34
35 /* Free a parsed token's allocated memory */
36 void parse_free_token(ParseTokenType type, union ParseToken token);
37
38 /* Display an error message while parsing.
39    found in parse.yacc */
40 void yyerror(char *err);
41
42 #endif