/[m4]/m4/m4/builtin.c
ViewVC logotype

Diff of /m4/m4/builtin.c

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

revision 1.3 by akim, Tue Aug 7 10:41:11 2001 UTC revision 1.4 by gary, Thu Aug 16 22:21:30 2001 UTC
# Line 38  m4_builtin_find_by_name (bp, name) Line 38  m4_builtin_find_by_name (bp, name)
38       const m4_builtin *bp;       const m4_builtin *bp;
39       const char *name;       const char *name;
40  {  {
41    List *module;    lt_dlhandle   handle  = NULL;
42    
43    for (module = m4_modules; module != NULL; module = LIST_NEXT (module))    while ((handle = lt_dlhandle_next (handle)))
44      {      {
45        m4_builtin *builtin = ((m4_module *) module)->bp;        m4_builtin *builtin = m4_module_builtins (handle);
46    
47        if (builtin && (bp == NULL || bp == builtin))        if (builtin && (bp == NULL || bp == builtin))
48          {          {
# Line 54  m4_builtin_find_by_name (bp, name) Line 54  m4_builtin_find_by_name (bp, name)
54    
55    return NULL;    return NULL;
56  }  }
57    
58  const m4_builtin *  const m4_builtin *
59  m4_builtin_find_by_func (bp, func)  m4_builtin_find_by_func (bp, func)
60       const m4_builtin *bp;       const m4_builtin *bp;
61       m4_builtin_func *func;       m4_builtin_func *func;
62  {  {
63    List *module;    lt_dlhandle   handle  = NULL;
64    
65    for (module = m4_modules; module != NULL; module = LIST_NEXT (module))    while ((handle = lt_dlhandle_next (handle)))
66      {      {
67        m4_builtin *builtin = ((m4_module *) module)->bp;        m4_builtin *builtin = m4_module_builtins (handle);
68    
69        if (builtin && (bp == NULL || bp == builtin))        if (builtin && (bp == NULL || bp == builtin))
70          {          {
# Line 84  m4_builtin_find_by_func (bp, func) Line 85  m4_builtin_find_by_func (bp, func)
85  `-------------------------------------------------------------------------*/  `-------------------------------------------------------------------------*/
86    
87  void  void
88  m4_builtin_define (module, name, bp, mode, traced)  m4_builtin_define (handle, name, bp, mode, traced)
89       const m4_module *module;       const lt_dlhandle handle;
90       const char *name;       const char *name;
91       const m4_builtin *bp;       const m4_builtin *bp;
92       m4_symbol_lookup mode;       m4_symbol_lookup mode;
# Line 99  m4_builtin_define (module, name, bp, mod Line 100  m4_builtin_define (module, name, bp, mod
100        if (SYMBOL_TYPE (symbol) == M4_TOKEN_TEXT)        if (SYMBOL_TYPE (symbol) == M4_TOKEN_TEXT)
101          xfree (SYMBOL_TEXT (symbol));          xfree (SYMBOL_TEXT (symbol));
102    
103        SYMBOL_MODULE (symbol)            = module;        SYMBOL_HANDLE (symbol)            = handle;
104        SYMBOL_TYPE (symbol)              = M4_TOKEN_FUNC;        SYMBOL_TYPE (symbol)              = M4_TOKEN_FUNC;
105        SYMBOL_MACRO_ARGS (symbol)        = bp->groks_macro_args;        SYMBOL_MACRO_ARGS (symbol)        = bp->groks_macro_args;
106        SYMBOL_BLIND_NO_ARGS (symbol)     = bp->blind_if_no_args;        SYMBOL_BLIND_NO_ARGS (symbol)     = bp->blind_if_no_args;
# Line 109  m4_builtin_define (module, name, bp, mod Line 110  m4_builtin_define (module, name, bp, mod
110  }  }
111    
112  void  void
113  m4_builtin_table_install (module, table)  m4_builtin_table_install (handle, table)
114       const m4_module *module;       const lt_dlhandle handle;
115       const m4_builtin *table;       const m4_builtin *table;
116  {  {
117    const m4_builtin *bp;    const m4_builtin *bp;
# Line 122  m4_builtin_table_install (module, table) Line 123  m4_builtin_table_install (module, table)
123          string = (char *) xmalloc (strlen (bp->name) + 4);          string = (char *) xmalloc (strlen (bp->name) + 4);
124          strcpy (string, "m4_");          strcpy (string, "m4_");
125          strcat (string, bp->name);          strcat (string, bp->name);
126          m4_builtin_define (module, string, bp, M4_SYMBOL_PUSHDEF, FALSE);          m4_builtin_define (handle, string, bp, M4_SYMBOL_PUSHDEF, FALSE);
127          free (string);          free (string);
128        }        }
129      else      else
130        m4_builtin_define (module, bp->name, bp, M4_SYMBOL_PUSHDEF, FALSE);        m4_builtin_define (handle, bp->name, bp, M4_SYMBOL_PUSHDEF, FALSE);
131  }  }
132    
133  /*-------------------------------------------------------------------------.  /*-------------------------------------------------------------------------.
# Line 136  m4_builtin_table_install (module, table) Line 137  m4_builtin_table_install (module, table)
137  `-------------------------------------------------------------------------*/  `-------------------------------------------------------------------------*/
138    
139  void  void
140  m4_macro_define (module, name, text, mode)  m4_macro_define (handle, name, text, mode)
141       const m4_module *module;       const lt_dlhandle handle;
142       const char *name;       const char *name;
143       const char *text;       const char *text;
144       m4_symbol_lookup mode;       m4_symbol_lookup mode;
# Line 150  m4_macro_define (module, name, text, mod Line 151  m4_macro_define (module, name, text, mod
151        if (SYMBOL_TYPE (symbol) == M4_TOKEN_TEXT)        if (SYMBOL_TYPE (symbol) == M4_TOKEN_TEXT)
152          xfree (SYMBOL_TEXT (symbol));          xfree (SYMBOL_TEXT (symbol));
153    
154        SYMBOL_MODULE (symbol)            = module;        SYMBOL_HANDLE (symbol)            = handle;
155        SYMBOL_TYPE (symbol)              = M4_TOKEN_TEXT;        SYMBOL_TYPE (symbol)              = M4_TOKEN_TEXT;
156        SYMBOL_MACRO_ARGS (symbol)        = FALSE;        SYMBOL_MACRO_ARGS (symbol)        = FALSE;
157        SYMBOL_BLIND_NO_ARGS (symbol)     = FALSE;        SYMBOL_BLIND_NO_ARGS (symbol)     = FALSE;
# Line 160  m4_macro_define (module, name, text, mod Line 161  m4_macro_define (module, name, text, mod
161  }  }
162    
163  void  void
164  m4_macro_table_install (module, table)  m4_macro_table_install (handle, table)
165       const m4_module *module;       const lt_dlhandle handle;
166       const m4_macro *table;       const m4_macro *table;
167  {  {
168    const m4_macro *mp;    const m4_macro *mp;
169    
170    for (mp = table; mp->name != NULL; mp++)    for (mp = table; mp->name != NULL; mp++)
171      m4_macro_define (module, mp->name, mp->value, M4_SYMBOL_PUSHDEF);      m4_macro_define (handle, mp->name, mp->value, M4_SYMBOL_PUSHDEF);
172  }  }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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