diff --git a/src/pyexpression/pyexpression.cpp b/src/pyexpression/pyexpression.cpp index a69828d1..10307d68 100644 --- a/src/pyexpression/pyexpression.cpp +++ b/src/pyexpression/pyexpression.cpp @@ -103,27 +103,45 @@ namespace xo { py::doc("number of arguments to this function (not counting return value)")) ; - using Fn_dbl_dbl_type = double (*)(double); + using int32_t = std::int32_t; - m.def("make_sqrt_pm", []() { return make_primitive("sqrt", sqrt); }, - py::doc("create primitive representing the ::sqrt() function")); - m.def("make_sin_pm", - []() { return make_primitive("sin", ::sin); }, - py::doc("create primitive representing the ::sin() function")); - m.def("make_cos_pm", []() { return make_primitive("cos", ::cos); }, - py::doc("create primitive representing the ::cos() function")); - m.def("make_pow_pm", []() { return make_primitive("pow", ::pow); }, - py::doc("create primitive representing the ::pow() function")); + py::class_, + PrimitiveInterface, + rp>>(m, "Primitive_i32_i32") + ; py::class_, PrimitiveInterface, rp>>(m, "Primitive_double_double") ; + using Fn_dbl_dbl_type = double (*)(double); + + m.def("make_sqrt_pm", []() { return make_primitive("sqrt", + ::sqrt, + false /*!explicit_symbol_def*/); }, + py::doc("create primitive representing the ::sqrt() function")); + m.def("make_sin_pm", + []() { return make_primitive("sin", + ::sin, + false /*!explicit_symbol_def*/); }, + py::doc("create primitive representing the ::sin() function")); + m.def("make_cos_pm", + []() { return make_primitive("cos", + ::cos, + false /*!explicit_symbol_def*/); }, + py::doc("create primitive representing the ::cos() function")); + py::class_, PrimitiveInterface, rp>>(m, "Primitive_double_double_double") ; + m.def("make_pow_pm", + []() { return make_primitive("pow", + ::pow, + false /*!explicit_symbol_def*/); }, + py::doc("create primitive representing the ::pow() function")); + // ----- Apply ----- py::class_>(m, "Apply")