+ /** 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 shared_ptr<CacheItem> ItemPtr;
+ ///
+ ItemPtr const item(support::FileName const & file) const;
+
+private:
+ /// noncopyable
+ Cache(Cache const &);
+ void operator=(Cache const &);
+
+ /** Make the c-tor, d-tor private so we can control how many objects
+ * are instantiated.
+ */
+ Cache();
+ ///
+ ~Cache();
+
+ /// Use the Pimpl idiom to hide the internals.
+ class Impl;
+ /// The pointer never changes although *pimpl_'s contents may.
+ Impl * const pimpl_;