/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __NREGISTRY__ #define __NREGISTRY__ #include "metafile/nml.h" #include "messaging/messaging.h" namespace GS { enum RegistryMessage { RegistryMsg_None = 0, ///< No message. RegistryMsg_StartKeyChangeBatch, RegistryMsg_KeyChange, RegistryMsg_EndKeyChangeBatch }; enum RegistryRValue { RegistryReturn_Ok = 0 }; // struct RegistryKeyChange { String key; RegistryKeyChange(const char *k) { key = String(k).TrimChar(';'); } }; struct Registry; /// Registry listener. struct RegistryListener { virtual RegistryRValue ProcessMessage(RegistryMessage message, const Registry *from, const void *parm) = 0; virtual ~RegistryListener() {} }; /* @short Registry. @author Emmanuel Julien (ejulien@gsworks.fr) */ struct Registry : public Messaging::Broadcaster , public NML::File { NML::Tag *CreateKey(const char *path, const Variant *value = 0, bool recursive = true); NML::Tag *CreateKey(const char *path, const Variant &value, bool recursive = true); bool DeleteKey(const char *path); /// Get the float value of a given key. float GetReal(const char *path, float default_value = 0) const; /// Get the boolean value of a given key. bool GetBool(const char *path, bool default_value = false) const; }; } // GS #endif // __NREGISTRY__