KiCad PCB EDA Suite
No Matches

Implement an OUTPUTFORMATTER to a memory buffer. More...

#include <richio.h>

Inheritance diagram for STRING_FORMATTER:

Public Member Functions

 STRING_FORMATTER (int aReserve=OUTPUTFMTBUFZ, char aQuoteChar='"' )
 Reserve space in the buffer.
void Clear ()
 Clear the buffer and empties the internal string.
void StripUseless ()
 Removes whitespace, '(', and ')' from the string.
const std::string & GetString ()
virtual const char * GetQuoteChar (const char *wrapee) const
 Perform quote character need determination.
int PRINTF_FUNC Print (int nestLevel, const char *fmt,...)
 Format and write text to the output stream.
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

void write (const char *aOutBuf, int aCount) override
 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::string m_mystring
std::vector< char > m_buffer
char quoteChar [2]

Detailed Description

Implement an OUTPUTFORMATTER to a memory buffer.

After Print()ing the string is available through GetString()

Definition at line 432 of file richio.h.

Constructor & Destructor Documentation


char  aQuoteChar = '"' 

Reserve space in the buffer.

Definition at line 438 of file richio.h.

Member Function Documentation

◆ Clear()

void STRING_FORMATTER::Clear ( )

Clear the buffer and empties the internal string.

Definition at line 446 of file richio.h.

Referenced by PCB_IO_KICAD_SEXPR::GetStringOutput(), and DSN::ELEM::makeHash().

◆ Finish()

virtual bool OUTPUTFORMATTER::Finish ( )

Performs any cleanup needed at the end of a write.

true if all is well


Definition at line 415 of file richio.h.

Referenced by PCB_IO_KICAD_SEXPR::SaveBoard().

◆ GetQuoteChar() [1/2]

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

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.

wrapeeA string that might need wrapping on each end.
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 OUTPUTFORMATTER::GetQuoteChar(), and OUTPUTFORMATTER::quoteChar.

◆ GetQuoteChar() [2/2]

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

◆ GetString()

◆ Print()

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

Format and write text to the output stream.

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.
int - the number of characters output.
IO_ERROR,ifthere is a problem outputting, such as a full disk.

Definition at line 458 of file richio.cpp.


Referenced by PCB_IO_KICAD_SEXPR::format(), NETLIST::Format(), DS_DATA_MODEL_IO::format(), DS_DATA_MODEL_IO::Format(), PCB_CALCULATOR_DATAFILE::Format(), PCB_PLOT_PARAMS::Format(), EDA_TEXT::Format(), PAGE_INFO::Format(), TITLE_BLOCK::Format(), COMPONENT_NET::Format(), COMPONENT::Format(), SYMBOL_LIB_TABLE::Format(), FP_LIB_TABLE::Format(), STROKE_PARAMS::Format(), XNODE::Format(), DSN::ELEM::Format(), LIB_TABLE_ROW::Format(), TEMPLATE_FIELDNAME::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(), TEMPLATES::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(), 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(), 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

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.

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

Definition at line 487 of file richio.cpp.

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

◆ Quotew()

◆ sprint()

int OUTPUTFORMATTER::sprint ( const char *  fmt,

Definition at line 446 of file richio.cpp.

References OUTPUTFORMATTER::vprint().

Referenced by OUTPUTFORMATTER::Print().

◆ StripUseless()

void STRING_FORMATTER::StripUseless ( )

Removes whitespace, '(', and ')' from the string.

Definition at line 544 of file richio.cpp.

References copy, and m_mystring.

Referenced by DSN::ELEM::makeHash().

◆ vprint()

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

◆ write()

void STRING_FORMATTER::write ( const char *  aOutBuf,
int  aCount 

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

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


Definition at line 539 of file richio.cpp.

References m_mystring.

Member Data Documentation

◆ m_buffer

std::vector<char> OUTPUTFORMATTER::m_buffer

Definition at line 418 of file richio.h.

Referenced by OUTPUTFORMATTER::vprint().

◆ m_mystring

std::string STRING_FORMATTER::m_mystring

Definition at line 465 of file richio.h.

Referenced by StripUseless(), and write().

◆ quoteChar

char OUTPUTFORMATTER::quoteChar[2]

Definition at line 419 of file richio.h.

Referenced by OUTPUTFORMATTER::GetQuoteChar().

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