polserver/pol-core/bscript/compiler/representation/DebugStore.h
turleypol bf4ec1951d
Write filenames and lines into ecompile .lst files (again) (#846)
* ListingWriter prints filepath, filelineno and source line
the old compiler did it, now again in the new compiler
since shortcircuit the original sourcelines are available during compilation

* remove listfile.inc function from test result

* prefix output

* custom formatting

* docs
2026-01-07 22:19:25 +01:00

51 lines
1.1 KiB
C++

#ifndef POLSERVER_DEBUGSTORE_H
#define POLSERVER_DEBUGSTORE_H
#include <string>
#include <vector>
namespace Pol::Bscript::Compiler
{
class DebugBlock;
class LocalVariableScopeInfo;
class DebugStore
{
public:
explicit DebugStore( std::vector<std::string> 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;
friend class ListingWriter;
std::vector<DebugBlock> blocks;
std::vector<std::string> filenames;
std::vector<InstructionInfo> instructions;
std::vector<UserFunctionInfo> user_functions;
};
} // namespace Pol::Bscript::Compiler
#endif // POLSERVER_DEBUGSTORE_H