Class Function#
Defined in File function.h
Inheritance Relationships#
Base Type#
public tvm::ffi::ObjectRef(Class ObjectRef)
Class Documentation#
-
class Function : public tvm::ffi::ObjectRef#
ffi::Function is a type-erased function. The arguments are passed by “packed format” via AnyView
Public Functions
-
inline Function(std::nullptr_t)#
Constructor from null.
-
template<typename TCallable, typename = std::enable_if_t<!std::is_same_v<std::decay_t<TCallable>, Function>>>
inline explicit Function(TCallable &&packed_call)# Constructing a packed function from a callable type whose signature is consistent with
ffi::FunctionNote
legacy purpose, should change to Function::FromPacked for mostfuture use.
- Parameters:
packed_call – The packed function signature
-
inline void CallPacked(const AnyView *args, int32_t num_args, Any *result) const#
Call the function in packed format.
- Parameters:
args – The arguments
num_args – The number of arguments
result – The return value.
-
inline void CallPacked(PackedArgs args, Any *result) const#
Call the function in packed format.
- Parameters:
args – The arguments
result – The return value.
Public Static Functions
-
template<typename TCallable>
static inline Function FromPacked(TCallable &&packed_call)# Constructing a packed function from a callable type whose signature is consistent with
ffi::Function- Parameters:
packed_call – The packed function signature
-
template<typename TCallable, typename ...Args>
static inline auto FromPackedInplace(Args&&... args)# Constructing a packed function from a callable type whose signature is consistent with
ffi::Function. It will create the Callable object with the given arguments, and return the inplace constructed Function along with the pointer to the callable object. The lifetime of the callable object is managed by the returned Function.- Parameters:
args – The arguments to construct TCallable
- Returns:
A tuple of (Function, TCallable*)
-
static inline Function FromExternC(void *self, TVMFFISafeCallType safe_call, void (*deleter)(void *self))#
Create ffi::Function from a C style callbacks.
self and deleter can be nullptr if the function do not need closure support and corresponds to a raw function pointer.
- Parameters:
self – Resource handle to the function
safe_call – The safe_call definition in C.
deleter – The deleter to release the resource of self.
- Returns:
The created function.
-
static inline std::optional<Function> GetGlobal(std::string_view name)#
Get global function by name.
Note
This function will return std::nullopt if the function is not found.
- Parameters:
name – The function name
- Returns:
The global function.
-
static inline std::optional<Function> GetGlobal(const std::string &name)#
Get global function by name.
Note
This function will return std::nullopt if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline std::optional<Function> GetGlobal(const String &name)#
Get global function by name.
Note
This function will return std::nullopt if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline std::optional<Function> GetGlobal(const char *name)#
Get global function by name.
Note
This function will return std::nullopt if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline Function GetGlobalRequired(std::string_view name)#
Get global function by name and throw an error if it is not found.
Note
This function will throw an error if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline Function GetGlobalRequired(const std::string &name)#
Get global function by name.
Note
This function will throw an error if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline Function GetGlobalRequired(const String &name)#
Get global function by name.
Note
This function will throw an error if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline Function GetGlobalRequired(const char *name)#
Get global function by name.
Note
This function will throw an error if the function is not found.
- Parameters:
name – The name of the function
- Returns:
The global function
-
static inline void SetGlobal(std::string_view name, Function func, bool override = false)#
Set global function by name.
- Parameters:
name – The name of the function
func – The function
override – Whether to override when there is duplication.
-
static inline std::vector<String> ListGlobalNames()#
List all global names.
Note
This function do not depend on Array so core do not have container dep.
- Returns:
A vector of all global names
-
static inline void RemoveGlobal(const String &name)#
Remove a global function by name.
- Parameters:
name – The name of the function
-
template<typename TCallable>
static inline Function FromTyped(TCallable &&callable)# Constructing a packed function from a normal function.
- Parameters:
callable – the internal container of packed function.
-
template<typename TCallable>
static inline Function FromTyped(TCallable &&callable, std::string name)# Constructing a packed function from a normal function.
- Parameters:
callable – the internal container of packed function.
name – optional name attacked to the function.
-
template<typename ...Args>
static inline Any InvokeExternC(void *handle, TVMFFISafeCallType safe_call, Args&&... args)# Directly invoke an extern “C” function that follows the TVM FFI SafeCall convention.
This function can be useful to turn an existing exported symbol into a typed function.
// An extern "C" function, matching TVMFFISafeCallType extern "C" int __tvm_ffi_add( void* handle, const TVMFFIAny* args, int32_t num_args, TVMFFIAny*result ); // redirect an existing symbol into a typed function inline int add(int a, int b) { return tvm::ffi::Function::InvokeExternC(nullptr, __tvm_ffi_add, a, b).cast<int>(); }
- Template Parameters:
Args – The types of the arguments to the extern function.
- Parameters:
handle – The handle argument, for exported symbols this is usually nullptr.
safe_call – The function pointer to the extern “C” function.
args – The arguments to pass to the function.
- Returns:
The return value, wrapped in a tvm::ffi::Any.
-
inline Function(std::nullptr_t)#