#include "LString.h"
#include "GraphicsCacheItem.h"
-#include "support/utility.hpp"
+#include <boost/utility.hpp>
+#include <boost/smart_ptr.hpp>
+
+class GraphicsCacheItem;
/** GraphicsCache is the manager of the image cache.
It is responsible of create the GraphicsCacheItem's and maintain them.
GraphicsCache is a singleton class, there should be only one instance of
it at any moment.
*/
-class GraphicsCache : public noncopyable {
+class GraphicsCache : boost::noncopyable {
public:
/// Get the instance of the class.
- static GraphicsCache * getInstance();
+ static GraphicsCache & getInstance();
+ /// Public destructor due to compiler warnings.
+ ~GraphicsCache();
+
+ typedef boost::shared_ptr<GraphicsCacheItem> shared_ptr_item;
/// Add a file to the cache.
- GraphicsCacheItem * addFile(string const & filename);
+ shared_ptr_item addFile(string const & filename);
private:
/// Remove a cache item if it's count has gone to zero.
/// Private c-tor so we can control how many objects are instantiated.
GraphicsCache() {}
- /// Private d-tor so that no-one will destroy us.
- ~GraphicsCache();
-
- /// Holder of the single instance of the class.
- static GraphicsCache * singleton;
///
- typedef std::map<string, GraphicsCacheItem *> CacheType;
+ typedef std::map<string, shared_ptr_item> CacheType;
///
CacheType cache;