User Guide
nmodl::printer::NMODLPrinter Class Reference

Helper class for printing AST back to NMDOL test. More...

Detailed Description

Helper class for printing AST back to NMDOL test.

NmodlPrintVisitor transforms AST back to NMODL. This class provided common functionality required by visitor to print nmodl ascii file.

Todo:
Implement Printer as base class to avoid duplication code between JSONPrinter and NMODLPrinter.

Definition at line 38 of file nmodl_printer.hpp.

#include <nmodl_printer.hpp>

Public Member Functions

 NMODLPrinter ()
 
 NMODLPrinter (std::ostream &stream)
 
 NMODLPrinter (const std::string &filename)
 
 ~NMODLPrinter ()
 
void add_indent ()
 print whitespaces for indentation More...
 
void push_level ()
 start of new block scope (i.e. More...
 
void add_element (const std::string &)
 
void add_newline ()
 
void pop_level ()
 end of current block scope (i.e. More...
 

Private Attributes

std::ofstream ofs
 
std::streambuf * sbuf = nullptr
 
std::shared_ptr< std::ostream > result
 
size_t indent_level = 0
 

Constructor & Destructor Documentation

◆ NMODLPrinter() [1/3]

nmodl::printer::NMODLPrinter::NMODLPrinter ( )
inline

Definition at line 46 of file nmodl_printer.hpp.

◆ NMODLPrinter() [2/3]

nmodl::printer::NMODLPrinter::NMODLPrinter ( std::ostream &  stream)
inline

Definition at line 48 of file nmodl_printer.hpp.

◆ NMODLPrinter() [3/3]

nmodl::printer::NMODLPrinter::NMODLPrinter ( const std::string &  filename)

Definition at line 14 of file nmodl_printer.cpp.

◆ ~NMODLPrinter()

nmodl::printer::NMODLPrinter::~NMODLPrinter ( )
inline

Definition at line 52 of file nmodl_printer.hpp.

Member Function Documentation

◆ add_element()

void nmodl::printer::NMODLPrinter::add_element ( const std::string &  name)

Definition at line 40 of file nmodl_printer.cpp.

◆ add_indent()

void nmodl::printer::NMODLPrinter::add_indent ( )

print whitespaces for indentation

Definition at line 36 of file nmodl_printer.cpp.

◆ add_newline()

void nmodl::printer::NMODLPrinter::add_newline ( )

Definition at line 44 of file nmodl_printer.cpp.

◆ pop_level()

void nmodl::printer::NMODLPrinter::pop_level ( )

end of current block scope (i.e.

end with "}") and decreases indentation level

Definition at line 48 of file nmodl_printer.cpp.

◆ push_level()

void nmodl::printer::NMODLPrinter::push_level ( )

start of new block scope (i.e.

start with "{") and increases indentation level

Definition at line 30 of file nmodl_printer.cpp.

Member Data Documentation

◆ indent_level

size_t nmodl::printer::NMODLPrinter::indent_level = 0
private

Definition at line 43 of file nmodl_printer.hpp.

◆ ofs

std::ofstream nmodl::printer::NMODLPrinter::ofs
private

Definition at line 40 of file nmodl_printer.hpp.

◆ result

std::shared_ptr<std::ostream> nmodl::printer::NMODLPrinter::result
private

Definition at line 42 of file nmodl_printer.hpp.

◆ sbuf

std::streambuf* nmodl::printer::NMODLPrinter::sbuf = nullptr
private

Definition at line 41 of file nmodl_printer.hpp.


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