#pragma once #include "syntax.hh" #include #include #include #include #include using std::map; using std::set; using std::string; using std::unordered_map; using std::vector; enum ModuleStatus { UNPROCESSED = 0, BAD, GOOD }; struct Module { ModuleStatus status; LocationFile locfile; string filename; Stmt* toplevel; unordered_map defined; vector unqualified_import; unordered_map qualified_import; unordered_map defined_action; unordered_map macro; }; Stmt* resolve(Module& mo, const string qualified, const string& ident); long load(const string& filename); Module* load_module(long& n_errors, const string& filename); void unload_all(); extern Module* main_module; extern FILE *output, *output_header; extern map> used_as_call, used_as_collapse, used_as_embed;