37 : _id(id), _source_info(source_info)
39 if (_id.find(
':') != std::string::npos) {
40 throw uhd::value_error(
41 "Property ID `" + _id +
"' contains invalid character!");
79 return static_cast<uint8_t
>(_access_mode) & 0x1;
85 return static_cast<uint8_t
>(_access_mode) & 0x2;
127 virtual void mark_clean() = 0;
140 const std::string _id;
154template <
typename data_t>
164 const std::string&
id,
const data_t& value,
const res_source_info& source_info);
177 return _data.is_dirty();
192 if (!is_type_equal(rhs)) {
200 return std::unique_ptr<property_base_t>(
210 std::string(
"Property ") +
get_id() +
":" + ex.what());
220 void set(
const data_t& value)
226 if (_data.get() != value) {
229 +
"' with a new value after it was locked!");
233 +
get_id() +
"' without access privileges!");
242 if (!_data.is_dirty()) {
245 +
"' with dirty flag after it was locked!");
249 +
get_id() +
"' without access privileges!");
263 +
"' before it was initialized!");
269 +
"' without access privileges!");
272 operator const data_t&()
const
289 void mark_clean()
override
294 void forward(property_base_t* next_prop)
override
298 std::string(
"Unable to forward invalid property ") + get_id());
300 property_t<data_t>* prop_ptr =
dynamic_cast<property_t<data_t>*
>(next_prop);
301 if (prop_ptr ==
nullptr) {
303 + next_prop->get_id() +
" to the same type as property "
307 prop_ptr->set(get());
310 bool is_type_equal(property_base_t* other_prop)
const override
312 return dynamic_cast<property_t<data_t>*
>(other_prop) !=
nullptr;
315 dirty_tracked<data_t> _data;
const std::string & get_id() const
Gets the ID (name) of this property.
Definition property.hpp:51
virtual void force_dirty()=0
const res_source_info & get_src_info() const
Return the source info for this property.
Definition property.hpp:57
virtual bool equal(property_base_t *rhs) const =0
Return true if rhs has the same type and value.
access_t
Definition property.hpp:28
@ RO
Read-Only.
Definition property.hpp:30
@ RW
Read-Write.
Definition property.hpp:31
@ NONE
Neither reading nor writing to this property is permitted.
Definition property.hpp:29
@ RWLOCKED
Definition property.hpp:32
property_base_t(const std::string &id, const res_source_info &source_info)
Definition property.hpp:36
virtual void set_from_str(const std::string &new_val_str)=0
friend class prop_accessor_t
Definition property.hpp:124
virtual bool is_valid() const =0
Query this property's valid flag.
virtual std::unique_ptr< property_base_t > clone(res_source_info)
Create a copy of this property.
Definition property.hpp:106
access_t get_access_mode() const
Return the current access mode.
Definition property.hpp:89
virtual ~property_base_t()
Definition property.hpp:45
bool write_access_granted() const
Returns true if this property can be written to.
Definition property.hpp:83
bool read_access_granted() const
Returns true if this property can be read.
Definition property.hpp:77
virtual bool is_dirty() const =0
Query this property's dirty flag.
const data_t & get() const
Get the value of this property.
Definition property.hpp:258
void set(const data_t &value)
Set the value of this property.
Definition property.hpp:220
bool is_dirty() const override
Returns the dirty state of this property.
Definition property.hpp:175
property_t(const std::string &id, data_t &&value, const res_source_info &source_info)
Definition property.ipp:10
property_t< data_t > & operator=(const data_t &value)
Definition property.hpp:282
bool is_valid() const override
Query this property's valid flag.
Definition property.hpp:185
void set_from_str(const std::string &new_val_str) override
Definition property.hpp:204
data_t value_type
We want to be good C++ citizens.
Definition property.hpp:159
bool operator==(const data_t &rhs)
Definition property.hpp:277
bool equal(property_base_t *rhs) const override
Return true if rhs has the same type and value.
Definition property.hpp:190
void force_dirty() override
Definition property.hpp:237
std::unique_ptr< property_base_t > clone(res_source_info new_src_info) override
Create a copy of this property.
Definition property.hpp:198
property_t(const property_t< data_t > &prop)=default
#define UHD_API_HEADER
Definition config.h:88
#define UHD_API
Definition config.h:87
data_t from_str(const std::string &val)
Generic cast-from-string function.
Definition cast.hpp:70
Definition actions.hpp:25
Definition build_info.hpp:12
Definition exception.hpp:168
Definition exception.hpp:157
Definition exception.hpp:281
Definition res_source_info.hpp:18
Definition exception.hpp:132
Definition exception.hpp:96