|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
dx::key_value_tree<derived_t> contract (dxd/interface/dx_key_value_tree.h), implemented once for every CF-backed preference store (cf::_preference, sc::_preference, dx::coreaudio::server::_preference) - inherit from this (CRTP: class _preference: public cf::tree<_preference>) instead of reimplementing it. More...
#include <cf_tree.h>
Public Member Functions | |
| catch (...) | |
| dx_catchall_rethrow () template< typename container_t | |
| dx_catchall_rethrow () template< typename self_t > static size_t size(const self_t &self) try | |
| dx_catchall_rethrow () template< typename self_t > static void assign_property(const self_t &self | |
| dx_catchall_rethrow () template< typename self_t > static void purge(const self_t &self) noexcept try | |
| dx_catchall_rethrow () template< typename value_t | |
| dx_catchall_rethrow () template< typename value_t > static const expr bool enabled() | |
Static Public Member Functions | |
| static self_t void | assign (const self_t &self, const value_t &value) try |
| static self_t container_t | children (const self_t &self) try |
| ::CFPropertyListRef ::CFPropertyListRef static self_t bool | fetch (const self_t &self, value_t &value) try |
| template<typename self_t> | |
| static bool | nested (const self_t &self) try |
| template<typename self_t> | |
| static ::CFPropertyListRef | property_list (const self_t &self) try |
Public Attributes | |
| ::CFPropertyListRef ::CFPropertyListRef | baseline |
| ::CFPropertyListRef | value |
dx::key_value_tree<derived_t> contract (dxd/interface/dx_key_value_tree.h), implemented once for every CF-backed preference store (cf::_preference, sc::_preference, dx::coreaudio::server::_preference) - inherit from this (CRTP: class _preference: public cf::tree<_preference>) instead of reimplementing it.
derived_t only ever has to provide the 10 position-only primitives below - operating on self's own key alone (empty meaning the whole domain, or, for a derived_t that documents no root support, throwing), never the parent chain:
Everything else - resolving self's whole parent chain into the entire nested CFPropertyListRef subtree rooted at self - is identical for every CF-backed store and lives here, once (property_list()/assign_property(), plus size()/children() below). These reach derived_t's own, non-recursive primitives via self.derived_t::operator X(), never plain self.operator X(): dx::key_value_tree<derived_t> redeclares operator bool()/operator=/ operator value_t()/erase()/container()/size() itself (folding in this same parent-chain resolution), hiding those names inherited from derived_t - a plain unqualified access would otherwise recurse into the wrong (derived, chain-resolving) version instead of derived_t's own.
|
inlinestatic |
|
inline |
|
inlinestatic |
| cf::tree< derived_t >::dx_catchall_rethrow | ( | ) |
|
inline |
| cf::tree< derived_t >::dx_catchall_rethrow | ( | ) | const & |
downward write-back mirroring property_list()'s upward read, creating ancestor dictionaries as needed. baseline is the parent value this write's own value was computed from (passed down from the caller's own property_list() read) - at the root, a mismatch against the current stored value means a concurrent writer raced this one, and dx::busy is raised so assign()/purge() retry against fresh state.
|
inlinenoexcept |
| cf::tree< derived_t >::dx_catchall_rethrow | ( | ) |
|
inline |
mirrors fetch<>'s supported value_t set, for key_value_tree_enabled's SFINAE (dx_key_value_tree.h) - cf's own POD/bridging or CFPropertyListRef-constructible types only.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
| ::CFPropertyListRef ::CFPropertyListRef cf::tree< derived_t >::baseline |
| ::CFPropertyListRef cf::tree< derived_t >::value |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |