17 namespace uhd { 
namespace rfnoc {
    20 class prop_accessor_t;
    37         : _id(id), _source_info(source_info)
    39         if (_id.find(
':') != std::string::npos) {
    41                 "Property ID `" + _id + 
"' contains invalid character!");
    66     virtual bool is_dirty() 
const = 0;
    72     virtual bool is_valid() 
const = 0;
    77         return static_cast<uint8_t
>(_access_mode) & 0x1;
    83         return static_cast<uint8_t
>(_access_mode) & 0x2;
   108     virtual void force_dirty() = 0;
   118     virtual void set_from_str(
const std::string& new_val_str) = 0;
   121     friend class prop_accessor_t;
   124     virtual void mark_clean() = 0;
   136     const std::string _id;
   149 template <
typename data_t>
   159         const std::string& 
id, 
const data_t& value, 
const res_source_info& source_info);
   171         return _data.is_dirty();
   185         if (!is_type_equal(rhs)) {
   193         return std::unique_ptr<property_base_t>(
   200             set(uhd::cast::from_str<data_t>(new_val_str));
   203                 std::string(
"Property ") + get_id() + 
":" + ex.what());
   215     void set(
const data_t& value)
   217         if (write_access_granted()) {
   220         } 
else if (get_access_mode() == RWLOCKED) {
   221             if (_data.get() != value) {
   223                                          + get_id() + 
"@" + get_src_info().to_string()
   224                                          + 
"' with a new value after it was locked!");
   228                                     + get_id() + 
"' without access privileges!");
   234         if (write_access_granted()) {
   236         } 
else if (get_access_mode() == RWLOCKED) {
   237             if (!_data.is_dirty()) {
   240                                          + 
"' with dirty flag after it was locked!");
   244                                     + get_id() + 
"' without access privileges!");
   252     const data_t& 
get() 
const   256                                     + get_id() + 
"@" + get_src_info().to_string()
   257                                     + 
"' before it was initialized!");
   259         if (read_access_granted()) {
   263                                 + 
"' without access privileges!");
   266     operator const data_t&() 
const   283     void mark_clean()
 override   292                 std::string(
"Unable to forward invalid property ") + get_id());
   295         if (prop_ptr == 
nullptr) {
   297                                   + next_prop->
get_id() + 
" to the same type as property "   301         prop_ptr->
set(
get());
 property_t< data_t > & operator=(const data_t &value)
Definition: property.hpp:276
 
bool write_access_granted() const
Returns true if this property can be written to. 
Definition: property.hpp:81
 
const data_t & get() const
Get the value of this property. 
Definition: property.hpp:252
 
const std::string & get_id() const
Gets the ID (name) of this property. 
Definition: property.hpp:51
 
Definition: exception.hpp:156
 
size_t value_type
We want to be good C++ citizens. 
Definition: property.hpp:154
 
bool is_valid() const override
Query this property's valid flag. 
Definition: property.hpp:178
 
const res_source_info & get_src_info() const
Return the source info for this property. 
Definition: property.hpp:57
 
Definition: exception.hpp:131
 
#define UHD_API_HEADER
Definition: config.h:88
 
property_base_t(const std::string &id, const res_source_info &source_info)
Definition: property.hpp:36
 
Definition: exception.hpp:107
 
access_t get_access_mode() const
Return the current access mode. 
Definition: property.hpp:87
 
bool operator==(const data_t &rhs)
Definition: property.hpp:271
 
Neither reading nor writing to this property is permitted. 
Definition: property.hpp:29
 
bool equal(property_base_t *rhs) const override
Return true if rhs has the same type and value. 
Definition: property.hpp:183
 
Definition: build_info.hpp:12
 
Definition: exception.hpp:167
 
void force_dirty() override
Definition: property.hpp:232
 
bool is_dirty() const override
Returns the dirty state of this property. 
Definition: property.hpp:169
 
access_t
Definition: property.hpp:28
 
Definition: dirty_tracked.hpp:24
 
Definition: property.hpp:150
 
std::unique_ptr< property_base_t > clone(res_source_info new_src_info) override
Create a copy of this property. 
Definition: property.hpp:191
 
virtual std::unique_ptr< property_base_t > clone(res_source_info)
Create a copy of this property. 
Definition: property.hpp:103
 
bool read_access_granted() const
Returns true if this property can be read. 
Definition: property.hpp:75
 
Definition: res_source_info.hpp:17
 
virtual ~property_base_t()
Definition: property.hpp:45
 
#define UHD_API
Definition: config.h:87
 
Definition: exception.hpp:280
 
Definition: property.hpp:25
 
Definition: exception.hpp:95
 
void set(const data_t &value)
Returns the source info for the property. 
Definition: property.hpp:215
 
void set_from_str(const std::string &new_val_str) override
Definition: property.hpp:197