8#include <boost/range/any_range.hpp>
9#include <boost/shared_ptr.hpp>
13 class BackendRegisterCatalogueBase;
14 class const_RegisterCatalogueImplIterator;
65 explicit const_iterator(std::unique_ptr<const_RegisterCatalogueImplIterator> it);
83 std::unique_ptr<const_RegisterCatalogueImplIterator>
_impl;
91 std::unique_ptr<BackendRegisterCatalogueBase>
_impl;
111 const std::unique_ptr<const_RegisterCatalogueImplIterator>& rightHandSide)
const = 0;
117 [[nodiscard]]
virtual std::unique_ptr<const_RegisterCatalogueImplIterator>
clone()
const = 0;
Pure virtual implementation base class for the register catalogue.
DeviceBackend-independent register description.
Const iterator for iterating through the registers in the catalogue.
const_iterator & operator=(const_iterator &&other) noexcept
bool operator!=(const const_iterator &rightHandSide) const
std::unique_ptr< const_RegisterCatalogueImplIterator > _impl
const_iterator(const_iterator &&other) noexcept
const BackendRegisterInfoBase * operator->()
const_iterator & operator--()
bool operator==(const const_iterator &rightHandSide) const
const_iterator & operator=(const const_iterator &other)
const BackendRegisterInfoBase & operator*()
const_iterator & operator++()
Catalogue of register information.
RegisterInfo getRegister(const RegisterPath ®isterPathName) const
Get register information for a given full path name.
std::unique_ptr< BackendRegisterCatalogueBase > _impl
size_t getNumberOfRegisters() const
Get number of registers in the catalogue.
bool hasRegister(const RegisterPath ®isterPathName) const
Check if register with the given path name exists.
HiddenRange hiddenRegisters() const
Returns non-owning range of all hidden registers in the catalogue.
RegisterCatalogue & operator=(const RegisterCatalogue &other)
const_iterator end() const
const_iterator begin() const
Return iterators for iterating through the registers in the catalogue.
const BackendRegisterCatalogueBase & getImpl() const
Return a const reference to the implementation object.
Class to store a register path name.
Virtual base class for the catalogue const iterator.
virtual std::unique_ptr< const_RegisterCatalogueImplIterator > clone() const =0
Create copy of the iterator.
virtual ~const_RegisterCatalogueImplIterator()=default
virtual void increment()=0
virtual void decrement()=0
virtual bool isEqual(const std::unique_ptr< const_RegisterCatalogueImplIterator > &rightHandSide) const =0
virtual const BackendRegisterInfoBase * get()=0
boost::any_range< BackendRegisterInfoBase, boost::forward_traversal_tag, const BackendRegisterInfoBase &, std::ptrdiff_t > HiddenRange
Forward range with type-erasure, used to get a range of hidden registers.