tvm
Public Types | Public Member Functions | Static Public Attributes | List of all members
tvm::DictAttrs Class Reference

Managed reference to DictAttrsNode. More...

#include <attrs.h>

Inheritance diagram for tvm::DictAttrs:
Collaboration diagram for tvm::DictAttrs:

Public Types

using __PtrType = std::conditional_t< DictAttrsNode::_type_mutable, DictAttrsNode *, const DictAttrsNode * >
 
using ContainerType = DictAttrsNode
 

Public Member Functions

 DictAttrs (ffi::Map< ffi::String, Any > dict={})
 Construct a DictAttrs backed by DictAttrsNode. More...
 
 DictAttrs (DictAttrs &&other) noexcept
 Move constructor that leaves the source in a defined-but-empty state rather than null, preserving the NOTNULLABLE invariant even after std::move. More...
 
DictAttrsoperator= (DictAttrs &&other) noexcept
 Move assignment that leaves the source in a defined-but-empty state rather than null, preserving the NOTNULLABLE invariant even after std::move. More...
 
 DictAttrs (const DictAttrs &other)=default
 
DictAttrsoperator= (const DictAttrs &other)=default
 
template<typename TObjectRef >
ffi::Optional< TObjectRef > GetAttr (const std::string &attr_key, ffi::Optional< TObjectRef > default_value=ffi::Optional< TObjectRef >(std::nullopt)) const
 Get a function attribute. More...
 
template<typename TObjectRef >
ffi::Optional< TObjectRef > GetAttr (const std::string &attr_key, TObjectRef default_value) const
 
bool HasNonzeroAttr (const std::string &attr_key) const
 Check whether the function has an non-zero integer attr. More...
 
 DictAttrs (::tvm::ffi::UnsafeInit tag)
 
__PtrType operator-> () const
 
__PtrType get () const
 
 TVM_DEFINE_OBJECT_REF_COW_METHOD (DictAttrsNode)
 
- Public Member Functions inherited from tvm::Attrs
 TVM_FFI_DEFINE_OBJECT_REF_METHODS_NULLABLE (Attrs, ffi::ObjectRef, AttrsNode)
 

Static Public Attributes

static constexpr bool _type_is_nullable = false
 

Detailed Description

Managed reference to DictAttrsNode.

See also
DictAttrsNode.
Note
DictAttrs is NOTNULLABLE: every instance must hold a backing DictAttrsNode. The class enforces this end-to-end by:
  • the default constructor (no args) allocating an empty backing,
  • the copy/move ctors and assignments leaving the moved-from instance in a defined-but-empty state rather than null,
  • the FFI type traits rejecting None at deserialization boundaries (since _type_is_nullable == false), and
  • the FFI lambda for ir.IRModule explicitly normalizing a missing/None attrs argument to DictAttrs() before forwarding to the C++ constructor. Callers (including third-party code via templates like WithAttr) can therefore rely on attrs->dict being safe to dereference without a .defined() guard.

Member Typedef Documentation

◆ __PtrType

using tvm::DictAttrs::__PtrType = std::conditional_t<DictAttrsNode::_type_mutable, DictAttrsNode*, const DictAttrsNode*>

◆ ContainerType

Constructor & Destructor Documentation

◆ DictAttrs() [1/4]

tvm::DictAttrs::DictAttrs ( ffi::Map< ffi::String, Any >  dict = {})
inlineexplicit

Construct a DictAttrs backed by DictAttrsNode.

The no-argument form constructs an empty (but always defined) DictAttrs.

Parameters
dictThe attributes.

◆ DictAttrs() [2/4]

tvm::DictAttrs::DictAttrs ( DictAttrs &&  other)
inlinenoexcept

Move constructor that leaves the source in a defined-but-empty state rather than null, preserving the NOTNULLABLE invariant even after std::move.

◆ DictAttrs() [3/4]

tvm::DictAttrs::DictAttrs ( const DictAttrs other)
default

◆ DictAttrs() [4/4]

tvm::DictAttrs::DictAttrs ( ::tvm::ffi::UnsafeInit  tag)
inlineexplicit

Member Function Documentation

◆ get()

__PtrType tvm::DictAttrs::get ( ) const
inline

◆ GetAttr() [1/2]

template<typename TObjectRef >
ffi::Optional<TObjectRef> tvm::DictAttrs::GetAttr ( const std::string &  attr_key,
ffi::Optional< TObjectRef >  default_value = ffi::Optional<TObjectRef>(std::nullopt) 
) const
inline

Get a function attribute.

Parameters
attr_keyThe attribute key.
default_valueThe default value if the key does not exist, defaults to nullptr.
Returns
The result
Template Parameters
TOBjectRefthe expected object type.
Exceptions
Errorif the key exists but the value does not match TObjectRef
void GetAttrExample(const BaseFunc& f) {
auto value = f->attrs.GetAttr<int64_t>("AttrKey", 0);
}

◆ GetAttr() [2/2]

template<typename TObjectRef >
ffi::Optional<TObjectRef> tvm::DictAttrs::GetAttr ( const std::string &  attr_key,
TObjectRef  default_value 
) const
inline

◆ HasNonzeroAttr()

bool tvm::DictAttrs::HasNonzeroAttr ( const std::string &  attr_key) const
inline

Check whether the function has an non-zero integer attr.

This function can be used to check whether an optional attribute mark(e.g. inline) exists.

Parameters
attr_keyThe key to the attribute.
Returns
The check result.
void HasNonzeroAttrExample(const BaseFunc& f) {
if (f->HasNonzeroAttr(attr::kInline)) {
// inline the function.
}
}

◆ operator->()

__PtrType tvm::DictAttrs::operator-> ( ) const
inline

◆ operator=() [1/2]

DictAttrs& tvm::DictAttrs::operator= ( const DictAttrs other)
default

◆ operator=() [2/2]

DictAttrs& tvm::DictAttrs::operator= ( DictAttrs &&  other)
inlinenoexcept

Move assignment that leaves the source in a defined-but-empty state rather than null, preserving the NOTNULLABLE invariant even after std::move.

◆ TVM_DEFINE_OBJECT_REF_COW_METHOD()

tvm::DictAttrs::TVM_DEFINE_OBJECT_REF_COW_METHOD ( DictAttrsNode  )

Member Data Documentation

◆ _type_is_nullable

constexpr bool tvm::DictAttrs::_type_is_nullable = false
staticconstexpr

The documentation for this class was generated from the following file: