KiCad PCB EDA Suite
Loading...
Searching...
No Matches
STREAM_OUTPUTFORMATTER Class Reference

Implement an OUTPUTFORMATTER to a wxWidgets wxOutputStream. More...

#include <richio.h>

Inheritance diagram for STREAM_OUTPUTFORMATTER:
OUTPUTFORMATTER

Public Member Functions

 STREAM_OUTPUTFORMATTER (wxOutputStream &aStream, char aQuoteChar='"' )
 This can take any number of wxOutputStream derivations, so it can write to a file, socket, or zip file. More...
 
virtual const char * GetQuoteChar (const char *wrapee) const
 Perform quote character need determination. More...
 
int PRINTF_FUNC Print (int nestLevel, const char *fmt,...)
 Format and write text to the output stream. More...
 
virtual std::string Quotes (const std::string &aWrapee) const
 Check aWrapee input string for a need to be quoted (e.g. More...
 
std::string Quotew (const wxString &aWrapee) const
 

Protected Member Functions

void write (const char *aOutBuf, int aCount) override
 Should be coded in the interface implementation (derived) classes. More...
 

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. More...
 

Private Member Functions

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

Private Attributes

wxOutputStream & m_os
 
std::vector< char > m_buffer
 
char quoteChar [2]
 

Detailed Description

Implement an OUTPUTFORMATTER to a wxWidgets wxOutputStream.

The stream is neither opened nor closed by this class.

Definition at line 498 of file richio.h.

Constructor & Destructor Documentation

◆ STREAM_OUTPUTFORMATTER()

STREAM_OUTPUTFORMATTER::STREAM_OUTPUTFORMATTER ( wxOutputStream &  aStream,
char  aQuoteChar = '"' 
)
inline

This can take any number of wxOutputStream derivations, so it can write to a file, socket, or zip file.

Definition at line 507 of file richio.h.

Member Function Documentation

◆ GetQuoteChar() [1/2]

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

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 431 of file richio.cpp.

References OUTPUTFORMATTER::GetQuoteChar(), and OUTPUTFORMATTER::quoteChar.

◆ GetQuoteChar() [2/2]

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

◆ Print()

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

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 475 of file richio.cpp.

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

Referenced by PANEL_SYM_LIB_TABLE::convertLibrary(), PCB_PLUGIN::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_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), formatArc(), formatBezier(), PCB_PLUGIN::formatBoardLayers(), BOARD_STACKUP::FormatBoardStackup(), 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_PLUGIN::formatGeneral(), DSN::PIN_REF::FormatIt(), PCB_PLUGIN::formatLayer(), PCB_PLUGIN::formatLayers(), PCB_PLUGIN::formatNetInformation(), formatNode(), DS_DATA_MODEL_IO::formatOptions(), formatPoly(), PCB_PLUGIN::formatPolyPts(), PCB_PLUGIN::formatProperties(), formatRect(), PCB_PLUGIN::formatRenderCache(), DS_DATA_MODEL_IO::formatRepeatParameters(), PCB_PLUGIN::formatSetup(), PCB_PLUGIN::formatTeardropParameters(), GENDRILL_WRITER_BASE::GenDrillReportFile(), GENDRILL_WRITER_BASE::printToolSummary(), CLIPBOARD_IO::Save(), PCB_PLUGIN::Save(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN::saveBitmap(), SCH_SEXPR_PLUGIN::saveBitmap(), SCH_LEGACY_PLUGIN::saveBusAlias(), SCH_SEXPR_PLUGIN::saveBusAlias(), SCH_LEGACY_PLUGIN::saveBusEntry(), SCH_SEXPR_PLUGIN::saveBusEntry(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), SCH_LEGACY_PLUGIN_CACHE::saveDocFile(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_SEXPR_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN::saveField(), SCH_SEXPR_PLUGIN::saveField(), SCH_SEXPR_PLUGIN::saveInstances(), SCH_LEGACY_PLUGIN::saveJunction(), SCH_SEXPR_PLUGIN::saveJunction(), SCH_LEGACY_PLUGIN::saveLine(), SCH_SEXPR_PLUGIN::saveLine(), SCH_LEGACY_PLUGIN::saveNoConnect(), SCH_SEXPR_PLUGIN::saveNoConnect(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), CLIPBOARD_IO::SaveSelection(), SCH_LEGACY_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN_CACHE::SaveSymbol(), SCH_LEGACY_PLUGIN_CACHE::SaveSymbol(), SCH_LEGACY_PLUGIN::saveSymbol(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN::saveText(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveTextBox(), SCH_SEXPR_PLUGIN::saveTextBox(), PANEL_REGULATOR::WriteDataFile(), NGSPICE_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
virtualinherited

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_PLUGIN::format(), formatNode(), OUTPUTFORMATTER::Quotew(), and SCH_SEXPR_PLUGIN_CACHE::SaveSymbol().

◆ Quotew()

◆ sprint()

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

Definition at line 463 of file richio.cpp.

References OUTPUTFORMATTER::vprint().

Referenced by OUTPUTFORMATTER::Print().

◆ vprint()

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

◆ write()

void STREAM_OUTPUTFORMATTER::write ( const char *  aOutBuf,
int  aCount 
)
overrideprotectedvirtual

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.

Implements OUTPUTFORMATTER.

Definition at line 603 of file richio.cpp.

References _, m_os, and THROW_IO_ERROR.

Member Data Documentation

◆ m_buffer

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

Definition at line 412 of file richio.h.

Referenced by OUTPUTFORMATTER::vprint().

◆ m_os

wxOutputStream& STREAM_OUTPUTFORMATTER::m_os
private

Definition at line 500 of file richio.h.

Referenced by write().

◆ quoteChar

char OUTPUTFORMATTER::quoteChar[2]
privateinherited

Definition at line 413 of file richio.h.

Referenced by OUTPUTFORMATTER::GetQuoteChar(), and OUTPUTFORMATTER::OUTPUTFORMATTER().


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