#ifndef _AS68HC11_CACHEITEM_HPP_ #define _AS68HC11_CACHEITEM_HPP_ #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif template class CacheItem { public: CacheItem(void); CacheItem(const CacheItem &someCacheItem); virtual ~CacheItem(); CacheItem &operator=(const CacheItem &someCacheItem); WORD operator==(const CacheItem &someCacheItem)const; const SmartPointer &cacheItem(void)const; void cacheItem(const SmartPointer &cacheItem); const T &cacheExtraInfo(void)const; void cacheExtraInfo(const T &cacheExtraInfo); private: SmartPointer mCacheItem; T mCacheExtraInfo; }; template inline CacheItem::CacheItem(void) { } template inline CacheItem::CacheItem(const CacheItem &someCacheItem) { *this=someCacheItem; } template inline CacheItem::~CacheItem() { } template inline CacheItem &CacheItem::operator=(const CacheItem &someCacheItem) { mCacheItem=someCacheItem.mCacheItem; mCacheExtraInfo=someCacheItem.mCacheExtraInfo; return *this; } template inline WORD CacheItem::operator==(const CacheItem &someCacheItem)const { return (mCacheItem==someCacheItem.mCacheItem&& mCacheExtraInfo==someCacheItem.mCacheExtraInfo); } template inline const SmartPointer &CacheItem::cacheItem(void)const { return mCacheItem; } template inline void CacheItem::cacheItem(const SmartPointer &cacheItem) { mCacheItem=cacheItem; } template inline const T &CacheItem::cacheExtraInfo(void)const { return mCacheExtraInfo; } template inline void CacheItem::cacheExtraInfo(const T &cacheExtraInfo) { mCacheExtraInfo=cacheExtraInfo; } #endif