-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() {}
-
+ /// Add a graphics file to the cache.
+ void add(support::FileName const & file, support::FileName const & doc_file) const;
+
+ /// Remove a file from the cache.
+ void remove(support::FileName const & file) const;
+
+ /// Returns \c true if the file is in the cache.
+ bool inCache(support::FileName const & file) const;
+
+ /** Get the cache item associated with file.
+ * Returns an empty container if there is no such item.
+ *
+ * IMPORTANT: whatever uses an image must make a local copy of this
+ * ItemPtr. The shared_ptr<>::use_count() function is
+ * used to ascertain whether or not to remove the item from the cache
+ * when remove(file) is called.
+ *
+ * You have been warned!
+ */
+ typedef std::shared_ptr<CacheItem> ItemPtr;