1  /* tree.h - declarations for tree.c */
       2  #ifndef TREE_H
       3  #define TREE_H
       4  
       5  #include "tree_types.h"
       6  
       7  void reset_obstacks (void);
       8  
       9  ASSOCIATED_INFO *new_associated_info (void);
      10  ELEMENT *new_element (enum element_type type);
      11  void add_to_element_contents (ELEMENT *parent, ELEMENT *e);
      12  void add_to_contents_as_array (ELEMENT *parent, ELEMENT *e);
      13  void add_to_element_args (ELEMENT *parent, ELEMENT *e);
      14  void insert_into_contents (ELEMENT *parent, ELEMENT *e, int where);
      15  void insert_into_args (ELEMENT *parent, ELEMENT *e, int where);
      16  void insert_slice_into_contents (ELEMENT *to, int idx, ELEMENT *from,
      17                                   int start, int end);
      18  ELEMENT *remove_from_contents (ELEMENT *parent, int where);
      19  void remove_slice_from_contents (ELEMENT *parent, int start, int end);
      20  ELEMENT *last_args_child (ELEMENT *current);
      21  ELEMENT *last_contents_child (ELEMENT *current);
      22  ELEMENT *pop_element_from_args (ELEMENT *parent);
      23  ELEMENT *pop_element_from_contents (ELEMENT *parent);
      24  ELEMENT *contents_child_by_index (ELEMENT *e, int index);
      25  ELEMENT *args_child_by_index (ELEMENT *e, int index);
      26  void destroy_element (ELEMENT *e);
      27  void destroy_element_and_children (ELEMENT *e);
      28  void destroy_node_spec (NODE_SPEC_EXTRA *nse);
      29  
      30  #define element_contents_number(e) ((e)->contents.number)
      31  #define element_args_number(e) ((e)->args.number)
      32  #define element_text(e) (text_base (&(e)->text))
      33  
      34  #endif