Sketcher: SketchGeometryExtension refactor GeometryMode type from string

========================================================================

getGeometryModeFromName
This commit is contained in:
Abdullah Tahiri
2020-12-05 06:02:30 +01:00
committed by abdullahtahiriyo
parent e230e60d5f
commit 9abbbd2b55
2 changed files with 21 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ using namespace Sketcher;
//---------- Geometry Extension
constexpr std::array<const char *, InternalType::NumInternalGeometryType> SketchGeometryExtension::internaltype2str;
constexpr std::array<const char *,GeometryMode::NumGeometryMode> SketchGeometryExtension::geometrymode2str;
TYPESYSTEM_SOURCE(Sketcher::SketchGeometryExtension,Part::GeometryExtension)
@@ -121,3 +122,21 @@ bool SketchGeometryExtension::getInternalTypeFromName(std::string str, InternalT
return false;
}
bool SketchGeometryExtension::getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type)
{
auto pos = std::find_if( SketchGeometryExtension::geometrymode2str.begin(),
SketchGeometryExtension::geometrymode2str.end(),
[str](const char * val) {
return strcmp(val,str.c_str())==0;}
);
if( pos != SketchGeometryExtension::geometrymode2str.end()) {
int index = std::distance( SketchGeometryExtension::geometrymode2str.begin(), pos );
type = static_cast<GeometryMode::GeometryMode>(index);
return true;
}
return false;
}

View File

@@ -103,6 +103,8 @@ public:
static bool getInternalTypeFromName(std::string str, InternalType::InternalType &type);
static bool getGeometryModeFromName(std::string str, GeometryMode::GeometryMode &type);
private:
SketchGeometryExtension(const SketchGeometryExtension&) = default;