KiCad PCB EDA Suite
Loading...
Searching...
No Matches
OUTPUTFORMATTER Class Referenceabstract

An interface used to output 8 bit text in a convenient way. More...

#include <richio.h>

Inheritance diagram for OUTPUTFORMATTER:
FILE_OUTPUTFORMATTER PRETTIFIED_FILE_OUTPUTFORMATTER STRING_FORMATTER

Public Member Functions

virtual ~OUTPUTFORMATTER ()
 This is a polymorphic class that can validly be handled by a pointer to the base class.
 
int PRINTF_FUNC_N Print (int nestLevel, const char *fmt,...)
 Format and write text to the output stream.
 
int PRINTF_FUNC Print (const char *fmt,...)
 Format and write text to the output stream.
 
virtual const char * GetQuoteChar (const char *wrapee) const
 Perform quote character need determination.
 
virtual std::string Quotes (const std::string &aWrapee) const
 Check aWrapee input string for a need to be quoted (e.g.
 
std::string Quotew (const wxString &aWrapee) const
 
virtual bool Finish ()
 Performs any cleanup needed at the end of a write.
 

Protected Member Functions

 OUTPUTFORMATTER (int aReserve=OUTPUTFMTBUFZ, char aQuoteChar='"' )
 
virtual void write (const char *aOutBuf, int aCount)=0
 Should be coded in the interface implementation (derived) classes.
 

Static Protected Member Functions

static const char * GetQuoteChar (const char *wrapee, const char *quote_char)
 Perform quote character need determination according to the Specctra DSN specification.
 

Private Member Functions

int sprint (const char *fmt,...)
 
int vprint (const char *fmt, va_list ap)
 

Private Attributes

std::vector< char > m_buffer
 
char quoteChar [2]
 

Detailed Description

An interface used to output 8 bit text in a convenient way.

The primary interface is "printf() - like" but with support for indentation control. The destination of the 8 bit wide text is up to the implementer.

The implementer only has to implement the write() function, but can also optionally re-implement GetQuoteChar().

If you want to output a wxString, then use TO_UTF8() on it before passing it as an argument to Print().

Since this is an abstract interface, only classes derived from this one may actually be used.

Definition at line 321 of file richio.h.

Constructor & Destructor Documentation

◆ OUTPUTFORMATTER()

OUTPUTFORMATTER::OUTPUTFORMATTER ( int  aReserve = OUTPUTFMTBUFZ,
char  aQuoteChar = '"' 
)
inlineprotected

Definition at line 324 of file richio.h.

◆ ~OUTPUTFORMATTER()

virtual OUTPUTFORMATTER::~OUTPUTFORMATTER ( )
inlinevirtual

This is a polymorphic class that can validly be handled by a pointer to the base class.

Definition at line 369 of file richio.h.

Member Function Documentation

◆ Finish()

virtual bool OUTPUTFORMATTER::Finish ( )
inlinevirtual

Performs any cleanup needed at the end of a write.

Returns
true if all is well

Reimplemented in PRETTIFIED_FILE_OUTPUTFORMATTER.

Definition at line 431 of file richio.h.

Referenced by PCB_IO_KICAD_SEXPR::SaveBoard().

◆ GetQuoteChar() [1/2]

const char * OUTPUTFORMATTER::GetQuoteChar ( const char *  wrapee) const
virtual

Perform quote character need determination.

It returns the quote character as a single character string for a given input wrapee string. If the wrappee does not need to be quoted, the return value is "" (the null string), such as when there are no delimiters in the input wrapee string. If you want the quote_char to be assuredly not "", then pass in "(" as the wrappee.

Implementations are free to override the default behavior, which is to call the static function of the same name.

Parameters
wrapeeA string that might need wrapping on each end.
Returns
the quote_char as a single character string, or "" if the wrapee does not need to be wrapped.

Definition at line 414 of file richio.cpp.

References GetQuoteChar(), and quoteChar.

◆ GetQuoteChar() [2/2]

const char * OUTPUTFORMATTER::GetQuoteChar ( const char *  wrapee,
const char *  quote_char 
)
staticprotected

◆ Print() [1/2]

int OUTPUTFORMATTER::Print ( const char *  fmt,
  ... 
)

Format and write text to the output stream.

Parameters
fmtA printf() style format string.
...a variable list of parameters that will get blended into the output under control of the format string.
Returns
int - the number of characters output.
Exceptions
IO_ERROR,ifthere is a problem outputting, such as a full disk.

Definition at line 487 of file richio.cpp.

References vprint().

◆ Print() [2/2]

int OUTPUTFORMATTER::Print ( int  nestLevel,
const char *  fmt,
  ... 
)

Format and write text to the output stream.

Parameters
nestLevelThe multiple of spaces to precede the output with.
fmtA printf() style format string.
...a variable list of parameters that will get blended into the output under control of the format string.
Returns
int - the number of characters output.
Exceptions
IO_ERROR,ifthere is a problem outputting, such as a full disk.

Definition at line 458 of file richio.cpp.

References NESTWIDTH, sprint(), and vprint().

Referenced by PCB_IO_KICAD_SEXPR::format(), NETLIST::Format(), DS_DATA_MODEL_IO::format(), DS_DATA_MODEL_IO::Format(), PAGE_INFO::Format(), TITLE_BLOCK::Format(), PCB_PLOT_PARAMS::Format(), EDA_TEXT::Format(), PCB_CALCULATOR_DATAFILE::Format(), COMPONENT_NET::Format(), COMPONENT::Format(), SYMBOL_LIB_TABLE::Format(), DESIGN_BLOCK_LIB_TABLE::Format(), FP_LIB_TABLE::Format(), TEMPLATE_FIELDNAME::Format(), TEMPLATES::Format(), STROKE_PARAMS::Format(), XNODE::Format(), DSN::ELEM::Format(), LIB_TABLE_ROW::Format(), DSN::POINT::Format(), DSN::PROPERTY::Format(), DSN::UNIT_RES::Format(), DSN::RECTANGLE::Format(), DSN::RULE::Format(), DSN::LAYER_RULE::Format(), DSN::PATH::Format(), DSN::BOUNDARY::Format(), DSN::CIRCLE::Format(), DSN::QARC::Format(), DSN::WINDOW::Format(), DSN::KEEPOUT::Format(), DSN::VIA::Format(), DSN::CONTROL::Format(), DSN::LAYER::Format(), DSN::SPECCTRA_LAYER_PAIR::Format(), DSN::LAYER_NOISE_WEIGHT::Format(), DSN::TOKPROP::Format(), DSN::STRINGPROP::Format(), DSN::GRID::Format(), DSN::PLACE::Format(), DSN::COMPONENT::Format(), DSN::SHAPE::Format(), DSN::PIN::Format(), DSN::IMAGE::Format(), DSN::PADSTACK::Format(), DSN::FROMTO::Format(), DSN::COMP_ORDER::Format(), DSN::NET::Format(), DSN::CLASS::Format(), DSN::WIRE::Format(), DSN::WIRE_VIA::Format(), DSN::PCB::Format(), DSN::ANCESTOR::Format(), DSN::SUPPLY_PIN::Format(), DSN::NET_OUT::Format(), DSN::SESSION::Format(), SCH_IO_KICAD_LEGACY::Format(), SCH_IO_KICAD_SEXPR::Format(), formatArc(), formatBezier(), PCB_IO_KICAD_SEXPR::formatBoardLayers(), BOARD_STACKUP::FormatBoardStackup(), KICAD_FORMAT::FormatBool(), formatCircle(), XNODE::FormatContents(), DSN::PARSER::FormatContents(), DSN::CLASSES::FormatContents(), DSN::REGION::FormatContents(), DSN::PLACEMENT::FormatContents(), DSN::IMAGE::FormatContents(), DSN::PADSTACK::FormatContents(), DSN::HISTORY::FormatContents(), DSN::ROUTE::FormatContents(), DSN::WAS_IS::FormatContents(), DS_DATA_MODEL_IO::formatCoordinate(), formatFill(), PCB_IO_KICAD_SEXPR::formatGeneral(), DSN::PIN_REF::FormatIt(), PCB_IO_KICAD_SEXPR::formatLayer(), PCB_IO_KICAD_SEXPR::formatLayers(), PCB_IO_KICAD_SEXPR::formatNetInformation(), formatNode(), DS_DATA_MODEL_IO::formatOptions(), formatPoly(), PCB_IO_KICAD_SEXPR::formatPolyPts(), PCB_IO_KICAD_SEXPR::formatProperties(), formatRect(), PCB_IO_KICAD_SEXPR::formatRenderCache(), DS_DATA_MODEL_IO::formatRepeatParameters(), PCB_IO_KICAD_SEXPR::formatSetup(), PCB_IO_KICAD_SEXPR::formatTeardropParameters(), PCB_IO_KICAD_SEXPR::formatTenting(), KICAD_FORMAT::FormatUuid(), GENDRILL_WRITER_BASE::GenDrillReportFile(), GENDRILL_WRITER_BASE::printToolSummary(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveArc(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveBezier(), SCH_IO_KICAD_LEGACY::saveBitmap(), SCH_IO_KICAD_SEXPR::saveBitmap(), CLIPBOARD_IO::SaveBoard(), PCB_IO_KICAD_SEXPR::SaveBoard(), SCH_IO_KICAD_LEGACY::saveBusAlias(), SCH_IO_KICAD_SEXPR::saveBusAlias(), SCH_IO_KICAD_LEGACY::saveBusEntry(), SCH_IO_KICAD_SEXPR::saveBusEntry(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveCircle(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveDocFile(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveField(), SCH_IO_KICAD_LEGACY::saveField(), SCH_IO_KICAD_SEXPR::saveField(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveField(), SCH_IO_KICAD_SEXPR::saveInstances(), SCH_IO_KICAD_LEGACY::saveJunction(), SCH_IO_KICAD_SEXPR::saveJunction(), SCH_IO_KICAD_LEGACY::saveLine(), SCH_IO_KICAD_SEXPR::saveLine(), SCH_IO_KICAD_LEGACY::saveNoConnect(), SCH_IO_KICAD_SEXPR::saveNoConnect(), SCH_IO_KICAD_LEGACY_LIB_CACHE::savePin(), SCH_IO_KICAD_SEXPR_LIB_CACHE::savePin(), SCH_IO_KICAD_LEGACY_LIB_CACHE::savePolyLine(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveRectangle(), SCH_IO_KICAD_SEXPR::saveRuleArea(), CLIPBOARD_IO::SaveSelection(), SCH_IO_KICAD_LEGACY::saveSheet(), SCH_IO_KICAD_SEXPR::saveSheet(), SCH_IO_KICAD_SEXPR_LIB_CACHE::SaveSymbol(), SCH_IO_KICAD_LEGACY_LIB_CACHE::SaveSymbol(), SCH_IO_KICAD_LEGACY::saveSymbol(), SCH_IO_KICAD_SEXPR::saveSymbol(), SCH_IO_KICAD_SEXPR::saveTable(), SCH_IO_KICAD_LEGACY_LIB_CACHE::saveText(), SCH_IO_KICAD_LEGACY::saveText(), SCH_IO_KICAD_SEXPR::saveText(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveText(), SCH_IO_KICAD_SEXPR::saveTextBox(), SCH_IO_KICAD_SEXPR_LIB_CACHE::saveTextBox(), PANEL_REGULATOR::WriteDataFile(), SPICE_CIRCUIT_MODEL::WriteDirectives(), NETLIST_EXPORTER_SPICE::WriteDirectives(), EMBEDDED_FILES::WriteEmbeddedFiles(), NETLIST_EXPORTER_SPICE::WriteHead(), NETLIST_EXPORTER_SPICE_MODEL::WriteHead(), PCB_CALCULATOR_DATAFILE::WriteHeader(), NETLIST_EXPORTER_SPICE::writeInclude(), NETLIST_EXPORTER_SPICE::writeItems(), NETLIST_EXPORTER_SPICE::writeModels(), NETLIST_EXPORTER_SPICE::WriteTail(), and NETLIST_EXPORTER_SPICE_MODEL::WriteTail().

◆ Quotes()

std::string OUTPUTFORMATTER::Quotes ( const std::string &  aWrapee) const
virtual

Check aWrapee input string for a need to be quoted (e.g.

contains a ')' character or a space), and for " double quotes within the string that need to be escaped such that the DSNLEXER will correctly parse the string from a file later.

Parameters
aWrapeeis a string that might need wrapping in double quotes, and it might need to have its internal content escaped, or not.
Returns
a std::string- whose c_str() function can be called for passing to printf() style functions that output UTF8 encoded s-expression streams.
Exceptions
IO_ERROR,ifthere is any kind of problem with the input string.

Definition at line 504 of file richio.cpp.

Referenced by PCB_IO_KICAD_SEXPR::format(), formatNode(), Quotew(), and SCH_IO_KICAD_SEXPR_LIB_CACHE::SaveSymbol().

◆ Quotew()

◆ sprint()

int OUTPUTFORMATTER::sprint ( const char *  fmt,
  ... 
)
private

Definition at line 446 of file richio.cpp.

References vprint().

Referenced by Print().

◆ vprint()

int OUTPUTFORMATTER::vprint ( const char *  fmt,
va_list  ap 
)
private

Definition at line 420 of file richio.cpp.

References m_buffer, and write().

Referenced by Print(), and sprint().

◆ write()

virtual void OUTPUTFORMATTER::write ( const char *  aOutBuf,
int  aCount 
)
protectedpure virtual

Should be coded in the interface implementation (derived) classes.

Parameters
aOutBufis the start of a byte buffer to write.
aCounttells how many bytes to write.
Exceptions
IO_ERROR,ifthere is a problem outputting, such as a full disk.

Implemented in STRING_FORMATTER, FILE_OUTPUTFORMATTER, and PRETTIFIED_FILE_OUTPUTFORMATTER.

Referenced by vprint().

Member Data Documentation

◆ m_buffer

std::vector<char> OUTPUTFORMATTER::m_buffer
private

Definition at line 434 of file richio.h.

Referenced by vprint().

◆ quoteChar

char OUTPUTFORMATTER::quoteChar[2]
private

Definition at line 435 of file richio.h.

Referenced by GetQuoteChar().


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