[ORC] Add MethodWrapperHandler utility for WrapperFunction.
MethodWrapperHandler removes some of the boilerplate when writing wrapper functions to wrap method calls. It can be used as a handler for wrapper functions whose first argument is an ExecutorAddress: the address is cast to a pointer of the given class type, then the given method function pointer is called on that object pointer (passing the rest of the arguments). E.g. class MyClass { public: void myMethod(uint32_t, bool) { ... } }; // SPS Method signature for myMethod -- note MyClass object address as first // argument. using SPSMyMethodWrapperSignature = SPSTuple<SPSExecutorAddress, uint32_t, bool>; // Wrapper function for myMethod. WrapperFunctionResult myMethodCallWrapper(const char *ArgData, size_t ArgSize) { return WrapperFunction<SPSMyMethodWrapperSignature>::handle( ArgData, ArgSize, makeMethodWrapperHandler(&MyClass::myMethod)); }
Loading
Please sign in to comment