MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / pyObjectToAny

Function pyObjectToAny

src/App/Expression.cpp:449–479  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

447}
448
449App::any pyObjectToAny(Py::Object value, bool check) {
450
451 if(value.isNone())
452 return {};
453
454 PyObject *pyvalue = value.ptr();
455
456 if(!check)
457 return {pyObjectWrap(pyvalue)};
458
459 if (PyObject_TypeCheck(pyvalue, &Base::QuantityPy::Type)) {
460 Base::QuantityPy * qp = static_cast<Base::QuantityPy*>(pyvalue);
461 Base::Quantity * q = qp->getQuantityPtr();
462
463 return App::any(*q);
464 }
465 if (PyFloat_Check(pyvalue))
466 return App::any(PyFloat_AsDouble(pyvalue));
467 if (PyLong_Check(pyvalue))
468 return App::any(PyLong_AsLong(pyvalue));
469 else if (PyUnicode_Check(pyvalue)) {
470 const char* utf8value = PyUnicode_AsUTF8(pyvalue);
471 if (!utf8value) {
472 FC_THROWM(Base::ValueError, "Invalid unicode string");
473 }
474 return App::any(std::string(utf8value));
475 }
476 else {
477 return App::any(pyObjectWrap(pyvalue));
478 }
479}
480
481bool pyToQuantity(Quantity &q, const Py::Object &pyobj) {
482 if (PyObject_TypeCheck(*pyobj, &Base::QuantityPy::Type))

Callers 3

getValueMethod · 0.85
getValueAsAnyMethod · 0.85
getPathValueMethod · 0.85

Calls 3

pyObjectWrapFunction · 0.85
isNoneMethod · 0.80
ptrMethod · 0.45

Tested by

no test coverage detected