39 |
typedef struct m4_module_data m4_module_data; |
typedef struct m4_module_data m4_module_data; |
40 |
typedef struct m4_token_data m4_token_data; |
typedef struct m4_token_data m4_token_data; |
41 |
|
|
42 |
typedef void m4_builtin_func M4_PARAMS((struct obstack *, int, |
typedef void m4_builtin_func (struct obstack *, int, struct m4_token_data **); |
43 |
struct m4_token_data **)); |
typedef void *m4_module_func (const char *); |
|
typedef VOID *m4_module_func M4_PARAMS((const char *)); |
|
44 |
typedef void m4_hack_symbol (); |
typedef void m4_hack_symbol (); |
45 |
|
|
46 |
|
|
73 |
} m4_builtin; |
} m4_builtin; |
74 |
|
|
75 |
|
|
76 |
extern void m4_module_init M4_PARAMS((void)); |
extern void m4_module_init (void); |
77 |
extern lt_dlhandle m4_module_load M4_PARAMS((const char*, struct obstack*)); |
extern lt_dlhandle m4_module_load (const char*, struct obstack*); |
78 |
extern void m4_module_unload M4_PARAMS((const char*, struct obstack*)); |
extern void m4_module_unload (const char*, struct obstack*); |
79 |
extern lt_dlhandle m4_module_open M4_PARAMS((const char*, struct obstack*)); |
extern lt_dlhandle m4_module_open (const char*, struct obstack*); |
80 |
extern void m4_module_close M4_PARAMS((lt_dlhandle, struct obstack*)); |
extern void m4_module_close (lt_dlhandle, struct obstack*); |
81 |
extern void m4_module_close_all M4_PARAMS((struct obstack*)); |
extern void m4_module_close_all (struct obstack*); |
82 |
|
|
83 |
extern const char *m4_module_name M4_PARAMS((lt_dlhandle)); |
extern const char *m4_module_name (lt_dlhandle); |
84 |
extern m4_builtin *m4_module_builtins M4_PARAMS((lt_dlhandle)); |
extern m4_builtin *m4_module_builtins (lt_dlhandle); |
85 |
extern m4_macro *m4_module_macros M4_PARAMS((lt_dlhandle)); |
extern m4_macro *m4_module_macros (lt_dlhandle); |
86 |
|
|
87 |
extern lt_dlhandle m4_module_find_by_builtin M4_PARAMS((const m4_builtin*)); |
extern lt_dlhandle m4_module_find_by_builtin (const m4_builtin*); |
88 |
|
|
89 |
|
|
90 |
extern void m4_macro_define M4_PARAMS((const lt_dlhandle, |
extern void m4_macro_define (const lt_dlhandle, |
91 |
const char *, const char *, m4_symbol_lookup)); |
const char *, const char *, m4_symbol_lookup); |
92 |
extern void m4_macro_table_install M4_PARAMS(( |
extern void m4_macro_table_install ( |
93 |
const lt_dlhandle, const m4_macro *)); |
const lt_dlhandle, const m4_macro *); |
94 |
|
|
95 |
extern void m4_builtin_define M4_PARAMS((const lt_dlhandle, |
extern void m4_builtin_define (const lt_dlhandle, |
96 |
const char *, const m4_builtin *, |
const char *, const m4_builtin *, |
97 |
m4_symbol_lookup, boolean)); |
m4_symbol_lookup, boolean); |
98 |
extern void m4_builtin_table_install M4_PARAMS(( |
extern void m4_builtin_table_install ( |
99 |
const lt_dlhandle, const m4_builtin *)); |
const lt_dlhandle, const m4_builtin *); |
100 |
|
|
101 |
extern const m4_builtin *m4_builtin_find_by_name M4_PARAMS(( |
extern const m4_builtin *m4_builtin_find_by_name ( |
102 |
const m4_builtin *, const char *)); |
const m4_builtin *, const char *); |
103 |
extern const m4_builtin *m4_builtin_find_by_func M4_PARAMS(( |
extern const m4_builtin *m4_builtin_find_by_func ( |
104 |
const m4_builtin *, m4_builtin_func *)); |
const m4_builtin *, m4_builtin_func *); |
105 |
|
|
106 |
extern m4_symbol **m4_symtab; |
extern m4_symbol **m4_symtab; |
107 |
|
|
108 |
extern void m4_symtab_init M4_PARAMS((void)); |
extern void m4_symtab_init (void); |
109 |
extern m4_symbol *m4_lookup_symbol M4_PARAMS((const char *, |
extern m4_symbol *m4_lookup_symbol (const char *, |
110 |
m4_symbol_lookup)); |
m4_symbol_lookup); |
111 |
extern void m4_hack_all_symbols M4_PARAMS((m4_hack_symbol *, |
extern void m4_hack_all_symbols (m4_hack_symbol *, |
112 |
const char *)); |
const char *); |
113 |
extern void m4_remove_table_reference_symbols M4_PARAMS(( |
extern void m4_remove_table_reference_symbols ( |
114 |
m4_builtin *, m4_macro *)); |
m4_builtin *, m4_macro *); |
115 |
|
|
116 |
|
|
117 |
/* Various different token types. */ |
/* Various different token types. */ |
132 |
M4_TOKEN_FUNC |
M4_TOKEN_FUNC |
133 |
} m4_token_data_t; |
} m4_token_data_t; |
134 |
|
|
135 |
typedef void m4_module_init_func M4_PARAMS((lt_dlhandle, struct obstack*)); |
typedef void m4_module_init_func (lt_dlhandle, struct obstack*); |
136 |
typedef void m4_module_finish_func M4_PARAMS((lt_dlhandle, struct obstack*)); |
typedef void m4_module_finish_func (lt_dlhandle, struct obstack*); |
137 |
|
|
138 |
extern m4_token_data_t m4_token_data_type M4_PARAMS((m4_token_data*)); |
extern m4_token_data_t m4_token_data_type (m4_token_data*); |
139 |
extern char *m4_token_data_text M4_PARAMS((m4_token_data*)); |
extern char *m4_token_data_text (m4_token_data*); |
140 |
extern char *m4_token_data_orig_text M4_PARAMS((m4_token_data*)); |
extern char *m4_token_data_orig_text (m4_token_data*); |
141 |
extern m4_builtin_func *m4_token_data_func M4_PARAMS((m4_token_data*)); |
extern m4_builtin_func *m4_token_data_func (m4_token_data*); |
142 |
extern boolean m4_token_data_func_traced M4_PARAMS((m4_token_data*)); |
extern boolean m4_token_data_func_traced (m4_token_data*); |
143 |
|
|
144 |
|
|
145 |
#define M4ARG(i) (argc > (i) ? m4_token_data_text (argv[i]) : "") |
#define M4ARG(i) (argc > (i) ? m4_token_data_text (argv[i]) : "") |
146 |
|
|
147 |
#define M4BUILTIN(name) \ |
#define M4BUILTIN(name) \ |
148 |
static void CONC(builtin_, name) \ |
static void CONC(builtin_, name) \ |
149 |
M4_PARAMS((struct obstack *, int , m4_token_data **)); |
(struct obstack *, int , m4_token_data **); |
150 |
|
|
151 |
#define M4BUILTIN_HANDLER(name) \ |
#define M4BUILTIN_HANDLER(name) \ |
152 |
static void CONC(builtin_, name) (obs, argc, argv) \ |
static void CONC(builtin_, name) (obs, argc, argv) \ |
194 |
#define DEF_BCOMM "#" |
#define DEF_BCOMM "#" |
195 |
#define DEF_ECOMM "\n" |
#define DEF_ECOMM "\n" |
196 |
|
|
197 |
boolean m4_bad_argc M4_PARAMS((m4_token_data *, int, int, int)); |
boolean m4_bad_argc (m4_token_data *, int, int, int); |
198 |
const char *m4_skip_space M4_PARAMS((const char *)); |
const char *m4_skip_space (const char *); |
199 |
boolean m4_numeric_arg M4_PARAMS((m4_token_data *, const char *, int *)); |
boolean m4_numeric_arg (m4_token_data *, const char *, int *); |
200 |
void m4_shipout_int M4_PARAMS((struct obstack *, int)); |
void m4_shipout_int (struct obstack *, int); |
201 |
void m4_shipout_string M4_PARAMS((struct obstack*, const char*, int, boolean)); |
void m4_shipout_string (struct obstack*, const char*, int, boolean); |
202 |
void m4_dump_args M4_PARAMS((struct obstack *obs, int argc, m4_token_data **argv, const char *sep, boolean quoted)); |
void m4_dump_args (struct obstack *obs, int argc, m4_token_data **argv, const char *sep, boolean quoted); |
203 |
|
|
204 |
|
|
205 |
M4_SCOPE FILE *m4_debug; |
M4_SCOPE FILE *m4_debug; |
292 |
} \ |
} \ |
293 |
while (0) |
while (0) |
294 |
|
|
295 |
void m4_debug_init M4_PARAMS((void)); |
void m4_debug_init (void); |
296 |
int m4_debug_decode M4_PARAMS((const char *)); |
int m4_debug_decode (const char *); |
297 |
void m4_debug_flush_files M4_PARAMS((void)); |
void m4_debug_flush_files (void); |
298 |
boolean m4_debug_set_output M4_PARAMS((const char *)); |
boolean m4_debug_set_output (const char *); |
299 |
void m4_debug_message_prefix M4_PARAMS((void)); |
void m4_debug_message_prefix (void); |
300 |
|
|
301 |
void m4_trace_prepre M4_PARAMS((const char *, int)); |
void m4_trace_prepre (const char *, int); |
302 |
void m4_trace_pre M4_PARAMS((const char *, int, int, m4_token_data **)); |
void m4_trace_pre (const char *, int, int, m4_token_data **); |
303 |
void m4_trace_post M4_PARAMS((const char *, int, int, m4_token_data **, |
void m4_trace_post (const char *, int, int, m4_token_data **, |
304 |
const char *)); |
const char *); |
305 |
|
|
306 |
/* Exit code from last "syscmd" command. */ |
/* Exit code from last "syscmd" command. */ |
307 |
M4_SCOPE int m4_sysval; |
M4_SCOPE int m4_sysval; |
308 |
M4_SCOPE int m4_expansion_level; |
M4_SCOPE int m4_expansion_level; |
309 |
|
|
310 |
const char *m4_expand_ranges M4_PARAMS((const char *s, struct obstack *obs)); |
const char *m4_expand_ranges (const char *s, struct obstack *obs); |
311 |
void m4_expand_input M4_PARAMS((void)); |
void m4_expand_input (void); |
312 |
void m4_call_macro M4_PARAMS((m4_symbol *, int, m4_token_data **, struct obstack *)); |
void m4_call_macro (m4_symbol *, int, m4_token_data **, struct obstack *); |
313 |
void m4_process_macro M4_PARAMS((struct obstack *obs, m4_symbol *symbol, int argc, m4_token_data **argv)); |
void m4_process_macro (struct obstack *obs, m4_symbol *symbol, int argc, m4_token_data **argv); |
314 |
|
|
315 |
|
|
316 |
|
|
375 |
M4_SCOPE const char *m4_current_file; |
M4_SCOPE const char *m4_current_file; |
376 |
M4_SCOPE int m4_current_line; |
M4_SCOPE int m4_current_line; |
377 |
|
|
378 |
extern int m4_syntax_code M4_PARAMS((char ch)); |
extern int m4_syntax_code (char ch); |
379 |
extern void m4_input_init M4_PARAMS((void)); |
extern void m4_input_init (void); |
380 |
extern void m4_syntax_init M4_PARAMS((void)); |
extern void m4_syntax_init (void); |
381 |
extern int m4_peek_input M4_PARAMS((void)); |
extern int m4_peek_input (void); |
382 |
extern m4_token_t m4_next_token M4_PARAMS((m4_token_data *)); |
extern m4_token_t m4_next_token (m4_token_data *); |
383 |
extern void m4_skip_line M4_PARAMS((void)); |
extern void m4_skip_line (void); |
384 |
|
|
385 |
/* push back input */ |
/* push back input */ |
386 |
extern void m4_push_file M4_PARAMS((FILE *, const char *)); |
extern void m4_push_file (FILE *, const char *); |
387 |
extern void m4_push_single M4_PARAMS((int ch)); |
extern void m4_push_single (int ch); |
388 |
extern void m4_push_macro M4_PARAMS((m4_builtin_func *, lt_dlhandle, |
extern void m4_push_macro (m4_builtin_func *, lt_dlhandle, |
389 |
boolean)); |
boolean); |
390 |
extern struct obstack *m4_push_string_init M4_PARAMS((void)); |
extern struct obstack *m4_push_string_init (void); |
391 |
extern const char *m4_push_string_finish M4_PARAMS((void)); |
extern const char *m4_push_string_finish (void); |
392 |
extern void m4_push_wrapup M4_PARAMS((const char *)); |
extern void m4_push_wrapup (const char *); |
393 |
extern boolean m4_pop_wrapup M4_PARAMS((void)); |
extern boolean m4_pop_wrapup (void); |
394 |
|
|
395 |
extern void m4_set_quotes M4_PARAMS((const char *, const char *)); |
extern void m4_set_quotes (const char *, const char *); |
396 |
extern void m4_set_comment M4_PARAMS((const char *, const char *)); |
extern void m4_set_comment (const char *, const char *); |
397 |
extern void m4_set_syntax M4_PARAMS((char, const unsigned char *)); |
extern void m4_set_syntax (char, const unsigned char *); |
398 |
#ifdef ENABLE_CHANGEWORD |
#ifdef ENABLE_CHANGEWORD |
399 |
extern void m4_set_word_regexp M4_PARAMS((const char *)); |
extern void m4_set_word_regexp (const char *); |
400 |
#endif |
#endif |
401 |
|
|
402 |
M4_SCOPE int m4_current_diversion; |
M4_SCOPE int m4_current_diversion; |
403 |
M4_SCOPE int m4_output_current_line; |
M4_SCOPE int m4_output_current_line; |
404 |
|
|
405 |
extern void m4_output_init M4_PARAMS((void)); |
extern void m4_output_init (void); |
406 |
extern void m4_shipout_text M4_PARAMS((struct obstack *, const char *, int)); |
extern void m4_shipout_text (struct obstack *, const char *, int); |
407 |
extern void m4_make_diversion M4_PARAMS((int)); |
extern void m4_make_diversion (int); |
408 |
extern void m4_insert_diversion M4_PARAMS((int)); |
extern void m4_insert_diversion (int); |
409 |
extern void m4_insert_file M4_PARAMS((FILE *)); |
extern void m4_insert_file (FILE *); |
410 |
extern void m4_freeze_diversions M4_PARAMS((FILE *)); |
extern void m4_freeze_diversions (FILE *); |
411 |
extern void m4_undivert_all M4_PARAMS((void)); |
extern void m4_undivert_all (void); |
412 |
|
|
413 |
extern void m4_include_init M4_PARAMS((void)); |
extern void m4_include_init (void); |
414 |
extern void m4_include_env_init M4_PARAMS((void)); |
extern void m4_include_env_init (void); |
415 |
extern void m4_add_include_directory M4_PARAMS((const char *)); |
extern void m4_add_include_directory (const char *); |
416 |
extern FILE *m4_path_search M4_PARAMS((const char *, char **)); |
extern FILE *m4_path_search (const char *, char **); |
417 |
|
|
418 |
/* These are for other search paths */ |
/* These are for other search paths */ |
419 |
|
|
433 |
int max_length; /* length of longest directory name */ |
int max_length; /* length of longest directory name */ |
434 |
}; |
}; |
435 |
|
|
436 |
extern struct m4_search_path_info *m4_search_path_info_new M4_PARAMS((void)); |
extern struct m4_search_path_info *m4_search_path_info_new (void); |
437 |
extern void m4_search_path_env_init M4_PARAMS((struct m4_search_path_info *, char *, boolean)); |
extern void m4_search_path_env_init (struct m4_search_path_info *, char *, boolean); |
438 |
extern void m4_search_path_add M4_PARAMS((struct m4_search_path_info *, const char *)); |
extern void m4_search_path_add (struct m4_search_path_info *, const char *); |
439 |
|
|
440 |
|
|
441 |
/* The structure dump_symbol_data is used to pass the information needed |
/* The structure dump_symbol_data is used to pass the information needed |
448 |
int size; /* size of table */ |
int size; /* size of table */ |
449 |
}; |
}; |
450 |
|
|
451 |
extern void m4_dump_symbol M4_PARAMS((m4_symbol *symbol, struct m4_dump_symbol_data *data)); |
extern void m4_dump_symbol (m4_symbol *symbol, struct m4_dump_symbol_data *data); |
452 |
extern void m4_dump_symbols M4_PARAMS((struct m4_dump_symbol_data *data, int argc, m4_token_data **argv, boolean complain)); |
extern void m4_dump_symbols (struct m4_dump_symbol_data *data, int argc, m4_token_data **argv, boolean complain); |
453 |
|
|
454 |
|
|
455 |
|
|
456 |
|
|
457 |
/* --- EXPRESSION EVALUATION --- */ |
/* --- EXPRESSION EVALUATION --- */ |
458 |
|
|
459 |
typedef boolean (*m4_eval_func) M4_PARAMS((struct obstack *obs, |
typedef boolean (*m4_eval_func) (struct obstack *obs, |
460 |
const char *expr, const int radix, int min)); |
const char *expr, const int radix, int min); |
461 |
|
|
462 |
extern boolean m4_evaluate M4_PARAMS((struct obstack *obs, |
extern boolean m4_evaluate (struct obstack *obs, |
463 |
const char *, const int radix, int min)); |
const char *, const int radix, int min); |
464 |
extern void m4_do_eval M4_PARAMS((struct obstack *obs, int argc, m4_token_data **argv, m4_eval_func func)); |
extern void m4_do_eval (struct obstack *obs, int argc, m4_token_data **argv, m4_eval_func func); |
465 |
|
|
466 |
#define obstack_chunk_alloc xmalloc |
#define obstack_chunk_alloc xmalloc |
467 |
#define obstack_chunk_free xfree |
#define obstack_chunk_free xfree |