24#ifndef TVM_IR_ENV_FUNC_H_
25#define TVM_IR_ENV_FUNC_H_
27#include <tvm/ffi/function.h>
28#include <tvm/ffi/reflection/registry.h>
54 namespace refl = tvm::ffi::reflection;
56 refl::ObjectDef<EnvFuncNode>()
72 explicit EnvFunc(ffi::ObjectPtr<ffi::Object>
n) : ffi::ObjectRef(
n) {}
76 explicit EnvFunc(ffi::UnsafeInit tag) : ffi::ObjectRef(tag) {}
84 template <
typename...
Args>
88 return n->func(std::forward<Args>(args)...);
104template <
typename FType>
116template <
typename R,
typename...
Args>
133 ffi::ObjectRef::operator=(
other);
146 if constexpr (std::is_same_v<R, void>) {
147 n->func(std::forward<Args>(args)...);
149 ffi::Any
res =
n->func(std::forward<Args>(args)...);
150 if constexpr (std::is_same_v<R, ffi::Any>) {
153 return std::move(
res).cast<
R>();
A serializable function backed by TVM's global environment.
Definition env_func.h:44
static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind
Definition env_func.h:61
ffi::Function func
The internal packed function.
Definition env_func.h:49
EnvFuncNode()
constructor
Definition env_func.h:51
static void RegisterReflection()
Definition env_func.h:53
ffi::String name
Unique name of the global function.
Definition env_func.h:47
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("ir.EnvFunc", EnvFuncNode, ffi::Object)
Managed reference to EnvFuncNode.
Definition env_func.h:69
EnvFunc(ffi::UnsafeInit tag)
constructor with UnsafeInit
Definition env_func.h:76
static EnvFunc Get(const ffi::String &name)
Get a global function based on the name.
EnvFunc()
Definition env_func.h:71
EnvFunc(ffi::ObjectPtr< ffi::Object > n)
Definition env_func.h:72
const EnvFuncNode * operator->() const
Definition env_func.h:78
ffi::Any operator()(Args &&... args) const
Invoke the function.
Definition env_func.h:85
A typed version of EnvFunc. It is backed by a GlobalFuncNode internally.
Definition env_func.h:117
TypedEnvFunc()
Definition env_func.h:121
const EnvFuncNode * operator->() const
Definition env_func.h:137
TypedEnvFunc(ffi::ObjectPtr< ffi::Object > n)
Definition env_func.h:122
R operator()(Args... args) const
Invoke the function.
Definition env_func.h:143
TypedEnvFunc(ffi::UnsafeInit tag)
constructor with UnsafeInit
Definition env_func.h:126
TSelf & operator=(const EnvFunc &other)
Assign global function to a TypedEnvFunc.
Definition env_func.h:132
Please refer to TypedEnvFunc<R(Args..)>.
Definition env_func.h:105
RAII wrapper function to enter and exit a context object similar to python's with syntax.
Definition with_context.h:59
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition analyzer.h:40