/* =====================================
 * Generated by Mod-c 0.26.5
 * HEADER modc PROGRAM
 * ===================================== */

#ifndef MODC_PROGRAM_modc_H
#define MODC_PROGRAM_modc_H

#include <stdint.h>
#include <stdbool.h>
#include <assert.h>

#define nil ((void *)0)
#define NIL nil
typedef uint8_t byte;
typedef const char* string;
typedef int integer;
typedef unsigned int cardinal;
typedef float real;

/**
 * TMod-c 0.26.5.176
 * By M. Scott Reynolds
 * Date 20 February 2026
 *
 * Port to Mod-c started 4 April 2026
 * 30 Apr 2026 - Add command line options.
 * 2 May 2026 - Use TYPE ... STRUCT for command line options.
 * 2 May 2026 - Refactor code into several functions.
 * 30 May 2026 - Add options for generating header file and other stuff.
 * 8 June 2026 - Add debug flag
 * 8 August 2026 - Add quiet flag
 * 3 September 2026 - Refactor for 0.26.5.176
 */

/* === IMPORT === */
#include "stddef.h"

/* === IMPORT === */
#include "stdio.h"

/* === IMPORT === */
#include "stdlib.h"

/* === IMPORT === */
#include "string.h"

/* === IMPORT === */
#include "parser_common.h"

/* === IMPORT === */
#include "parser_main.h"

/* === IMPORT === */
#include "node.h"

/* === IMPORT === */
#include "codegen_common.h"

/* === IMPORT === */
#include "version.h"

/* === IMPORT === */
#include "codegen.h"

/* === IMPORT === */
#include "dynbuf.h"

/* === IMPORT === */
#include "arena.h"

/* === IMPORT === */
#include "symtab.h"

/* === IMPORT === */
#include "semantic.h"

/* === IMPORT === */
#include "utils.h"

/* === IMPORT === */
#include "codegen_mh.h"

/**
 * Open input file, allocate space, read source, close output file. 
 * @param: input_file = Name of input file to read.
 * @return: Allocated pointer to source if successful. Nil if not successful.
 * Caller owns source.
 */

/**
 * Generate code from AST.
 * @param context = context with ast, debug_enabled, and target previous set.
 * @param file_name = name of output file.
 * @param quiet = quiet operation
 * @ return: Return 0 on success. > 0 on error.
 */

/**
 * Main entry point
 */

int modc(int argc, char** argv);

#endif /* MODC_PROGRAM_modc_H */
