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

Function expressionFromPy

src/App/Expression.cpp:675–700  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

673}
674
675ExpressionPtr expressionFromPy(const DocumentObject* owner, const Py::Object& value)
676{
677 if (value.isNone())
678 return std::make_unique<PyObjectExpression>(owner);
679 if(value.isString()) {
680 return std::make_unique<StringExpression>(owner, value.as_string());
681 } else if (PyObject_TypeCheck(value.ptr(),&QuantityPy::Type)) {
682 return std::make_unique<NumberExpression>(
683 owner,
684 *static_cast<QuantityPy*>(value.ptr())->getQuantityPtr()
685 );
686 } else if (value.isBoolean()) {
687 if (value.isTrue()) {
688 return std::make_unique<ConstantExpression>(owner, "True", Quantity(1.0));
689 }
690 else {
691 return std::make_unique<ConstantExpression>(owner, "False", Quantity(0.0));
692 }
693 } else {
694 Quantity q;
695 if (pyToQuantity(q, value)) {
696 return std::make_unique<NumberExpression>(owner, q);
697 }
698 }
699 return std::make_unique<PyObjectExpression>(owner, value.ptr());
700}
701
702} // namespace App
703

Callers 1

evalMethod · 0.85

Calls 5

pyToQuantityFunction · 0.85
isNoneMethod · 0.80
QuantityClass · 0.70
as_stringMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected