work around 8 bit wxString B.S.

This commit is contained in:
Dick Hollenbeck 2011-02-02 13:41:35 -06:00
parent 6a26a7f9bf
commit 1ae44d090a
6 changed files with 26 additions and 19 deletions

View File

@ -280,7 +280,7 @@ int OUTPUTFORMATTER::Print( int nestLevel, const char* fmt, ... ) throw( IO_ERRO
} }
std::string OUTPUTFORMATTER::Quoted( const std::string& aWrapee ) throw( IO_ERROR ) std::string OUTPUTFORMATTER::Quotes( const std::string& aWrapee ) throw( IO_ERROR )
{ {
static const char quoteThese[] = "\t ()\n\r"; static const char quoteThese[] = "\t ()\n\r";
@ -329,6 +329,17 @@ std::string OUTPUTFORMATTER::Quoted( const std::string& aWrapee ) throw( IO_ERRO
} }
std::string OUTPUTFORMATTER::Quotew( const wxString& aWrapee ) throw( IO_ERROR )
{
// s-expressions atoms are always encoded as UTF-8.
// The non-virutal function calls the virtual workhorse function, and if
// a different quoting or escaping strategy is desired from the standard,
// a derived class can overload Quotes() above, but
// should never be a reason to overload this Quotew() here.
return Quotes( (const char*) aWrapee.utf8_str() );
}
//-----<STRING_FORMATTER>---------------------------------------------------- //-----<STRING_FORMATTER>----------------------------------------------------
void STRING_FORMATTER::write( const char* aOutBuf, int aCount ) throw( IO_ERROR ) void STRING_FORMATTER::write( const char* aOutBuf, int aCount ) throw( IO_ERROR )

View File

@ -34,7 +34,7 @@ void XNODE::Format( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERROR )
switch( GetType() ) switch( GetType() )
{ {
case wxXML_ELEMENT_NODE: case wxXML_ELEMENT_NODE:
out->Print( nestLevel, "(%s", out->Quoted( GetName() ).c_str() ); out->Print( nestLevel, "(%s", out->Quotew( GetName() ).c_str() );
FormatContents( out, nestLevel ); FormatContents( out, nestLevel );
if( GetNext() ) if( GetNext() )
out->Print( 0, ")\n" ); out->Print( 0, ")\n" );
@ -55,8 +55,8 @@ void XNODE::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERRO
{ {
out->Print( 0, " (%s %s)", out->Print( 0, " (%s %s)",
// attr names should never need quoting, no spaces, we designed the file. // attr names should never need quoting, no spaces, we designed the file.
out->Quoted( attr->GetName() ).c_str(), out->Quotew( attr->GetName() ).c_str(),
out->Quoted( attr->GetValue() ).c_str() out->Quotew( attr->GetValue() ).c_str()
); );
} }
@ -82,7 +82,7 @@ void XNODE::FormatContents( OUTPUTFORMATTER* out, int nestLevel ) throw( IO_ERRO
break; break;
case wxXML_TEXT_NODE: case wxXML_TEXT_NODE:
out->Print( 0, " %s", out->Quoted( GetContent() ).c_str() ); out->Print( 0, " %s", out->Quotew( GetContent() ).c_str() );
break; break;
default: default:

View File

@ -32,10 +32,10 @@ wxString TEMPLATE_FIELDNAME::GetDefaultFieldName( int aFieldNdx )
void TEMPLATE_FIELDNAME::Format( OUTPUTFORMATTER* out, int nestLevel ) const throw( IO_ERROR ) void TEMPLATE_FIELDNAME::Format( OUTPUTFORMATTER* out, int nestLevel ) const throw( IO_ERROR )
{ {
out->Print( nestLevel, "(field (name %s)", out->Quoted( m_Name ).c_str() ); out->Print( nestLevel, "(field (name %s)", out->Quotew( m_Name ).c_str() );
if( !m_Value.IsEmpty() ) if( !m_Value.IsEmpty() )
out->Print( 0, "(value %s)", out->Quoted( m_Value ).c_str() ); out->Print( 0, "(value %s)", out->Quotew( m_Value ).c_str() );
if( m_Visible ) if( m_Visible )
out->Print( 0, " visible" ); out->Print( 0, " visible" );

View File

@ -486,7 +486,7 @@ public:
} }
/** /**
* Function Quoted * Function Quotes
* checks \a aWrapee input string for a need to be quoted * checks \a aWrapee input string for a need to be quoted
* (e.g. contains a ')' character or a space), and for \" double quotes * (e.g. contains a ')' character or a space), and for \" double quotes
* within the string that need to be escaped such that the DSNLEXER * within the string that need to be escaped such that the DSNLEXER
@ -500,13 +500,9 @@ public:
* *
* @throw IO_ERROR, if there is any kind of problem with the input string. * @throw IO_ERROR, if there is any kind of problem with the input string.
*/ */
virtual std::string Quoted( const std::string& aWrapee ) throw( IO_ERROR ); virtual std::string Quotes( const std::string& aWrapee ) throw( IO_ERROR );
std::string Quoted( const wxString& aWrapee ) throw( IO_ERROR ) std::string Quotew( const wxString& aWrapee ) throw( IO_ERROR );
{
// s-expressions atoms are always encoded as UTF-8
return Quoted( (const char*) aWrapee.utf8_str() );
}
//-----</interface functions>----------------------------------------- //-----</interface functions>-----------------------------------------
}; };

View File

@ -157,10 +157,10 @@ void LIB_TABLE::ROW::Format( OUTPUTFORMATTER* out, int nestLevel ) const
throw( IO_ERROR ) throw( IO_ERROR )
{ {
out->Print( nestLevel, "(lib (logical %s)(type %s)(full_uri %s)(options %s))\n", out->Print( nestLevel, "(lib (logical %s)(type %s)(full_uri %s)(options %s))\n",
out->Quoted( logicalName ).c_str(), out->Quotes( logicalName ).c_str(),
out->Quoted( libType ).c_str(), out->Quotes( libType ).c_str(),
out->Quoted( fullURI ).c_str(), out->Quotes( fullURI ).c_str(),
out->Quoted( options ).c_str() out->Quotes( options ).c_str()
); );
} }

View File

@ -134,7 +134,7 @@ void PCB_PLOT_PARAMS::Format( OUTPUTFORMATTER* aFormatter,
aFormatter->Print( aNestLevel+1, "(%s %d)\n", GetTokenName( T_scaleselection ), aFormatter->Print( aNestLevel+1, "(%s %d)\n", GetTokenName( T_scaleselection ),
scaleSelection ); scaleSelection );
aFormatter->Print( aNestLevel+1, "(%s %s)\n", GetTokenName( T_outputdirectory ), aFormatter->Print( aNestLevel+1, "(%s %s)\n", GetTokenName( T_outputdirectory ),
aFormatter->Quoted( CONV_TO_UTF8( outputDirectory ) ).c_str() ); aFormatter->Quotew( outputDirectory ).c_str() );
aFormatter->Print( 0, ")\n" ); aFormatter->Print( 0, ")\n" );
} }