#ifndef IR_H
#define IR_H

/* This is the tree node structure */
typedef struct n {
    node_index_t type;      // Type of the node
    void *data;             // Pointer to associated data
    struct s *entry;        // Pointer to symtab entry (ignore for now)
    uint64_t n_children;    // Number of child nodes
    struct n **children;    // Array of n_children child nodes
} node_t;

/**Export the initializer function, it is needed by the parser
 * @param *nd node to initialize
 * @param type type of node (see nodetype.h)
 * @param *data associated data. Declared void to allow any type
 * @param n_children number of children
 * @param ... variable argument list of child nodes (node_t *)
 * */
void node_init (
    node_t *nd, node_index_t type, void *data, uint64_t n_children, ...
);
#endif