From 01e0b8ffbafe55f9ceb632304885614ea158dfdf Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Sat, 15 Jun 2024 15:15:45 -0400 Subject: [PATCH] xo-pyjit: + XferFn for symbol lookup [wip] --- src/pyjit/pyjit.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pyjit/pyjit.cpp b/src/pyjit/pyjit.cpp index 2bd2afaf..14bfc9f4 100644 --- a/src/pyjit/pyjit.cpp +++ b/src/pyjit/pyjit.cpp @@ -7,6 +7,16 @@ #include namespace xo { + struct XferFn : public ref::Refcount { + using fptr_type = double (*) (double); + + explicit XferFn(fptr_type fptr) : fptr_{fptr} {} + + double operator() (double x) { return (*fptr_)(x); } + + fptr_type fptr_; + }; + namespace jit { using xo::ast::Expression; using xo::ref::rp; @@ -42,6 +52,10 @@ namespace xo { * RC 14jun2024 - I think this is true modulo use of llvm resource trackers. */ py::return_value_policy::reference_internal) + py::class_>(m, "XferFn") + .def("__call__", + [](XferFn & self, double x) { return self(x); } + ) ; py::class_