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

Pure virtual interface for writers. More...

#include <Writer.hpp>

Inheritance diagram for panini::Writer:
panini::ConfiguredWriter< CompareWriterConfig > panini::ConfiguredWriter< ConsoleWriterConfig > panini::ConfiguredWriter< DebugWriterConfig > panini::ConfiguredWriter< FileWriterConfig > panini::ConfiguredWriter< StringWriterConfig > panini::ConfiguredWriter< TConfig > panini::CompareWriter panini::ConsoleWriter panini::DebugWriter panini::FileWriter panini::StringWriter

Public Member Functions

virtual ~Writer ()=default
 
virtual const WriterConfigGetConfig () const =0
 
virtual BraceBreakingStyle GetBraceBreakingStyle () const =0
 
virtual IncludeStyle GetIncludeStyle () const =0
 
virtual bool IsOnNewLine () const =0
 
virtual Writeroperator<< (const std::string &chunk)=0
 
virtual Writeroperator<< (const char *chunkString)=0
 
virtual Writeroperator<< (const NextLine &command)=0
 
virtual Writeroperator<< (const IndentPush &command)=0
 
virtual Writeroperator<< (const IndentPop &command)=0
 
virtual Writeroperator<< (Command &&command)=0
 
virtual void SetIsInCommentBlock (bool value)=0
 
virtual bool IsChanged () const =0
 
virtual bool Commit (bool force)=0
 

Protected Member Functions

virtual void Write (const std::string &chunk)=0
 
virtual void WriteNewLine ()=0
 
virtual bool OnCommit (bool force=false)=0
 

Detailed Description

Pure virtual interface for writers.

Writers take chunks and commands as input and process them to a target. They are configured with a Config instance that is passed to their constructor.

Writers commit their output to a target automatically when they are destroyed.

Constructor & Destructor Documentation

◆ ~Writer()

virtual panini::Writer::~Writer ( )
virtualdefault

Member Function Documentation

◆ Commit()

virtual bool panini::Writer::Commit ( bool  force)
pure virtual

Commits the generated output to the target of a writer if the output was changed.

Parameters
forceForce writing the file even if the output was not changed.
Returns
Returns true if the commit was successful.

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ GetBraceBreakingStyle()

◆ GetConfig()

◆ GetIncludeStyle()

◆ IsChanged()

◆ IsOnNewLine()

virtual bool panini::Writer::IsOnNewLine ( ) const
pure virtual

◆ OnCommit()

virtual bool panini::Writer::OnCommit ( bool  force = false)
protectedpure virtual

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

Implemented in panini::ConsoleWriter, panini::FileWriter, panini::StringWriter, panini::CompareWriter, and panini::DebugWriter.

◆ operator<<() [1/6]

virtual Writer & panini::Writer::operator<< ( Command &&  command)
pure virtual

Visit a command.

Warning
Commands are moved instead of copied!

Commands are used to output chunks and modify the writer's state.

Returns
Reference to itself to allow for chaining

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ operator<<() [2/6]

virtual Writer & panini::Writer::operator<< ( const char *  chunkString)
pure virtual

Write a C-style string chunk to the output.

Will add indentation if the writer is on a new line.

Returns
Reference to itself to allow for chaining.

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ operator<<() [3/6]

virtual Writer & panini::Writer::operator<< ( const IndentPop command)
pure virtual

Decrement the level of indentation.

Indentation is applied when the writer is on a new line. The level of indentation cannot go negative.

Returns
Reference to itself to allow for chaining.

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ operator<<() [4/6]

virtual Writer & panini::Writer::operator<< ( const IndentPush command)
pure virtual

Increment the level of indentation.

Indentation is applied only when the writer is on a new line.

Returns
Reference to itself to allow for chaining.

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ operator<<() [5/6]

virtual Writer & panini::Writer::operator<< ( const NextLine command)
pure virtual

◆ operator<<() [6/6]

virtual Writer & panini::Writer::operator<< ( const std::string &  chunk)
pure virtual

Write an std::string chunk to the output.

Will add indentation if the writer is on a new line.

Returns
Reference to itself to allow for chaining.

Implemented in panini::ConfiguredWriter< TConfig >, panini::ConfiguredWriter< CompareWriterConfig >, panini::ConfiguredWriter< ConsoleWriterConfig >, panini::ConfiguredWriter< DebugWriterConfig >, panini::ConfiguredWriter< FileWriterConfig >, and panini::ConfiguredWriter< StringWriterConfig >.

◆ SetIsInCommentBlock()

virtual void panini::Writer::SetIsInCommentBlock ( bool  value)
pure virtual

◆ Write()

virtual void panini::Writer::Write ( const std::string &  chunk)
protectedpure virtual

◆ WriteNewLine()


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