/[m4]/m4/m4/m4module.h
ViewVC logotype

Diff of /m4/m4/m4module.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.47 by gary, Mon Jun 16 16:29:06 2003 UTC revision 1.48 by gary, Tue Jun 17 15:17:45 2003 UTC
# Line 60  typedef struct { Line 60  typedef struct {
60    
61  /* --- CONTEXT MANAGEMENT --- */  /* --- CONTEXT MANAGEMENT --- */
62    
63  extern m4 *m4_create (void);  extern m4 *       m4_create     (void);
64  extern void m4_delete (m4 *);  extern void       m4_delete     (m4 *);
65  extern m4_symtab *m4_get_symtab (m4 *);  extern m4_symtab *m4_get_symtab (m4 *);
66    
67  #define M4SYMTAB        (m4_get_symtab (context))  #define M4SYMTAB        (m4_get_symtab (context))
68    
69    
70    
71  /* --- MODULE MANAGEMENT --- */  /* --- MODULE MANAGEMENT --- */
72    
# Line 75  typedef void m4_module_finish_func (m4 * Line 76  typedef void m4_module_finish_func (m4 *
76  extern lt_dlhandle  m4_module_load   (m4 *, const char*, struct obstack*);  extern lt_dlhandle  m4_module_load   (m4 *, const char*, struct obstack*);
77  extern void         m4_module_unload (m4 *, const char*, struct obstack*);  extern void         m4_module_unload (m4 *, const char*, struct obstack*);
78    
79  extern const char  *m4_get_module_name     (lt_dlhandle);  extern const char  *m4_get_module_name          (lt_dlhandle);
80  extern m4_builtin  *m4_get_module_builtin_table (lt_dlhandle);  extern m4_builtin  *m4_get_module_builtin_table (lt_dlhandle);
81  extern m4_macro    *m4_get_module_macro_table   (lt_dlhandle);  extern m4_macro    *m4_get_module_macro_table   (lt_dlhandle);
82    
83    extern void     m4_set_module_macro_table   (m4 *context, lt_dlhandle handle,
84                                                 const m4_macro *table);
85    extern void     m4_set_module_builtin_table (m4 *context, lt_dlhandle handle,
86                                                 const m4_builtin *table);
87    
88    
89  /* --- SYMBOL TABLE MANAGEMENT --- */  /* --- SYMBOL TABLE MANAGEMENT --- */
90    
91    
92  typedef int m4_symtab_apply_func (m4_symtab *symtab, const void *key, void *value, void *data);  typedef int m4_symtab_apply_func (m4_symtab *symtab, const void *key,
93                                      void *value, void *data);
94    
95  extern m4_symtab *m4_symtab_create  (size_t);  extern m4_symtab *m4_symtab_create  (size_t);
96  extern void       m4_symtab_delete  (m4_symtab*);  extern void       m4_symtab_delete  (m4_symtab*);
# Line 92  extern int       m4_symtab_apply   (m4_symta Line 99  extern int       m4_symtab_apply   (m4_symta
99  #define m4_symtab_apply(symtab, func, userdata)                         \  #define m4_symtab_apply(symtab, func, userdata)                         \
100   (m4_hash_apply ((m4_hash*)(symtab), (m4_hash_apply_func*)(func), (userdata)))   (m4_hash_apply ((m4_hash*)(symtab), (m4_hash_apply_func*)(func), (userdata)))
101    
102    
103  extern m4_symbol *m4_symbol_lookup  (m4_symtab*, const char *);  extern m4_symbol *m4_symbol_lookup  (m4_symtab*, const char *);
104  extern m4_symbol *m4_symbol_pushdef (m4_symtab*, const char *);  extern m4_symbol *m4_symbol_pushdef (m4_symtab*, const char *, m4_token *);
105  extern m4_symbol *m4_symbol_define  (m4_symtab*, const char *);  extern m4_symbol *m4_symbol_define  (m4_symtab*, const char *, m4_token *);
106  extern void       m4_symbol_popdef  (m4_symtab*, const char *);  extern void       m4_symbol_popdef  (m4_symtab*, const char *);
107  extern void       m4_symbol_delete  (m4_symtab*, const char *);  extern void       m4_symbol_delete  (m4_symtab*, const char *);
108    
# Line 102  extern void       m4_symbol_delete  (m4_ Line 110  extern void       m4_symbol_delete  (m4_
110          while (m4_symbol_lookup ((symtab), (name)))                     \          while (m4_symbol_lookup ((symtab), (name)))                     \
111              m4_symbol_popdef ((symtab), (name));        } M4_STMT_END              m4_symbol_popdef ((symtab), (name));        } M4_STMT_END
112    
113    extern void       m4_set_symbol_traced (m4_symtab*, const char *);
114    
115    
116  /* Various different token types.  */  /* Various different token types.  */
117  typedef enum {  typedef enum {
# Line 126  typedef enum { Line 136  typedef enum {
136    
137  /* --- MACRO (and builtin) MANAGEMENT --- */  /* --- MACRO (and builtin) MANAGEMENT --- */
138    
 extern m4_symbol *m4_symbol_set_token (m4 *context, const char *name,  
                         m4_symbol_type type, m4_token *token,  
                         m4_symbol *(*getter) (m4_symtab *, const char *),  
                         m4_symbol *(*setter) (m4_symbol *, m4_token *));  
   
 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);  
   
139  extern const m4_builtin *m4_builtin_find_by_name (  extern const m4_builtin *m4_builtin_find_by_name (
140                                  const m4_builtin *, const char *);                                  const m4_builtin *, const char *);
141  extern const m4_builtin *m4_builtin_find_by_func (  extern const m4_builtin *m4_builtin_find_by_func (
142                                  const m4_builtin *, m4_builtin_func *);                                  const m4_builtin *, m4_builtin_func *);
143    
   
 /* These 2 functions are not part of the documented API, but we need to  
    declare them here so that the macros below will work.  */  
 extern m4_symbol *m4__symbol_set_builtin (m4_symbol*, m4_token*);  
 extern m4_symbol *m4__symbol_set_macro   (m4_symbol*, m4_token*);  
   
 #define m4_macro_pushdef(context, name, macro)                              \  
         m4_symbol_set_token ((context), (name), M4_TOKEN_TEXT, (macro),     \  
                          m4_symbol_pushdef, m4__symbol_set_macro)  
 #define m4_macro_define(context, name, macro)                               \  
         m4_symbol_set_token ((context), (name), M4_TOKEN_TEXT, (macro),     \  
                          m4_symbol_define, m4__symbol_set_macro)  
 #define m4_builtin_pushdef(context, name, builtin)                          \  
         m4_symbol_set_token ((context), (name), M4_TOKEN_FUNC, (builtin),   \  
                          m4_symbol_pushdef, m4__symbol_set_builtin)  
 #define m4_builtin_define(context, name, builtin)                           \  
         m4_symbol_set_token ((context), (name), M4_TOKEN_FUNC, (builtin),   \  
                          m4_symbol_define, m4__symbol_set_builtin)  
   
144  extern m4__token_type   m4_token_get_type (m4_token *);  extern m4__token_type   m4_token_get_type (m4_token *);
145  extern char            *m4_token_text     (m4_token *);  extern char            *m4_token_text     (m4_token *);
146  extern m4_builtin_func *m4_token_func     (m4_token *);  extern m4_builtin_func *m4_token_func     (m4_token *);

Legend:
Removed from v.1.47  
changed lines
  Added in v.1.48

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26