#ifndef _PROG_H_
#define _PROG_H_
#ifndef _STMT_H_
#error "Need to include stmt.h before prog.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct program Prog;
extern void* prog_get_lp(void) is_PURE;
extern Prog* prog_new(void) returns_NONNULL;
extern void prog_free(Prog* prog) expects_NONNULL;
extern bool prog_is_valid(Prog const* prog) is_PURE;
extern bool prog_is_empty(Prog const* prog) expects_NONNULL is_PURE;
extern void prog_add_stmt(Prog* prog, Stmt* stmt) expects_NONNULL;
extern void prog_print(FILE* fp, Prog const* prog) expects_NONNULL;
extern void prog_execute(Prog const* prog, void* lp) expects_NONNULL;
extern char* prog_tostr(Prog const* prog, char const* prefix, char const* title, size_t max_output_line_len) expects_NONNULL returns_NONNULL;
extern void prog_load(Prog* prog, char const* cmd, char const* filename);
#ifdef __cplusplus
}
#endif
#endif