#ifndef POLSERVER_COMPILERWORKSPACE_H #define POLSERVER_COMPILERWORKSPACE_H #include #include #include #include #include "clib/maputil.h" #include "bscript/compiler/analyzer/Constants.h" #include "bscript/compiler/ast/Node.h" namespace Pol::Bscript::Compiler { class Block; class ConstDeclaration; class ModuleFunctionDeclaration; class Program; class Report; class SourceFile; class SourceFileIdentifier; class TopLevelStatements; class UserFunction; class CompilerWorkspace { public: explicit CompilerWorkspace( Report& ); ~CompilerWorkspace(); void accept( NodeVisitor& ); std::vector> const_declarations; Constants constants; std::unique_ptr top_level_statements; std::vector> module_function_declarations; std::vector> user_functions; std::unique_ptr program; // These reference ModuleFunctionDeclaration objects that are in module_functions std::vector referenced_module_function_declarations; std::vector> referenced_source_file_identifiers; std::map all_function_locations; std::vector global_variable_names; }; } // namespace Pol::Bscript::Compiler #endif // POLSERVER_COMPILERWORKSPACE_H