27 |
#include <assert.h> |
#include <assert.h> |
28 |
#include <m4module.h> |
#include <m4module.h> |
29 |
|
|
30 |
|
|
31 |
|
|
32 |
|
/* --- CONTEXT MANAGEMENT --- */ |
33 |
|
|
34 |
|
struct m4 { |
35 |
|
m4_symtab *symtab; |
36 |
|
}; |
37 |
|
|
38 |
|
#define M4_SYMTAB(context) ((context)->symtab) |
39 |
|
|
40 |
|
#define m4_get_symtab(context) ((context)->symtab) |
41 |
|
|
42 |
|
|
43 |
|
|
44 |
/* --- MODULE MANAGEMENT --- */ |
/* --- MODULE MANAGEMENT --- */ |
45 |
|
|
50 |
#define FINISH_SYMBOL "m4_finish_module" |
#define FINISH_SYMBOL "m4_finish_module" |
51 |
|
|
52 |
extern void m4__module_init (void); |
extern void m4__module_init (void); |
53 |
extern lt_dlhandle m4__module_open (const char *name, struct obstack *obs); |
extern lt_dlhandle m4__module_open (m4 *context, const char *name, |
54 |
extern void m4__module_exit (void); |
struct obstack *obs); |
55 |
|
extern void m4__module_exit (m4 *context); |
56 |
|
|
57 |
|
|
58 |
|
|
59 |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
/* --- SYMBOL TABLE MANAGEMENT --- */ |
60 |
|
|
61 |
extern m4_hash *m4__symtab; |
extern void m4__symtab_init (void); |
62 |
|
extern void m4__symtab_remove_module_references (m4_symtab*, lt_dlhandle); |
63 |
#define m4_symtab_apply(func, data) \ |
extern void m4__symtab_exit (void); |
|
m4_hash_apply (m4__symtab, (m4_hash_apply_func *)(func), (data)) |
|
|
|
|
|
extern void m4__symtab_init (void); |
|
|
extern void m4__symtab_remove_module_references (lt_dlhandle); |
|
|
extern void m4__symtab_exit (void); |
|
64 |
|
|
65 |
|
|
66 |
/* TRUE iff strlen(rquote) == strlen(lquote) == 1 */ |
/* TRUE iff strlen(rquote) == strlen(lquote) == 1 */ |