Class Object#
Defined in File object.h
Inheritance Relationships#
Derived Types#
public tvm::ffi::ArrayObj
(Class ArrayObj)public tvm::ffi::ErrorObj
(Class ErrorObj)public tvm::ffi::FunctionObj
(Class FunctionObj)public tvm::ffi::MapObj
(Class MapObj)public tvm::ffi::ModuleObj
(Class ModuleObj)public tvm::ffi::ShapeObj
(Class ShapeObj)public tvm::ffi::TensorObj
(Class TensorObj)public tvm::ffi::details::BytesObjBase
public tvm::ffi::reflection::AccessPathObj
(Class AccessPathObj)public tvm::ffi::reflection::AccessStepObj
(Class AccessStepObj)
Class Documentation#
-
class Object#
Base class of all object containers.
Sub-class of objects should declare the following static constexpr fields:
_type_index: Static type index of the object, if assigned to TypeIndex::kTVMFFIDynObject the type index will be assigned during runtime. Runtime type index can be accessed by ObjectType::TypeIndex();
_type_key: The unique string identifier of the type.
_type_final: Whether the type is terminal type(there is no subclass of the type in the object system). This field is automatically set by macro TVM_FFI_DECLARE_OBJECT_INFO_FINAL It is still OK to sub-class a terminal object type T and construct it using make_object. But IsInstance check will only show that the object type is T(instead of the sub-class).
_type_mutable: Whether we would like to expose cast to non-constant pointer ObjectType* from Any/AnyView. By default, we set to false so it is not exposed.
The following two fields are necessary for base classes that can be sub-classed.
_type_child_slots: Number of reserved type index slots for child classes. Used for runtime optimization for type checking in IsInstance. If an object’s type_index is within range of [type_index, type_index + _type_child_slots] Then the object can be quickly decided as sub-class of the current object class. If not, a fallback mechanism is used to check the global type table. Recommendation: set to estimate number of children needed.
_type_child_slots_can_overflow: Whether we can add additional child classes even if the number of child classes exceeds the _type_child_slots. A fallback mechanism to check type table will be used. Recommendation: set to false for optimal runtime speed if we know exact number of children.
Two macros are used to declare helper functions in the object:
Use TVM_FFI_DECLARE_OBJECT_INFO for object classes that can be sub-classed.
Use TVM_FFI_DECLARE_OBJECT_INFO_FINAL for object classes that cannot be sub-classed.
New objects can be created using make_object function. Which will automatically populate the type_index and deleter of the object.
Subclassed by tvm::ffi::ArrayObj, tvm::ffi::ErrorObj, tvm::ffi::FunctionObj, tvm::ffi::MapObj, tvm::ffi::ModuleObj, tvm::ffi::ShapeObj, tvm::ffi::TensorObj, tvm::ffi::details::BytesObjBase, tvm::ffi::reflection::AccessPathObj, tvm::ffi::reflection::AccessStepObj
Public Functions
-
inline Object()#
-
template<typename TargetType>
inline bool IsInstance() const# Check if the object is an instance of TargetType.
- Template Parameters:
TargetType – The target type to be checked.
- Returns:
Whether the target type is true.
-
inline int32_t type_index() const#
- Returns:
The internal runtime type index of the object.
-
inline std::string GetTypeKey() const#
Note
this operation is expensive, can be used for error reporting.
- Returns:
the type key of the object.
-
inline uint64_t GetTypeKeyHash() const#
- Returns:
A hash value of the return of GetTypeKey.
-
inline bool unique() const#
- Returns:
Whether the object.use_count() == 1.
-
inline uint64_t use_count() const#
Note
We use STL style naming to be consistent with known API in shared_ptr.
- Returns:
The usage count of the cell.
Public Static Functions
-
static inline std::string TypeIndex2Key(int32_t tindex)#
Get the type key of the corresponding index from runtime.
- Parameters:
tindex – The type index.
- Returns:
the result.
-
static inline int32_t RuntimeTypeIndex()#
Get the runtime allocated type index of the type.
Note
Getting this information may need dynamic calls into a global table.
-
static inline int32_t _GetOrAllocRuntimeTypeIndex()#
Internal function to get or allocate a runtime index.
Public Static Attributes
-
static constexpr const char *_type_key = StaticTypeKey::kTVMFFIObject#
The type key of the class.
-
static constexpr bool _type_final = false#
Whether the class is final.
-
static constexpr bool _type_mutable = false#
Whether allow mutable access to fields.
-
static constexpr uint32_t _type_child_slots = 0#
The number of child slots of the class to pre-allocate to this type.
-
static constexpr bool _type_child_slots_can_overflow = true#
Whether allow additional children beyond pre-specified by _type_child_slots.
-
static constexpr int32_t _type_index = TypeIndex::kTVMFFIObject#
The static type index of the class.
-
static constexpr int32_t _type_depth = 0#
The static depth of the class in the object hierarchy.
-
static constexpr TVMFFISEqHashKind _type_s_eq_hash_kind = kTVMFFISEqHashKindUnsupported#
The structural equality and hash kind of the type.
Protected Attributes
-
TVMFFIObject header_#
header field that is the common prefix of all objects