tvm
|
Stores all data for an Algebraic Data Type (ADT). More...
#include <adt.h>
Public Member Functions | |
TypeData (GlobalTypeVar header, Array< TypeVar > type_vars, Array< Constructor > constructors) | |
Constructor. More... | |
TVM_DEFINE_OBJECT_REF_METHODS (TypeData, Type, TypeDataNode) | |
![]() | |
TVM_DEFINE_OBJECT_REF_METHODS (Type, ObjectRef, TypeNode) | |
![]() | |
ObjectRef ()=default | |
default constructor More... | |
ObjectRef (ObjectPtr< Object > data) | |
Constructor from existing object ptr. More... | |
bool | same_as (const ObjectRef &other) const |
Comparator. More... | |
bool | operator== (const ObjectRef &other) const |
Comparator. More... | |
bool | operator!= (const ObjectRef &other) const |
Comparator. More... | |
bool | operator< (const ObjectRef &other) const |
Comparator. More... | |
bool | defined () const |
const Object * | get () const |
const Object * | operator-> () const |
bool | unique () const |
int | use_count () const |
template<typename ObjectType , typename = std::enable_if_t<std::is_base_of_v<Object, ObjectType>>> | |
const ObjectType * | as () const |
Try to downcast the internal Object to a raw pointer of a corresponding type. More... | |
template<typename ObjectRefType , typename = std::enable_if_t<std::is_base_of_v<ObjectRef, ObjectRefType>>> | |
Optional< ObjectRefType > | as () const |
Try to downcast the ObjectRef to a Optional<T> of the requested type. More... | |
Additional Inherited Members | |
![]() | |
using | ContainerType = Object |
type indicate the container type. More... | |
![]() | |
static constexpr bool | _type_is_nullable = true |
![]() | |
Object * | get_mutable () const |
![]() | |
template<typename T > | |
static T | DowncastNoCheck (ObjectRef ref) |
Internal helper function downcast a ref without check. More... | |
static void | FFIClearAfterMove (ObjectRef *ref) |
Clear the object ref data field without DecRef after we successfully moved the field. More... | |
template<typename ObjectType > | |
static ObjectPtr< ObjectType > | GetDataPtr (const ObjectRef &ref) |
Internal helper function get data_ as ObjectPtr of ObjectType. More... | |
![]() | |
ObjectPtr< Object > | data_ |
Internal pointer that backs the reference. More... | |
Stores all data for an Algebraic Data Type (ADT).
In particular, it stores the handle (global type var) for an ADT and the constructors used to build it and is kept in the module. Note that type parameters are also indicated in the type data: this means that for any instance of an ADT, the type parameters must be indicated. That is, an ADT definition is treated as a type-level function, so an ADT handle must be wrapped in a TypeCall node that instantiates the type-level arguments. The kind checker enforces this.
tvm::TypeData::TypeData | ( | GlobalTypeVar | header, |
Array< TypeVar > | type_vars, | ||
Array< Constructor > | constructors | ||
) |
header | the name of ADT. |
type_vars | type variables. |
constructors | constructors field. |
tvm::TypeData::TVM_DEFINE_OBJECT_REF_METHODS | ( | TypeData | , |
Type | , | ||
TypeDataNode | |||
) |