/* Netlist text preprocessor: #ifdef/#ifndef/#if/#elif/#else/#endif,
   #define/#undef, #error/#warning, #include.
   See inppp.c for the semantics. */

#ifndef ngspice_INPPP_H
#define ngspice_INPPP_H

/* Return values of inppp_line() */
#define PP_PASS 0 /* keep the line (it may have been rewritten) */
#define PP_DROP 1 /* swallow the line */

int inppp_line(char **pbuffer, const char *file_name, int line_number);

/* Depth of the open #if stack, used to check that each file closes
   what it opened. */
int inppp_depth(void);
void inppp_check_balance(int depth_on_entry, const char *file_name);

/* Drop all #define'd macros and any open conditional. Flags coming from
   -D or 'set' live in the variable list and are not touched. */
void inppp_deck_reset(void);

#endif
