mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* 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
51 lines
1.1 KiB
C++
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
|