SWORD25: Convert object registries to singletons

svn-id: r53431
This commit is contained in:
Max Horn 2010-10-13 15:41:34 +00:00
parent 8f4f0d16fc
commit 9b4d41d2d2
7 changed files with 30 additions and 38 deletions

View File

@ -39,9 +39,12 @@
#include "sword25/gfx/animationtemplateregistry.h"
#include "sword25/gfx/animationtemplate.h"
namespace Sword25 {
// TODO: Destroy the singletons when closing the engine;
// even better, turn them into non-singleton members of
// e.g. Sword25Engine.
DECLARE_SINGLETON(Sword25::AnimationTemplateRegistry)
Common::ScopedPtr<AnimationTemplateRegistry> AnimationTemplateRegistry::_instancePtr;
namespace Sword25 {
void AnimationTemplateRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);

View File

@ -39,19 +39,17 @@
#include "sword25/kernel/persistable.h"
#include "sword25/kernel/objectregistry.h"
#include "common/ptr.h"
#include "common/singleton.h"
namespace Sword25 {
class AnimationTemplate;
class AnimationTemplateRegistry : public ObjectRegistry<AnimationTemplate>, public Persistable {
class AnimationTemplateRegistry :
public ObjectRegistry<AnimationTemplate>,
public Persistable,
public Common::Singleton<AnimationTemplateRegistry> {
public:
static AnimationTemplateRegistry &instance() {
if (!_instancePtr.get())
_instancePtr.reset(new AnimationTemplateRegistry);
return *_instancePtr.get();
}
virtual bool persist(OutputPersistenceBlock &writer);
virtual bool unpersist(InputPersistenceBlock &reader);
@ -59,8 +57,6 @@ public:
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
static Common::ScopedPtr<AnimationTemplateRegistry> _instancePtr;
};
} // End of namespace Sword25

View File

@ -46,6 +46,7 @@
// Includes
#include "common/array.h"
#include "common/rect.h"
#include "common/ptr.h"
#include "common/str.h"
#include "graphics/surface.h"
#include "sword25/kernel/common.h"

View File

@ -34,14 +34,15 @@
#include "sword25/gfx/renderobjectregistry.h"
#include "common/ptr.h"
// TODO: Destroy the singletons when closing the engine;
// even better, turn them into non-singleton members of
// e.g. Sword25Engine.
DECLARE_SINGLETON(Sword25::RenderObjectRegistry)
namespace Sword25 {
#define BS_LOG_PREFIX "RENDEROBJECTREGISTRY"
Common::ScopedPtr<RenderObjectRegistry> RenderObjectRegistry::_instancePtr;
void RenderObjectRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);
}

View File

@ -42,7 +42,7 @@
#include "sword25/kernel/common.h"
#include "sword25/kernel/objectregistry.h"
#include "common/ptr.h"
#include "common/singleton.h"
namespace Sword25 {
@ -56,21 +56,12 @@ class RenderObject;
// Klassendeklaration
// -----------------------------------------------------------------------------
class RenderObjectRegistry : public ObjectRegistry<RenderObject> {
public:
static RenderObjectRegistry &instance() {
if (!_instancePtr.get())
_instancePtr.reset(new RenderObjectRegistry);
return *_instancePtr.get();
}
virtual ~RenderObjectRegistry() {}
class RenderObjectRegistry :
public ObjectRegistry<RenderObject>,
public Common::Singleton<RenderObjectRegistry> {
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
static Common::ScopedPtr<RenderObjectRegistry> _instancePtr;
};
} // End of namespace Sword25

View File

@ -39,9 +39,12 @@
#include "sword25/math/regionregistry.h"
#include "sword25/math/region.h"
namespace Sword25 {
// TODO: Destroy the singletons when closing the engine;
// even better, turn them into non-singleton members of
// e.g. Sword25Engine.
DECLARE_SINGLETON(Sword25::RegionRegistry)
Common::SharedPtr<RegionRegistry> RegionRegistry::_instancePtr;
namespace Sword25 {
void RegionRegistry::logErrorLn(const char *message) const {
BS_LOG_ERRORLN(message);

View File

@ -35,7 +35,8 @@
#ifndef SWORD25_REGIONREGISTRY_H
#define SWORD25_REGIONREGISTRY_H
#include "common/ptr.h"
#include "common/singleton.h"
#include "sword25/kernel/common.h"
#include "sword25/kernel/persistable.h"
#include "sword25/kernel/objectregistry.h"
@ -44,21 +45,17 @@ namespace Sword25 {
class Region;
class RegionRegistry : public ObjectRegistry<Region>, public Persistable {
class RegionRegistry :
public ObjectRegistry<Region>,
public Persistable,
public Common::Singleton<RegionRegistry> {
public:
static RegionRegistry &instance() {
if (!_instancePtr.get()) _instancePtr = Common::SharedPtr<RegionRegistry>(new RegionRegistry());
return *_instancePtr.get();
}
virtual bool persist(OutputPersistenceBlock &writer);
virtual bool unpersist(InputPersistenceBlock &reader);
private:
virtual void logErrorLn(const char *message) const;
virtual void logWarningLn(const char *message) const;
static Common::SharedPtr<RegionRegistry> _instancePtr;
};
} // End of namespace Sword25