Sketcher: ExternalGeometryExtension - refactor flag string to type in static function

This commit is contained in:
Abdullah Tahiri
2020-12-05 06:51:44 +01:00
committed by abdullahtahiriyo
parent d0930a545f
commit 21b4f4f1da
3 changed files with 25 additions and 16 deletions

View File

@@ -104,15 +104,10 @@ PyObject* ExternalGeometryExtensionPy::testFlag(PyObject *args)
char* flag;
if (PyArg_ParseTuple(args, "s",&flag)) {
auto pos = std::find_if(getExternalGeometryExtensionPtr()->flag2str.begin(),
getExternalGeometryExtensionPtr()->flag2str.end(),
[flag](const char * val) { return strcmp(val,flag) == 0;});
ExternalGeometryExtension::Flag flagtype;
if( pos != getExternalGeometryExtensionPtr()->flag2str.end()) {
int index = std::distance( getExternalGeometryExtensionPtr()->flag2str.begin(), pos );
return new_reference_to(Py::Boolean(this->getExternalGeometryExtensionPtr()->testFlag(index)));
}
if(getExternalGeometryExtensionPtr()->getFlagsFromName(flag, flagtype))
return new_reference_to(Py::Boolean(this->getExternalGeometryExtensionPtr()->testFlag(flagtype)));
PyErr_SetString(PyExc_TypeError, "Flag string does not exist.");
return NULL;
@@ -129,16 +124,11 @@ PyObject* ExternalGeometryExtensionPy::setFlag(PyObject *args)
PyObject * bflag = Py_True;
if (PyArg_ParseTuple(args, "s|O!", &flag, &PyBool_Type, &bflag)) {
auto pos = std::find_if(getExternalGeometryExtensionPtr()->flag2str.begin(),
getExternalGeometryExtensionPtr()->flag2str.end(),
[flag](const char * val) {
return strcmp(val,flag)==0;}
);
ExternalGeometryExtension::Flag flagtype;
if( pos != getExternalGeometryExtensionPtr()->flag2str.end()) {
int index = std::distance( getExternalGeometryExtensionPtr()->flag2str.begin(), pos );
if(getExternalGeometryExtensionPtr()->getFlagsFromName(flag, flagtype)) {
this->getExternalGeometryExtensionPtr()->setFlag(index,PyObject_IsTrue(bflag) ? true : false);
this->getExternalGeometryExtensionPtr()->setFlag(flagtype,PyObject_IsTrue(bflag) ? true : false);
Py_Return;
}