Fabmaster: fix MSVC build

std::map is not move-constructable on MSVC because
it is not declared noexcept (and is not required to be
by the standard)

This means that a struct containing graphic_element
cannot be inserted into a vector with move semantics without
compile errors.  However, wrapping it in a unique_ptr
works.
This commit is contained in:
Jon Evans 2021-01-17 10:23:31 -05:00
parent 65f90f141f
commit 1754504234
2 changed files with 5 additions and 5 deletions

View File

@ -1171,7 +1171,7 @@ size_t FABMASTER::processGeometry( size_t aRow )
} }
GEOM_GRAPHIC& graphic = board_graphics.back(); GEOM_GRAPHIC& graphic = board_graphics.back();
graphic.elements.emplace( std::move( gr_item ) ); graphic.elements->emplace( std::move( gr_item ) );
} }
else else
{ {
@ -1188,7 +1188,7 @@ size_t FABMASTER::processGeometry( size_t aRow )
gr->second.id = id; gr->second.id = id;
} }
auto result = gr->second.elements.emplace( std::move( gr_item ) ); auto result = gr->second.elements->emplace( std::move( gr_item ) );
} }
} }
@ -1850,7 +1850,7 @@ bool FABMASTER::loadFootprints( BOARD* aBoard )
{ {
auto& graphic = gr_ref.second; auto& graphic = gr_ref.second;
for( auto& seg : graphic.elements ) for( auto& seg : *graphic.elements )
{ {
PCB_LAYER_ID layer = Dwgs_User; PCB_LAYER_ID layer = Dwgs_User;
@ -2526,7 +2526,7 @@ bool FABMASTER::loadGraphics( BOARD* aBoard )
else else
layer = Cmts_User; layer = Cmts_User;
for( auto& seg : geom.elements ) for( auto& seg : *geom.elements )
{ {
switch( seg->shape ) switch( seg->shape )
{ {

View File

@ -370,7 +370,7 @@ private:
std::string refdes; ///<! REFDES std::string refdes; ///<! REFDES
int id; ///<! RECORD_TAG[0] int id; ///<! RECORD_TAG[0]
graphic_element elements; std::unique_ptr<graphic_element> elements;
struct BY_ID struct BY_ID
{ {