29 |
|
|
30 |
|
|
31 |
|
|
32 |
/* Various declarations. */ |
/* --- MODULE AUTHOR DECLARATIONS --- */ |
33 |
|
|
34 |
typedef struct m4 m4; |
typedef struct m4 m4; |
35 |
typedef struct obstack m4_obstack; |
typedef struct m4_builtin m4_builtin; |
36 |
|
typedef struct m4_macro m4_macro; |
37 |
typedef struct m4_symbol_value m4_symbol_value; |
typedef struct m4_symbol_value m4_symbol_value; |
38 |
|
|
39 |
|
typedef struct obstack m4_obstack; |
40 |
|
typedef lt_dlsymlist m4_export; |
41 |
|
|
42 |
typedef void m4_builtin_func (m4 *, m4_obstack *, int, m4_symbol_value **); |
typedef void m4_builtin_func (m4 *, m4_obstack *, int, m4_symbol_value **); |
43 |
|
|
44 |
typedef struct { |
struct m4_builtin |
45 |
|
{ |
46 |
const char * name; |
const char * name; |
47 |
m4_builtin_func * func; |
m4_builtin_func * func; |
48 |
boolean groks_macro_args, blind_if_no_args; |
boolean groks_macro_args, blind_if_no_args; |
49 |
int min_args, max_args; |
int min_args, max_args; |
50 |
} m4_builtin; |
}; |
51 |
|
|
52 |
typedef struct { |
struct m4_macro |
53 |
|
{ |
54 |
const char *name; |
const char *name; |
55 |
const char *value; |
const char *value; |
56 |
} m4_macro; |
}; |
|
|
|
|
typedef lt_dlsymlist m4_export; |
|
57 |
|
|
58 |
|
|
59 |
#define M4BUILTIN(name) \ |
#define M4BUILTIN(name) \ |
76 |
void CONC(name, CONC(_LTX_, m4_finish_module)) \ |
void CONC(name, CONC(_LTX_, m4_finish_module)) \ |
77 |
(m4 *context, lt_dlhandle handle, m4_obstack *obs) |
(m4 *context, lt_dlhandle handle, m4_obstack *obs) |
78 |
|
|
79 |
|
#define M4_MODULE_IMPORT(M, S) \ |
80 |
|
CONC(S, _func) *S = (CONC(S, _func) *) \ |
81 |
|
m4_module_import (context, STR(M), STR(S), obs) |
82 |
|
|
83 |
#define M4ARG(i) (argc > (i) ? m4_get_symbol_value_text (argv[i]) : "") |
#define M4ARG(i) (argc > (i) ? m4_get_symbol_value_text (argv[i]) : "") |
84 |
|
|
85 |
extern boolean m4_bad_argc (m4 *, int, m4_symbol_value **, |
extern boolean m4_bad_argc (m4 *, int, m4_symbol_value **, |
152 |
typedef void m4_module_init_func (m4 *, lt_dlhandle, m4_obstack*); |
typedef void m4_module_init_func (m4 *, lt_dlhandle, m4_obstack*); |
153 |
typedef void m4_module_finish_func (m4 *, lt_dlhandle, m4_obstack*); |
typedef void m4_module_finish_func (m4 *, lt_dlhandle, m4_obstack*); |
154 |
|
|
155 |
extern lt_dlhandle m4_module_load (m4 *, const char*, m4_obstack*); |
extern lt_dlhandle m4_module_load (m4 *, const char*, m4_obstack*); |
156 |
extern void m4_module_unload (m4 *, const char*, m4_obstack*); |
extern void m4_module_unload (m4 *, const char*, m4_obstack*); |
157 |
|
extern void * m4_module_import (m4 *, const char*, const char*, |
158 |
|
m4_obstack*); |
159 |
|
|
160 |
extern const char *m4_get_module_name (lt_dlhandle); |
extern const char * m4_get_module_name (lt_dlhandle); |
|
extern m4_builtin *m4_get_module_builtin_table (lt_dlhandle); |
|
|
extern m4_macro *m4_get_module_macro_table (lt_dlhandle); |
|
161 |
|
|
162 |
|
|
163 |
|
|
216 |
|
|
217 |
/* --- BUILTIN MANAGEMENT --- */ |
/* --- BUILTIN MANAGEMENT --- */ |
218 |
|
|
219 |
extern const m4_builtin *m4_builtin_find_by_name ( |
extern const m4_builtin *m4_builtin_find_by_name (lt_dlhandle, const char *); |
220 |
const m4_builtin *, const char *); |
extern const m4_builtin *m4_builtin_find_by_func (lt_dlhandle, |
221 |
extern const m4_builtin *m4_builtin_find_by_func ( |
m4_builtin_func *); |
|
const m4_builtin *, m4_builtin_func *); |
|
222 |
|
|
223 |
|
|
224 |
|
|