25#include <fmt/format.h> 
   36#include <pcb_calculator_datafile_lexer.h> 
   41using namespace PCBCALC_DATA_T;
 
   46    return PCB_CALCULATOR_DATAFILE_LEXER::TokenName( aTok );
 
 
   67        datafile_parser.
Parse( datafile );
 
   73        wxString msg = ioe.
What();
 
   76        msg += 
_(
"Data file error.");
 
 
   94    auto datafile = std::make_unique<PCB_CALCULATOR_DATAFILE>( &
m_RegulatorList );
 
  100        int nestlevel = datafile->WriteHeader( &formatter );
 
  102        datafile->Format( &formatter, nestlevel );
 
  105            formatter.
Print( nestlevel, 
")\n" );
 
 
  125    "normal", 
"3terminal" 
 
  132    aFormatter->
Print( nestlevel++, 
"(datafile\n");
 
  133    aFormatter->
Print( nestlevel++, 
"(version 2)\n" );
 
  134    aFormatter->
Print( nestlevel++, 
"(date %s)\n",
 
  136    aFormatter->
Print( nestlevel++, 
"(tool %s)\n",
 
  137                       aFormatter->
Quotew( 
Pgm().App().GetAppName() +
 
 
  144                              int aNestLevel )
 const 
  154        aFormatter->
Print( aNestLevel + 1, 
"%s", fmt::format( 
"({} {:g})\n", 
getTokenName( T_reg_vref_min ),
 
  156        aFormatter->
Print( aNestLevel + 1, 
"%s", fmt::format( 
"({} {:g})\n", 
getTokenName( T_reg_vref_typ ),
 
  158        aFormatter->
Print( aNestLevel + 1, 
"%s", fmt::format( 
"({} {:g})\n", 
getTokenName( T_reg_vref_max ),
 
  163            aFormatter->
Print( aNestLevel + 1, 
"%s", fmt::format( 
"({} {:g})\n", 
getTokenName( T_reg_iadj_typ ),
 
  165            aFormatter->
Print( aNestLevel + 1, 
"%s", fmt::format( 
"({} {:g})\n", 
getTokenName( T_reg_iadj_max ),
 
  171        aFormatter->
Print( aNestLevel, 
")\n" );
 
  174    aFormatter->
Print( --aNestLevel, 
")\n" );
 
 
  180    aParser->
Parse( 
this );
 
 
  185    PCB_CALCULATOR_DATAFILE_LEXER( aReader )
 
 
  191                                                                const wxString& aSource ) :
 
  192    PCB_CALCULATOR_DATAFILE_LEXER( aLine, aSource )
 
 
  201    while( ( token = NextTok() ) != T_EOF)
 
  203        if( token == T_LEFT )
 
  207            if( token == T_regulators )
 
 
  221    double   vrefmin, vreftyp, vrefmax = 0.0;
 
  222    double   iadjtyp, iadjmax = 0.0;
 
  224    auto parseToken = [&]()
 
  229        if( token != T_NUMBER )
 
  230            Expecting( T_NUMBER );
 
  232        wxString 
text = CurText();
 
  233        text.Trim( 
true ).Trim( 
false );
 
  235        text.ToCDouble( &val );
 
  242    while( ( token = NextTok() ) != T_RIGHT )
 
  247        if( token == T_LEFT )
 
  250        if( token == T_regulator )
 
  263            while( ( token = NextTok() ) != T_RIGHT )
 
  268                if( token == T_LEFT )
 
  275                    vreftyp = parseToken();
 
  280                case T_reg_vref_min: vrefmin = parseToken(); 
break;
 
  281                case T_reg_vref_typ: vreftyp = parseToken(); 
break;
 
  282                case T_reg_vref_max: vrefmax = parseToken(); 
break;
 
  286                    iadjtyp = parseToken();
 
  290                case T_reg_iadj_typ: iadjtyp = parseToken(); 
break;
 
  291                case T_reg_iadj_max: iadjmax = parseToken(); 
break;
 
  298                    else if( strcasecmp( CurText(), 
regtype_str[1] ) == 0 )
 
  301                        Unexpected( CurText() );
 
  307                    Unexpected( CurText() );
 
  312            if( ! 
name.IsEmpty() )
 
  315                                                               type, iadjtyp, iadjmax );
 
 
wxString GetBuildVersion()
Get the full KiCad version string.
 
A LINE_READER that reads from an open file.
 
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
 
virtual const wxString What() const
A composite of Problem() and Where()
 
An abstract class from which implementation specific LINE_READERs may be derived to read single lines...
 
wxChoice * m_choiceRegulatorSelector
 
bool m_RegulatorListChanged
 
REGULATOR_LIST m_RegulatorList
 
const wxString GetDataFilename()
 
void SelectLastSelectedRegulator()
If m_lastSelectedRegulatorName is empty, just calls RegulatorPageUpdate()
 
Parser for PCB_CALCULATOR_DATAFILE.
 
PCB_CALCULATOR_DATAFILE_PARSER(LINE_READER *aReader)
 
void Parse(PCB_CALCULATOR_DATAFILE *aDataList)
 
void ParseRegulatorDescr(PCB_CALCULATOR_DATAFILE *aDataList)
 
PCB_CALCULATOR_DATAFILE handles data to calculate regulators parameters.
 
void Parse(PCB_CALCULATOR_DATAFILE_PARSER *aParser)
 
void Format(OUTPUTFORMATTER *aFormatter, int aNestLevel) const
 
friend class PCB_CALCULATOR_DATAFILE_PARSER
 
int WriteHeader(OUTPUTFORMATTER *aFormatter) const
 
PCB_CALCULATOR_DATAFILE(REGULATOR_LIST *aList)
 
void Add(REGULATOR_DATA *aItem)
 
Contains structures for storage of regulator data.
 
static const char * regtype_str[]
 
static const char * getTokenName(T aTok)
 
static const char * getTokenName(T aTok)
 
This file contains miscellaneous commonly used macros and functions.
 
PGM_BASE & Pgm()
The global program "get" accessor.
 
wxString From_UTF8(const char *cstring)
 
wxString GetISO8601CurrentDateTime()