xo-interpreter: add Primitive object, to expose builtin functions

This commit is contained in:
Roland Conybeare 2025-11-27 11:03:41 -05:00
commit 2526dcc9b1
23 changed files with 277 additions and 135 deletions

View file

@ -99,21 +99,28 @@ namespace xo {
*
* Example
* T * p = new T(...);
* DestructorAux<T>::dtor(p);
* InvokerAux<T>::dtor(p);
**/
template <typename T>
struct InvokerAux : public Invoker {
virtual void dtor(void * addr) const override {
T * obj = static_cast<T *>(addr);
T * obj = reinterpret_cast<T *>(addr);
obj->~T();
}
};
/** no dtor for void **/
template<>
struct InvokerAux<void> : public Invoker {
virtual void dtor(void *) const override {}
};
/** no dtor for function types **/
template <typename Ret, typename... Args>
struct InvokerAux<Ret(Args...)> : public Invoker {
virtual void dtor(void *) const override {}
};
} /*namespace detail*/
} /*namespace reflect*/
} /*namespace xo*/