24 #ifndef TVM_RUNTIME_CONTAINER_ADT_H_ 25 #define TVM_RUNTIME_CONTAINER_ADT_H_ 45 static constexpr
const char*
_type_key =
"runtime.ADT";
52 size_t GetSize()
const {
return size; }
61 template <
typename Iterator>
62 void Init(Iterator begin, Iterator end) {
63 size_t num_elems = std::distance(begin, end);
66 for (
size_t i = 0; i < num_elems; ++i) {
86 ADT(int32_t tag, std::vector<ObjectRef> fields) :
ADT(tag, fields.begin(), fields.end()){};
95 template <
typename Iterator>
96 ADT(int32_t tag, Iterator begin, Iterator end) {
97 size_t num_elems = std::distance(begin, end);
98 auto ptr = make_inplace_array_object<ADTObj, ObjectRef>(num_elems);
100 ptr->Init(begin, end);
101 data_ = std::move(ptr);
110 ADT(int32_t tag, std::initializer_list<ObjectRef> init) :
ADT(tag, init.begin(), init.end()){};
123 int32_t
tag()
const {
return operator->()->tag; }
128 size_t size()
const {
return operator->()->size; }
137 template <
typename... Args>
139 return ADT(0, std::forward<Args>(args)...);
146 #endif // TVM_RUNTIME_CONTAINER_ADT_H_ ADT(int32_t tag, std::initializer_list< ObjectRef > init)
construct an ADT object reference.
Definition: adt.h:110
uint32_t size
Number of fields in the ADT object.
Definition: adt.h:41
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
static constexpr const uint32_t _type_index
Definition: adt.h:44
ADT(int32_t tag, Iterator begin, Iterator end)
construct an ADT object reference.
Definition: adt.h:96
An object representing a structure or enumeration.
Definition: adt.h:36
Base utilities for common POD(plain old data) container types.
base class of all object containers.
Definition: object.h:167
int32_t tag() const
Return the ADT tag.
Definition: adt.h:123
Base template for classes with array like memory layout.
Definition: base.h:100
size_t size() const
Return the number of fields.
Definition: adt.h:128
ADT(int32_t tag, std::vector< ObjectRef > fields)
construct an ADT object reference.
Definition: adt.h:86
TVM_DECLARE_FINAL_OBJECT_INFO(ADTObj, Object)
#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)
Definition: object.h:713
const ObjectRef & operator[](size_t idx) const
Access element at index.
Definition: adt.h:118
Base class of all object reference.
Definition: object.h:511
static ADT Tuple(Args &&... args)
Construct a tuple object.
Definition: adt.h:138
reference to algebraic data type objects.
Definition: adt.h:78
void EmplaceInit(size_t idx, Args &&... args)
Construct a value in place with the arguments.
Definition: base.h:149
int32_t tag
The tag representing the constructor used.
Definition: adt.h:39
static constexpr const char * _type_key
Definition: adt.h:45
friend class ADT
Definition: adt.h:73