31 |
/* Various declarations. */ |
/* Various declarations. */ |
32 |
|
|
33 |
typedef struct m4 m4; |
typedef struct m4 m4; |
|
typedef struct m4_symbol m4_symbol; |
|
|
typedef struct m4_symbol_value m4_symbol_value; |
|
34 |
typedef struct m4_hash m4_symtab; |
typedef struct m4_hash m4_symtab; |
35 |
|
typedef struct m4_symbol m4_symbol; |
36 |
|
typedef struct m4_symbol_value m4_symbol_value; |
37 |
|
|
38 |
typedef void m4_builtin_func (m4 *, struct obstack *, int, m4_symbol_value **); |
typedef void m4_builtin_func (m4 *, struct obstack *, int, m4_symbol_value **); |
39 |
typedef void *m4_module_func (const char *); |
typedef void *m4_module_func (const char *); |
40 |
|
|
41 |
typedef struct { |
typedef struct { |
|
unsigned char *string; /* characters of the string */ |
|
|
size_t length; /* length of the string */ |
|
|
} m4_string; |
|
|
|
|
|
typedef struct { |
|
42 |
const char *name; |
const char *name; |
43 |
const char *value; |
const char *value; |
44 |
} m4_macro; |
} m4_macro; |
74 |
extern m4_builtin *m4_get_module_builtin_table (lt_dlhandle); |
extern m4_builtin *m4_get_module_builtin_table (lt_dlhandle); |
75 |
extern m4_macro *m4_get_module_macro_table (lt_dlhandle); |
extern m4_macro *m4_get_module_macro_table (lt_dlhandle); |
76 |
|
|
|
extern void m4_set_module_macro_table (m4 *context, lt_dlhandle handle, |
|
|
const m4_macro *table); |
|
|
extern void m4_set_module_builtin_table (m4 *context, lt_dlhandle handle, |
|
|
const m4_builtin *table); |
|
77 |
|
|
78 |
|
|
79 |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
100 |
while (m4_symbol_lookup ((symtab), (name))) \ |
while (m4_symbol_lookup ((symtab), (name))) \ |
101 |
m4_symbol_popdef ((symtab), (name)); } M4_STMT_END |
m4_symbol_popdef ((symtab), (name)); } M4_STMT_END |
102 |
|
|
103 |
extern void m4_set_symbol_traced (m4_symtab*, const char *); |
extern m4_symbol_value *m4_get_symbol_value (m4_symbol *symbol); |
104 |
|
extern boolean m4_get_symbol_traced (m4_symbol*); |
105 |
|
extern boolean m4_set_symbol_traced (m4_symbol*, boolean); |
106 |
|
extern boolean m4_set_symbol_name_traced (m4_symtab*, const char *); |
107 |
/* The data for a token, a macro argument, and a macro definition. */ |
|
108 |
typedef enum { |
#define m4_is_symbol_text(symbol) \ |
109 |
M4_SYMBOL_VOID, |
(m4_is_symbol_value_text (m4_get_symbol_value (symbol))) |
110 |
M4_SYMBOL_TEXT, |
#define m4_is_symbol_func(symbol) \ |
111 |
M4_SYMBOL_FUNC |
(m4_is_symbol_value_func (m4_get_symbol_value (symbol))) |
112 |
} m4_symbol_type; |
#define m4_get_symbol_text(symbol) \ |
113 |
|
(m4_get_symbol_value_text (m4_get_symbol_value (symbol))) |
114 |
|
#define m4_get_symbol_func(symbol) \ |
115 |
|
(m4_get_symbol_value_func (m4_get_symbol_value (symbol))) |
116 |
|
|
117 |
|
extern m4_symbol_value *m4_symbol_value_create (void); |
118 |
|
extern void m4_symbol_value_delete (m4_symbol_value *); |
119 |
|
extern void m4_symbol_value_copy (m4_symbol_value *, |
120 |
|
m4_symbol_value *); |
121 |
|
extern boolean m4_is_symbol_value_text (m4_symbol_value *); |
122 |
|
extern boolean m4_is_symbol_value_func (m4_symbol_value *); |
123 |
|
extern char *m4_get_symbol_value_text (m4_symbol_value *); |
124 |
|
extern m4_builtin_func *m4_get_symbol_value_func (m4_symbol_value *); |
125 |
|
extern void m4_set_symbol_value_text (m4_symbol_value *, char *); |
126 |
|
extern void m4_set_symbol_value_func (m4_symbol_value *, |
127 |
|
m4_builtin_func *); |
128 |
|
|
129 |
|
|
130 |
|
|
135 |
extern const m4_builtin *m4_builtin_find_by_func ( |
extern const m4_builtin *m4_builtin_find_by_func ( |
136 |
const m4_builtin *, m4_builtin_func *); |
const m4_builtin *, m4_builtin_func *); |
137 |
|
|
|
extern m4_symbol_type m4_get_symbol_value_type (m4_symbol_value *); |
|
|
extern char *m4_get_symbol_value_text (m4_symbol_value *); |
|
|
extern m4_builtin_func *m4_get_symbol_value_func (m4_symbol_value *); |
|
|
|
|
138 |
#define M4ARG(i) (argc > (i) ? m4_get_symbol_value_text (argv[i]) : "") |
#define M4ARG(i) (argc > (i) ? m4_get_symbol_value_text (argv[i]) : "") |
139 |
|
|
140 |
#define M4BUILTIN(name) \ |
#define M4BUILTIN(name) \ |
188 |
extern int discard_comments; /* -c */ |
extern int discard_comments; /* -c */ |
189 |
|
|
190 |
/* left and right quote, begin and end comment */ |
/* left and right quote, begin and end comment */ |
191 |
|
typedef struct { |
192 |
|
unsigned char *string; /* characters of the string */ |
193 |
|
size_t length; /* length of the string */ |
194 |
|
} m4_string; |
195 |
|
|
196 |
extern m4_string lquote; |
extern m4_string lquote; |
197 |
extern m4_string rquote; |
extern m4_string rquote; |
198 |
|
|
406 |
extern void m4_input_init (void); |
extern void m4_input_init (void); |
407 |
extern void m4_input_exit (void); |
extern void m4_input_exit (void); |
408 |
extern int m4_peek_input (void); |
extern int m4_peek_input (void); |
|
extern void m4_symbol_value_copy (m4_symbol_value *dest, m4_symbol_value *src); |
|
409 |
extern void m4_skip_line (void); |
extern void m4_skip_line (void); |
410 |
|
|
411 |
/* push back input */ |
/* push back input */ |