#ifndef POLSERVER_COMPILEDSCRIPT_H #define POLSERVER_COMPILEDSCRIPT_H #include #include #include #include namespace Pol::Bscript { class StoredToken; } namespace Pol::Bscript::Compiler { class ExportedFunction; class SourceFileIdentifier; class ModuleDescriptor; using CodeSection = std::vector; using DataSection = std::vector; using ExportedFunctions = std::vector; using ModuleDescriptors = std::vector; using SourceFileIdentifiers = std::vector>; class CompiledScript { public: struct ProgramInfo { const unsigned parameter_count; }; CompiledScript( CodeSection code_section, DataSection data_section, ExportedFunctions exported_functions, std::vector global_variable_names, ModuleDescriptors modules, std::unique_ptr, SourceFileIdentifiers ); ~CompiledScript(); CompiledScript( const CompiledScript& ) = delete; CompiledScript& operator=( const CompiledScript& ) = delete; const CodeSection code; const DataSection data; const ExportedFunctions exported_functions; const std::vector global_variable_names; const ModuleDescriptors module_descriptors; const std::unique_ptr program_info; const SourceFileIdentifiers source_file_identifiers; }; } // namespace Pol::Bscript::Compiler #endif // POLSERVER_COMPILEDSCRIPT_H