1#ifndef CPYRT_DECLAREEXECUTORS_H
2#define CPYRT_DECLAREEXECUTORS_H
19#define CPPJIT_DECL_EXEC(name) \
20 class name##Executor : public Executor { \
22 PyObject* Execute(interop::TCppMethod_t, interop::TCppObject_t, \
23 CallContext*) override; \
57#define CPPJIT_ARRAY_DECL_EXEC(name) \
58 class name##ArrayExecutor : public Executor { \
62 name##ArrayExecutor(dims_t dims) : fShape(dims) {} \
63 PyObject* Execute(interop::TCppMethod_t, interop::TCppObject_t, \
64 CallContext*) override; \
65 bool HasState() override { return true; } \
95class InstancePtrExecutor :
public Executor {
99 CallContext*)
override;
100 bool HasState()
override {
return true; }
106class InstanceExecutor :
public Executor {
110 CallContext*)
override;
111 bool HasState()
override {
return true; }
118class IteratorExecutor :
public InstanceExecutor {
126#define CPPJIT_DECL_REFEXEC(name) \
127 class name##RefExecutor : public RefExecutor { \
129 PyObject* Execute(interop::TCppMethod_t, interop::TCppObject_t, \
130 CallContext*) override; \
153class InstanceRefExecutor :
public RefExecutor {
157 CallContext*)
override;
163class InstancePtrPtrExecutor :
public InstanceRefExecutor {
165 using InstanceRefExecutor::InstanceRefExecutor;
167 CallContext*)
override;
170class InstancePtrRefExecutor :
public InstanceRefExecutor {
172 using InstanceRefExecutor::InstanceRefExecutor;
174 CallContext*)
override;
177class InstanceArrayExecutor :
public InstancePtrExecutor {
182 CallContext*)
override;
188class FunctionPointerExecutor :
public Executor {
190 FunctionPointerExecutor(
const std::string& ret,
const std::string& sig)
193 CallContext*)
override;
interop::TCppScope_t fClass
#define CPPJIT_ARRAY_DECL_EXEC(name)
#define CPPJIT_DECL_REFEXEC(name)
#define CPPJIT_DECL_EXEC(name)
Py_ssize_t array_size(const std::string &name)
Cpp::ObjectRef TCppObject_t
Cpp::FuncRef TCppMethod_t