79 |
|
|
80 |
|
|
81 |
|
|
|
/* --- MACRO (and builtin) MANAGEMENT --- */ |
|
|
|
|
|
extern m4_symbol *m4_macro_pushdef (const char *name, lt_dlhandle handle, |
|
|
const char *text, int flags, |
|
|
int min_args, int max_args); |
|
|
extern m4_symbol *m4_macro_define (const char *name, lt_dlhandle handle, |
|
|
const char *text, int flags, |
|
|
int min_args, int max_args); |
|
|
extern void m4_macro_table_install (lt_dlhandle handle, |
|
|
const m4_macro *table); |
|
|
|
|
|
extern m4_symbol *m4_builtin_pushdef (const char *name, lt_dlhandle handle, |
|
|
m4_builtin_func *func, int flags, |
|
|
int min_args, int max_args); |
|
|
extern m4_symbol *m4_builtin_define (const char *name, lt_dlhandle handle, |
|
|
m4_builtin_func *func, int flags, |
|
|
int min_args, int max_args); |
|
|
extern void m4_builtin_table_install (lt_dlhandle handle, |
|
|
const m4_builtin *table); |
|
|
|
|
|
extern const m4_builtin *m4_builtin_find_by_name ( |
|
|
const m4_builtin *, const char *); |
|
|
extern const m4_builtin *m4_builtin_find_by_func ( |
|
|
const m4_builtin *, m4_builtin_func *); |
|
|
|
|
|
|
|
|
|
|
82 |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
83 |
|
|
84 |
extern m4_hash *m4_symtab; |
extern m4_hash *m4_symtab; |
93 |
extern m4_symbol *m4_symbol_define (const char *); |
extern m4_symbol *m4_symbol_define (const char *); |
94 |
extern void m4_symbol_popdef (const char *); |
extern void m4_symbol_popdef (const char *); |
95 |
extern void m4_symbol_delete (const char *); |
extern void m4_symbol_delete (const char *); |
96 |
extern void m4_symbol_builtin (m4_symbol *symbol, lt_dlhandle handle, |
extern m4_symbol *m4_symbol_builtin (m4_symbol *symbol, m4_token *token); |
97 |
m4_builtin_func *func, int flags, |
extern m4_symbol *m4_symbol_macro (m4_symbol *symbol, m4_token *token); |
|
int min_args, int max_args); |
|
|
extern void m4_symbol_macro (m4_symbol *symbol, lt_dlhandle handle, |
|
|
const char *text, int flags, |
|
|
int min_args, int max_args); |
|
98 |
|
|
99 |
|
|
100 |
/* Various different token types. */ |
/* Various different token types. */ |
115 |
M4_TOKEN_FUNC |
M4_TOKEN_FUNC |
116 |
} m4_data_t; |
} m4_data_t; |
117 |
|
|
118 |
|
|
119 |
|
|
120 |
|
|
121 |
|
/* --- MACRO (and builtin) MANAGEMENT --- */ |
122 |
|
|
123 |
|
extern m4_symbol *m4_symbol_token (const char *name, m4_data_t type, |
124 |
|
m4_token *token, |
125 |
|
m4_symbol *(*getter) (const char *name), |
126 |
|
m4_symbol *(*setter) (m4_symbol *, m4_token *)); |
127 |
|
|
128 |
|
extern void m4_macro_table_install (lt_dlhandle handle, |
129 |
|
const m4_macro *table); |
130 |
|
extern void m4_builtin_table_install (lt_dlhandle handle, |
131 |
|
const m4_builtin *table); |
132 |
|
|
133 |
|
extern const m4_builtin *m4_builtin_find_by_name ( |
134 |
|
const m4_builtin *, const char *); |
135 |
|
extern const m4_builtin *m4_builtin_find_by_func ( |
136 |
|
const m4_builtin *, m4_builtin_func *); |
137 |
|
|
138 |
|
#define m4_macro_pushdef(name, macro) \ |
139 |
|
m4_symbol_token ((name), M4_TOKEN_TEXT, (macro), \ |
140 |
|
m4_symbol_pushdef, m4_symbol_macro) |
141 |
|
#define m4_macro_define(name, macro) \ |
142 |
|
m4_symbol_token ((name), M4_TOKEN_TEXT, (macro), \ |
143 |
|
m4_symbol_define, m4_symbol_macro) |
144 |
|
#define m4_builtin_pushdef(name, builtin) \ |
145 |
|
m4_symbol_token ((name), M4_TOKEN_FUNC, (builtin), \ |
146 |
|
m4_symbol_pushdef, m4_symbol_builtin) |
147 |
|
#define m4_builtin_define(name, builtin) \ |
148 |
|
m4_symbol_token ((name), M4_TOKEN_FUNC, (builtin), \ |
149 |
|
m4_symbol_define, m4_symbol_builtin) |
150 |
|
|
151 |
extern m4_token_t m4_token_type (m4_token *); |
extern m4_token_t m4_token_type (m4_token *); |
152 |
extern char *m4_token_text (m4_token *); |
extern char *m4_token_text (m4_token *); |
153 |
extern m4_builtin_func *m4_token_func (m4_token *); |
extern m4_builtin_func *m4_token_func (m4_token *); |