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