66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
/* -----------------------------------------------------------------------------
|
|
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 <RegistryMessage, RegistryListener, Registry *>, 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__
|