Panini 1.4.0
Header-only library for generating C++, written in C++17
panini::DebugWriter Class Reference

Writes output to the console line-by-line. More...

#include <DebugWriter.hpp>

Inheritance diagram for panini::DebugWriter:
panini::ConfiguredWriter< DebugWriterConfig > panini::Writer

Classes

struct  Colors
 Colors used in the console output. More...
 

Public Member Functions

 DebugWriter (const DebugWriterConfig &config=DebugWriterConfig{})
 
 ~DebugWriter () override
 
bool IsChanged () const override
 
- Public Member Functions inherited from panini::ConfiguredWriter< DebugWriterConfig >
 ConfiguredWriter (const DebugWriterConfig &config=DebugWriterConfig {})
 
virtual ~ConfiguredWriter ()=default
 
const WriterConfigGetConfig () const override
 
BraceBreakingStyle GetBraceBreakingStyle () const override
 
IncludeStyle GetIncludeStyle () const override
 
bool IsOnNewLine () const override
 
Writeroperator<< (const std::string &chunk) override
 
Writeroperator<< (const char *chunkString) override
 
Writeroperator<< (const NextLine &command) override
 
Writeroperator<< (const IndentPush &command) override
 
Writeroperator<< (const IndentPop &command) override
 
Writeroperator<< (Command &&command) override
 
void SetIsInCommentBlock (bool value) override
 
bool Commit (bool force=false) override
 
- Public Member Functions inherited from panini::Writer
virtual ~Writer ()=default
 

Protected Member Functions

void Write (const std::string &chunk) override
 
void WriteNewLine () override
 
bool OnCommit (bool force=false) override
 
void SetCursorPosition (int32_t x, int32_t y)
 
void SetColor (uint16_t background, uint16_t foreground)
 
void ResetStyles ()
 
void WriteChunk (const std::string &chunk)
 
void HandleInput (const std::string &message)
 
- Protected Member Functions inherited from panini::ConfiguredWriter< DebugWriterConfig >
void WriteNewLine () override
 

Protected Attributes

DebugWriterConfig m_debugConfig
 
bool m_initialized = false
 
bool m_isDebugging = true
 
int32_t m_cursorX = 0
 
int32_t m_cursorY = 0
 
int32_t m_consoleWidth = 0
 
int32_t m_consoleHeight = 0
 
- Protected Attributes inherited from panini::ConfiguredWriter< DebugWriterConfig >
DebugWriterConfig m_config
 

Detailed Description

Writes output to the console line-by-line.

The DebugWriter will halt execution every time it receives a NextLine command. The writer will wait for user input to either continue debugging or stop execution.

Line numbers are displayed before the output and special characters like indentation and new lines are highlighted in the output.

Note that the DebugWriter only works correctly on Windows right now.

See also
DebugWriterConfig

Constructor & Destructor Documentation

◆ DebugWriter()

panini::DebugWriter::DebugWriter ( const DebugWriterConfig config = DebugWriterConfig{})
inlineexplicit

Construct and configure the writer.

Parameters
configConfiguration instance.

◆ ~DebugWriter()

panini::DebugWriter::~DebugWriter ( )
inlineoverride

Will call Commit() automatically when the writer is destroyed.

Member Function Documentation

◆ HandleInput()

void panini::DebugWriter::HandleInput ( const std::string &  message)
inlineprotected

Handle user input.

◆ IsChanged()

bool panini::DebugWriter::IsChanged ( ) const
inlineoverridevirtual

Always handle remaining input when Commit is called.

Reimplemented from panini::ConfiguredWriter< DebugWriterConfig >.

◆ OnCommit()

bool panini::DebugWriter::OnCommit ( bool  force = false)
inlineoverrideprotectedvirtual

Checks if the writer should commit its output to the target.

Implements panini::Writer.

◆ ResetStyles()

void panini::DebugWriter::ResetStyles ( )
inlineprotected

Reset colors to the default white on black color scheme.

◆ SetColor()

void panini::DebugWriter::SetColor ( uint16_t  background,
uint16_t  foreground 
)
inlineprotected

Sets the background and foreground colors used for the output.

◆ SetCursorPosition()

void panini::DebugWriter::SetCursorPosition ( int32_t  x,
int32_t  y 
)
inlineprotected

Moves the cursor in the console window.

◆ Write()

void panini::DebugWriter::Write ( const std::string &  chunk)
inlineoverrideprotectedvirtual

Writes the chunk to the console.

Implements panini::Writer.

◆ WriteChunk()

void panini::DebugWriter::WriteChunk ( const std::string &  chunk)
inlineprotected

Internal method for writing a chunk to the console window, clipping it and pushing it to the next line if it's too long.

◆ WriteNewLine()

void panini::DebugWriter::WriteNewLine ( )
inlineoverrideprotectedvirtual

Writes a new line chunk to the output.

Implements panini::Writer.

Member Data Documentation

◆ m_consoleHeight

int32_t panini::DebugWriter::m_consoleHeight = 0
protected

◆ m_consoleWidth

int32_t panini::DebugWriter::m_consoleWidth = 0
protected

◆ m_cursorX

int32_t panini::DebugWriter::m_cursorX = 0
protected

◆ m_cursorY

int32_t panini::DebugWriter::m_cursorY = 0
protected

◆ m_debugConfig

DebugWriterConfig panini::DebugWriter::m_debugConfig
protected

◆ m_initialized

bool panini::DebugWriter::m_initialized = false
protected

◆ m_isDebugging

bool panini::DebugWriter::m_isDebugging = true
protected

The documentation for this class was generated from the following file: