5#include <ChimeraTK/NDRegisterAccessor.h>
24 template<
typename UserType>
28 UserType value = 0,
size_t length = 1, AccessModeFlags accessModeFlags = AccessModeFlags{});
32 void doPostRead(TransferType ,
bool updateUserBuffer)
override;
38 [[nodiscard]]
bool mayReplaceOther(
const boost::shared_ptr<ChimeraTK::TransferElement const>&)
const override {
42 [[nodiscard]]
bool isReadOnly()
const override {
return false; }
44 [[nodiscard]]
bool isReadable()
const override {
return true; }
46 [[nodiscard]]
bool isWriteable()
const override {
return true; }
52 std::list<boost::shared_ptr<ChimeraTK::TransferElement>>
getInternalElements()
override {
return {}; }
55 if(TransferElement::_accessModeFlags.has(AccessMode::wait_for_new_data)) {
56 TransferElement::interrupt_impl(this->_readQueue);
66 template<
typename UserType>
68 :
ChimeraTK::NDRegisterAccessor<UserType>(
"UnnamedConstantAccessor", accessModeFlags), _value(length, value) {
69 ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D.resize(1);
70 ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0] =
_value;
72 if(TransferElement::_accessModeFlags.has(AccessMode::wait_for_new_data)) {
75 TransferElement::_readQueue = cppext::future_queue<void>(3);
77 TransferElement::_readQueue.push();
83 template<
typename UserType>
89 if(updateUserBuffer) {
90 ChimeraTK::NDRegisterAccessor<UserType>::buffer_2D[0] = _value;
92 this->_versionNumber = {};
93 this->_dataValidity = DataValidity::ok;
Implementation of the NDRegisterAccessor which delivers always the same value and ignors any write op...
bool mayReplaceOther(const boost::shared_ptr< ChimeraTK::TransferElement const > &) const override
std::vector< UserType > _value
bool isReadOnly() const override
bool isReadable() const override
bool doWriteTransfer(ChimeraTK::VersionNumber={}) override
void doPostRead(TransferType, bool updateUserBuffer) override
bool isWriteable() const override
void interrupt() override
std::vector< boost::shared_ptr< ChimeraTK::TransferElement > > getHardwareAccessingElements() override
void doReadTransferSynchronously() override
std::list< boost::shared_ptr< ChimeraTK::TransferElement > > getInternalElements() override
void replaceTransferElement(boost::shared_ptr< ChimeraTK::TransferElement >) override
ConstantAccessor(UserType value=0, size_t length=1, AccessModeFlags accessModeFlags=AccessModeFlags{})
InvalidityTracer application module.