16#ifndef SIMICS_HIERARCHICAL_OBJECT_H
17#define SIMICS_HIERARCHICAL_OBJECT_H
30class RegisterInterface;
34constexpr static const char &SEPARATOR =
'.';
68 std::string_view
name);
78 static_assert(std::is_base_of<MappableConfObject, T>::value,
79 "T needs be a MappableConfObject");
80 return dynamic_cast<T *
>(
dev_obj());
85 std::string_view
name()
const override;
101 void ensureBankPortExists(
const std::string &
bank_name);
104 std::string hierarchical_name_;
An interface implemented by a Simics bank.
Definition: bank-interface.h:47
Represents Simics C type conf_object_t.
Definition: conf-object.h:38
Definition: field-interface.h:34
Interface for hierarchical objects used in bank register modeling.
Definition: hierarchical-object-interface.h:49
Base class for Bank, Register, and Field classes.
Definition: hierarchical-object.h:44
T * dev_ptr()
Definition: hierarchical-object.h:77
static const uint64_t Register_Read
Log group ID for Register_Read and Register_Write is fixed.
Definition: hierarchical-object.h:71
HierarchicalObject(HierarchicalObject &&rhs) noexcept
static const uint64_t Register_Write_Exception
Definition: hierarchical-object.h:74
HierarchicalObject & operator=(const HierarchicalObject &)=delete
virtual ~HierarchicalObject()
static const uint64_t Register_Read_Exception
Definition: hierarchical-object.h:73
std::string_view bank_name() const override
BankInterface * lookup_bank(const std::string &name) const override
static const uint64_t Register_Write
Definition: hierarchical-object.h:72
static std::string_view::size_type level_of_hierarchical_name(std::string_view name)
RegisterInterface * lookup_register(const std::string &name) const override
ConfObjectRef bank_obj_ref() const override
HierarchicalObject(MappableConfObject *dev_obj, const std::string &name)
Constructor for HierarchicalObject.
FieldInterface * lookup_field(const std::string &name) const override
HierarchicalObject & operator=(HierarchicalObject &&rhs) noexcept
static bool is_valid_hierarchical_name(std::string_view name)
std::string_view name() const override
Level hierarchy_level() const override
std::string_view parent_name() const override
const std::string & description() const override
void set_description(std::string_view desc) override
MappableConfObject * dev_obj() const override
HierarchicalObject(const HierarchicalObject &)=delete
const std::string & hierarchical_name() const override
Definition: mappable-conf-object.h:134
Definition: register-interface.h:37
Definition: after-bank.h:33
Level
Enum representing the hierarchy level of an object.
Definition: hierarchical-object-interface.h:37