tvm
|
Path to an object from some root object. More...
#include <object_path.h>
Public Member Functions | |
Optional< ObjectPath > | GetParent () const |
Get the parent path. More... | |
int32_t | Length () const |
Get the length of the path. More... | |
ObjectPath | GetPrefix (int32_t length) const |
Get a path prefix of the given length. More... | |
bool | IsPrefixOf (const ObjectPath &other) const |
Check if this path is a prefix of another path. More... | |
bool | PathsEqual (const ObjectPath &other) const |
Check if two paths are equal. More... | |
ObjectPath | Attr (const char *attr_key) const |
Extend this path with access to an object attribute. More... | |
ObjectPath | Attr (Optional< String > attr_key) const |
Extend this path with access to an object attribute. More... | |
ObjectPath | ArrayIndex (int32_t index) const |
Extend this path with access to an array element. More... | |
ObjectPath | MissingArrayElement (int32_t index) const |
Extend this path with access to a missing array element. More... | |
ObjectPath | MapValue (ObjectRef key) const |
Extend this path with access to a map value. More... | |
ObjectPath | MissingMapEntry () const |
Extend this path with access to a missing map entry. More... | |
TVM_DECLARE_BASE_OBJECT_INFO (ObjectPathNode, Object) | |
Public Member Functions inherited from tvm::runtime::Object | |
uint32_t | type_index () const |
std::string | GetTypeKey () const |
size_t | GetTypeKeyHash () const |
template<typename TargetType > | |
bool | IsInstance () const |
bool | unique () const |
Object () | |
Object (const Object &other) | |
Object (Object &&other) | |
Object & | operator= (const Object &other) |
Object & | operator= (Object &&other) |
Static Public Attributes | |
static constexpr const char * | _type_key = "ObjectPath" |
Static Public Attributes inherited from tvm::runtime::Object | |
static constexpr const char * | _type_key = "runtime.Object" |
static constexpr bool | _type_final = false |
static constexpr uint32_t | _type_child_slots = 0 |
static constexpr bool | _type_child_slots_can_overflow = true |
static constexpr bool | _type_has_method_visit_attrs = true |
static constexpr bool | _type_has_method_sequal_reduce = false |
static constexpr bool | _type_has_method_shash_reduce = false |
static constexpr uint32_t | _type_index = TypeIndex::kDynamic |
Protected Member Functions | |
ObjectPathNode (const ObjectPathNode *parent) | |
const ObjectPathNode * | ParentNode () const |
virtual bool | LastNodeEqual (const ObjectPathNode *other) const =0 |
virtual std::string | LastNodeString () const =0 |
Protected Member Functions inherited from tvm::runtime::Object | |
void | IncRef () |
developer function, increases reference counter. More... | |
void | DecRef () |
developer function, decrease reference counter. More... | |
Friends | |
class | ObjectPath |
std::string | GetObjectPathRepr (const ObjectPathNode *node) |
Additional Inherited Members | |
Public Types inherited from tvm::runtime::Object | |
typedef void(* | FDeleter) (Object *self) |
Object deleter. More... | |
using | RefCounterType = std::atomic< int32_t > |
Static Public Member Functions inherited from tvm::runtime::Object | |
static std::string | TypeIndex2Key (uint32_t tindex) |
Get the type key of the corresponding index from runtime. More... | |
static size_t | TypeIndex2KeyHash (uint32_t tindex) |
Get the type key hash of the corresponding index from runtime. More... | |
static uint32_t | TypeKey2Index (const std::string &key) |
Get the type index of the corresponding key from runtime. More... | |
static uint32_t | _GetOrAllocRuntimeTypeIndex () |
static uint32_t | RuntimeTypeIndex () |
Static Protected Member Functions inherited from tvm::runtime::Object | |
static uint32_t | GetOrAllocRuntimeTypeIndex (const std::string &key, uint32_t static_tindex, uint32_t parent_tindex, uint32_t type_child_slots, bool type_child_slots_can_overflow) |
Get the type index using type key. More... | |
Protected Attributes inherited from tvm::runtime::Object | |
uint32_t | type_index_ {0} |
Type index(tag) that indicates the type of the object. More... | |
RefCounterType | ref_counter_ {0} |
The internal reference counter. More... | |
FDeleter | deleter_ = nullptr |
deleter of this object to enable customized allocation. If the deleter is nullptr, no deletion will be performed. The creator of the object must always set the deleter field properly. More... | |
Path to an object from some root object.
Motivation:
Same IR node object can be referenced in several different contexts inside a larger IR object. For example, a variable could be referenced in several statements within a block.
This makes it impossible to use an object pointer to uniquely identify a "location" within the larger IR object for error reporting purposes. The ObjectPath class addresses this problem by serving as a unique "locator".
|
explicitprotected |
ObjectPath tvm::ObjectPathNode::ArrayIndex | ( | int32_t | index | ) | const |
Extend this path with access to an array element.
ObjectPath tvm::ObjectPathNode::Attr | ( | const char * | attr_key | ) | const |
Extend this path with access to an object attribute.
ObjectPath tvm::ObjectPathNode::Attr | ( | Optional< String > | attr_key | ) | const |
Extend this path with access to an object attribute.
Optional<ObjectPath> tvm::ObjectPathNode::GetParent | ( | ) | const |
Get the parent path.
ObjectPath tvm::ObjectPathNode::GetPrefix | ( | int32_t | length | ) | const |
Get a path prefix of the given length.
Provided length
must not exceed the Length()
of this path.
bool tvm::ObjectPathNode::IsPrefixOf | ( | const ObjectPath & | other | ) | const |
Check if this path is a prefix of another path.
The prefix is not strict, i.e. a path is considered a prefix of itself.
|
protectedpure virtual |
Compares just the last node of the path, without comparing the whole path.
Implemented in tvm::MissingMapEntryPathNode, tvm::MapValuePathNode, tvm::MissingArrayElementPathNode, tvm::ArrayIndexPathNode, tvm::UnknownAttributeAccessPathNode, tvm::AttributeAccessPathNode, and tvm::RootPathNode.
|
protectedpure virtual |
int32_t tvm::ObjectPathNode::Length | ( | ) | const |
Get the length of the path.
For example, the path returned by ObjectPath::Root()
has length 1.
ObjectPath tvm::ObjectPathNode::MapValue | ( | ObjectRef | key | ) | const |
Extend this path with access to a map value.
ObjectPath tvm::ObjectPathNode::MissingArrayElement | ( | int32_t | index | ) | const |
Extend this path with access to a missing array element.
ObjectPath tvm::ObjectPathNode::MissingMapEntry | ( | ) | const |
Extend this path with access to a missing map entry.
|
protected |
bool tvm::ObjectPathNode::PathsEqual | ( | const ObjectPath & | other | ) | const |
Check if two paths are equal.
tvm::ObjectPathNode::TVM_DECLARE_BASE_OBJECT_INFO | ( | ObjectPathNode | , |
Object | |||
) |
|
friend |
|
friend |
|
staticconstexpr |