6#ifndef RIME_CONFIG_COW_REF_H_
7#define RIME_CONFIG_COW_REF_H_
22 return container ?
Read(container,
key_) :
nullptr;
49 DLOG(INFO) <<
"creating node: " << key;
52 DLOG(INFO) <<
"copy on write: " << key;
#define DLOG(severity)
Definition no_logging.h:53
std::shared_ptr< T > an
Definition common.h:60
an< X > As(const an< Y > &ptr)
Definition common.h:67
an< ConfigItemRef > Cow(an< ConfigItemRef > parent, string key)
Definition config_cow_ref.h:82
an< T > New(Args &&... args)
Definition common.h:77
ConfigCowRef(an< ConfigItemRef > parent, string key)
Definition config_cow_ref.h:18
an< ConfigItemRef > parent_
Definition config_cow_ref.h:40
an< ConfigItem > GetItem() const override
Definition config_cow_ref.h:20
static void Write(const an< T > &container, const string &key, an< ConfigItem > value)
static an< ConfigItem > Read(const an< T > &container, const string &key)
void SetItem(an< ConfigItem > item) override
Definition config_cow_ref.h:24
string key_
Definition config_cow_ref.h:41
static an< T > CopyOnWrite(const an< T > &container, const string &key)
Definition config_cow_ref.h:46
bool copied_
Definition config_cow_ref.h:42
static size_t ResolveListIndex(an< ConfigItem > list, const string &key, bool read_only=false)
Definition config_data.cc:113
static bool IsListItemReference(const string &key)
Definition config_data.cc:98
ConfigItemRef(ConfigData *data)
Definition config_types.h:128