Cleanup string handling in fabmaster import

Avoids round-tripping std::string->c_str->std::string and makes a few
auto references explicit
This commit is contained in:
Seth Hillbrand 2021-06-01 13:54:34 -07:00
parent 63cc7d16b4
commit 208dd5cbd5
1 changed files with 44 additions and 44 deletions

View File

@ -314,7 +314,7 @@ size_t FABMASTER::processPadStackLayers( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
int pad_name_col = getColFromName( aRow, "PADNAME" ); int pad_name_col = getColFromName( aRow, "PADNAME" );
int pad_num_col = getColFromName( aRow, "RECNUMBER" ); int pad_num_col = getColFromName( aRow, "RECNUMBER" );
@ -331,7 +331,7 @@ size_t FABMASTER::processPadStackLayers( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -390,7 +390,7 @@ size_t FABMASTER::processPadStacks( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -411,7 +411,7 @@ size_t FABMASTER::processPadStacks( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
FM_PAD* pad; FM_PAD* pad;
if( row.size() != header.size() ) if( row.size() != header.size() )
@ -642,7 +642,7 @@ size_t FABMASTER::processSimpleLayers( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -791,7 +791,7 @@ size_t FABMASTER::processLayers( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -876,7 +876,7 @@ size_t FABMASTER::processCustomPads( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -985,11 +985,11 @@ FABMASTER::GRAPHIC_LINE* FABMASTER::processLine( const FABMASTER::GRAPHIC_DATA&
GRAPHIC_LINE* new_line = new GRAPHIC_LINE ; GRAPHIC_LINE* new_line = new GRAPHIC_LINE ;
new_line->shape = GR_SHAPE_LINE; new_line->shape = GR_SHAPE_LINE;
new_line->start_x = KiROUND( readDouble( aData.graphic_data1.c_str() ) * aScale ); new_line->start_x = KiROUND( readDouble( aData.graphic_data1 ) * aScale );
new_line->start_y = -KiROUND( readDouble( aData.graphic_data2.c_str() ) * aScale ); new_line->start_y = -KiROUND( readDouble( aData.graphic_data2 ) * aScale );
new_line->end_x = KiROUND( readDouble( aData.graphic_data3.c_str() ) * aScale ); new_line->end_x = KiROUND( readDouble( aData.graphic_data3 ) * aScale );
new_line->end_y = -KiROUND( readDouble( aData.graphic_data4.c_str() ) * aScale ); new_line->end_y = -KiROUND( readDouble( aData.graphic_data4 ) * aScale );
new_line->width = KiROUND( readDouble( aData.graphic_data5.c_str() ) * aScale ); new_line->width = KiROUND( readDouble( aData.graphic_data5 ) * aScale );
return new_line; return new_line;
} }
@ -999,14 +999,14 @@ FABMASTER::GRAPHIC_ARC* FABMASTER::processArc( const FABMASTER::GRAPHIC_DATA& aD
GRAPHIC_ARC* new_arc = new GRAPHIC_ARC ; GRAPHIC_ARC* new_arc = new GRAPHIC_ARC ;
new_arc->shape = GR_SHAPE_ARC; new_arc->shape = GR_SHAPE_ARC;
new_arc->start_x = KiROUND( readDouble( aData.graphic_data1.c_str() ) * aScale ); new_arc->start_x = KiROUND( readDouble( aData.graphic_data1 ) * aScale );
new_arc->start_y = -KiROUND( readDouble( aData.graphic_data2.c_str() ) * aScale ); new_arc->start_y = -KiROUND( readDouble( aData.graphic_data2 ) * aScale );
new_arc->end_x = KiROUND( readDouble( aData.graphic_data3.c_str() ) * aScale ); new_arc->end_x = KiROUND( readDouble( aData.graphic_data3 ) * aScale );
new_arc->end_y = -KiROUND( readDouble( aData.graphic_data4.c_str() ) * aScale ); new_arc->end_y = -KiROUND( readDouble( aData.graphic_data4 ) * aScale );
new_arc->center_x = KiROUND( readDouble( aData.graphic_data5.c_str() ) * aScale ); new_arc->center_x = KiROUND( readDouble( aData.graphic_data5 ) * aScale );
new_arc->center_y = -KiROUND( readDouble( aData.graphic_data6.c_str() ) * aScale ); new_arc->center_y = -KiROUND( readDouble( aData.graphic_data6 ) * aScale );
new_arc->radius = KiROUND( readDouble( aData.graphic_data7.c_str() ) * aScale ); new_arc->radius = KiROUND( readDouble( aData.graphic_data7 ) * aScale );
new_arc->width = KiROUND( readDouble( aData.graphic_data8.c_str() ) * aScale ); new_arc->width = KiROUND( readDouble( aData.graphic_data8 ) * aScale );
new_arc->clockwise = ( aData.graphic_data9 != "COUNTERCLOCKWISE" ); new_arc->clockwise = ( aData.graphic_data9 != "COUNTERCLOCKWISE" );
@ -1045,10 +1045,10 @@ FABMASTER::GRAPHIC_RECTANGLE* FABMASTER::processRectangle( const FABMASTER::GRAP
GRAPHIC_RECTANGLE* new_rect = new GRAPHIC_RECTANGLE; GRAPHIC_RECTANGLE* new_rect = new GRAPHIC_RECTANGLE;
new_rect->shape = GR_SHAPE_RECTANGLE; new_rect->shape = GR_SHAPE_RECTANGLE;
new_rect->start_x = KiROUND( readDouble( aData.graphic_data1.c_str() ) * aScale ); new_rect->start_x = KiROUND( readDouble( aData.graphic_data1 ) * aScale );
new_rect->start_y = -KiROUND( readDouble( aData.graphic_data2.c_str() ) * aScale ); new_rect->start_y = -KiROUND( readDouble( aData.graphic_data2 ) * aScale );
new_rect->end_x = KiROUND( readDouble( aData.graphic_data3.c_str() ) * aScale ); new_rect->end_x = KiROUND( readDouble( aData.graphic_data3 ) * aScale );
new_rect->end_y = -KiROUND( readDouble( aData.graphic_data4.c_str() ) * aScale ); new_rect->end_y = -KiROUND( readDouble( aData.graphic_data4 ) * aScale );
new_rect->fill = aData.graphic_data5 == "1"; new_rect->fill = aData.graphic_data5 == "1";
new_rect->width = 0; new_rect->width = 0;
@ -1060,9 +1060,9 @@ FABMASTER::GRAPHIC_TEXT* FABMASTER::processText( const FABMASTER::GRAPHIC_DATA&
GRAPHIC_TEXT* new_text = new GRAPHIC_TEXT; GRAPHIC_TEXT* new_text = new GRAPHIC_TEXT;
new_text->shape = GR_SHAPE_TEXT; new_text->shape = GR_SHAPE_TEXT;
new_text->start_x = KiROUND( readDouble( aData.graphic_data1.c_str() ) * aScale ); new_text->start_x = KiROUND( readDouble( aData.graphic_data1 ) * aScale );
new_text->start_y = -KiROUND( readDouble( aData.graphic_data2.c_str() ) * aScale ); new_text->start_y = -KiROUND( readDouble( aData.graphic_data2 ) * aScale );
new_text->rotation = KiROUND( readDouble( aData.graphic_data3.c_str() ) ); new_text->rotation = KiROUND( readDouble( aData.graphic_data3 ) );
new_text->mirror = ( aData.graphic_data4 == "YES" ); new_text->mirror = ( aData.graphic_data4 == "YES" );
if( aData.graphic_data5 == "RIGHT" ) if( aData.graphic_data5 == "RIGHT" )
@ -1088,12 +1088,12 @@ FABMASTER::GRAPHIC_TEXT* FABMASTER::processText( const FABMASTER::GRAPHIC_DATA&
{ {
// 0 = size // 0 = size
// 1 = font // 1 = font
new_text->height = KiROUND( readDouble( toks[2].c_str() ) * aScale ); new_text->height = KiROUND( readDouble( toks[2] ) * aScale );
new_text->width = KiROUND( readDouble( toks[3].c_str() ) * aScale ); new_text->width = KiROUND( readDouble( toks[3] ) * aScale );
new_text->ital = readDouble( toks[4].c_str() ) != 0.0; new_text->ital = readDouble( toks[4] ) != 0.0;
// 5 = character spacing // 5 = character spacing
// 6 = line spacing // 6 = line spacing
new_text->thickness = KiROUND( readDouble( toks[7].c_str() ) * aScale ); new_text->thickness = KiROUND( readDouble( toks[7] ) * aScale );
} }
new_text->text = aData.graphic_data7; new_text->text = aData.graphic_data7;
@ -1146,7 +1146,7 @@ size_t FABMASTER::processGeometry( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1177,7 +1177,7 @@ size_t FABMASTER::processGeometry( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -1281,7 +1281,7 @@ size_t FABMASTER::processVias( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1299,7 +1299,7 @@ size_t FABMASTER::processVias( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -1334,7 +1334,7 @@ size_t FABMASTER::processTraces( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1364,7 +1364,7 @@ size_t FABMASTER::processTraces( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -1386,7 +1386,7 @@ size_t FABMASTER::processTraces( size_t aRow )
gr_data.graphic_data8 = row[grdata8_col]; gr_data.graphic_data8 = row[grdata8_col];
gr_data.graphic_data9 = row[grdata9_col]; gr_data.graphic_data9 = row[grdata9_col];
auto geo_tag = row[tag_col]; const std::string& geo_tag = row[tag_col];
// Grouped graphics are a series of records with the same record ID but incrementing // Grouped graphics are a series of records with the same record ID but incrementing
// Sequence numbers. // Sequence numbers.
int id = -1; int id = -1;
@ -1497,7 +1497,7 @@ size_t FABMASTER::processFootprints( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1527,7 +1527,7 @@ size_t FABMASTER::processFootprints( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -1580,7 +1580,7 @@ size_t FABMASTER::processPins( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1604,7 +1604,7 @@ size_t FABMASTER::processPins( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {
@ -1650,7 +1650,7 @@ size_t FABMASTER::processNets( size_t aRow )
if( rownum >= rows.size() ) if( rownum >= rows.size() )
return -1; return -1;
const auto header = rows[aRow]; const single_row& header = rows[aRow];
double scale_factor = processScaleFactor( aRow + 1 ); double scale_factor = processScaleFactor( aRow + 1 );
if( scale_factor <= 0.0 ) if( scale_factor <= 0.0 )
@ -1669,7 +1669,7 @@ size_t FABMASTER::processNets( size_t aRow )
for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum ) for( ; rownum < rows.size() && rows[rownum].size() > 0 && rows[rownum][0] == "S"; ++rownum )
{ {
auto row = rows[rownum]; const single_row& row = rows[rownum];
if( row.size() != header.size() ) if( row.size() != header.size() )
{ {