(root)/
texinfo-7.1/
tp/
Texinfo/
XS/
parsetexi/
macro.h
       1  /* macro.h - declarations for macro.c */
       2  #ifndef MACRO_H
       3  #define MACRO_H
       4  /* Copyright 2010-2023 Free Software Foundation, Inc.
       5  
       6     This program is free software: you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation, either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program.  If not, see <http://www.gnu.org/licenses/>. */
      18  
      19  #include "tree_types.h"
      20  
      21  typedef struct {
      22      enum command_id cmd;
      23      char *begin;
      24      char *end;
      25  } INFO_ENCLOSE;
      26  
      27  typedef struct {
      28      char *macro_name;
      29      ELEMENT *element;
      30      enum command_id cmd;
      31      char *macrobody;
      32  } MACRO;
      33  
      34  void new_macro (char *name, ELEMENT *macro);
      35  ELEMENT *parse_macro_command_line (enum command_id, char **line_inout,
      36                                     ELEMENT *parent);
      37  ELEMENT *handle_macro (ELEMENT *current, char **line_inout,
      38                         enum command_id cmd_id);
      39  void delete_macro (char *name);
      40  void unset_macro_record (MACRO *m);
      41  void expand_macro_body (MACRO *macro_record, ELEMENT *arguments,
      42                          TEXT *expanded);
      43  MACRO *lookup_macro (enum command_id cmd);
      44  void wipe_macros (void);
      45  
      46  void store_value (char *name, char *value);
      47  char *fetch_value (char *name);
      48  void clear_value (char *name);
      49  INFO_ENCLOSE *lookup_infoenclose (enum command_id cmd);
      50  void add_infoenclose (enum command_id cmd, char *begin, char *end);
      51  
      52  #endif