#ifndef POLSERVER_DEBUGSTORE_H #define POLSERVER_DEBUGSTORE_H #include #include namespace Pol::Bscript::Compiler { class DebugBlock; class LocalVariableScopeInfo; class DebugStore { public: explicit DebugStore( std::vector filenames ); DebugStore( DebugStore&& ) noexcept; ~DebugStore(); unsigned add_block( unsigned parent_block_index, const LocalVariableScopeInfo& ); struct InstructionInfo { unsigned file_index; unsigned line_number; unsigned block_index; bool statement_begin; }; void add_instruction( const InstructionInfo& ); struct UserFunctionInfo { std::string name; unsigned first_instruction; unsigned last_instruction; }; void add_user_function( UserFunctionInfo ); private: friend class DebugStoreSerializer; std::vector blocks; std::vector filenames; std::vector instructions; std::vector user_functions; }; } // namespace Pol::Bscript::Compiler #endif // POLSERVER_DEBUGSTORE_H