|
dxd - dynax driver framework 2.7.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 | |
| 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 |
| 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 value | try |
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.
|
inlinenoexcept |
| cf::tree< derived_t >::dx_catchall_rethrow | ( | ) |
| cf::tree< derived_t >::dx_catchall_rethrow | ( | ) |
value_t is a cf POD/bridging type (see enabled() below) or a foreign type convertible from a CF pointer (e.g. cf::dictionary<>, routed via the third branch below); returns false for an absent self, throwing only for a genuinely malformed stored value.
|
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 value cf::tree< derived_t >::try |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |