// Key-value store #include "foundation/rw_interface.h" #include #include #include namespace hg { class KeyValueStore { public: bool Open(const Reader &ir, const Handle &h); bool Open(const char *path); bool Save(const char *path); bool Get(const std::string &key, std::string &value) const; bool Get(const std::string &key, int &value) const; bool Get(const std::string &key, float &value) const; bool Get(const std::string &key, bool &value) const; bool Set(const std::string &key, const std::string &value); bool Set(const std::string &key, const char *value); bool Set(const std::string &key, int value); bool Set(const std::string &key, float value); bool Set(const std::string &key, bool value); bool Clear(const std::string &key); // Return all keys storing a particular value. std::vector FindValue(const std::string &value) const; void PushPrefix(const std::string &prefix); void PopPrefix(); void Close(); private: std::map kvs; void CommitPrefix(); std::vector prefix_stack; std::string prefix; }; } // namespace hg