/*! @header ECCacheItem @abstract Module of Encore @availability OS X, GNUstep @copyright 2004, 2005, 2006 Oliver Langer Author: Oliver Langer This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  -------------------------------------------------------------------------
  Modification history

  24.02.05 ola     initial version
  22.08.06 ola     license changed
  -------------------------------------------------------------------------
  
*/ #include #include @implementation ECCacheItem - initWithObject: (id) objectToCache { self = [super init]; self->cachedObject = [objectToCache retain]; self->cacheReferenceCount = 1; return self; } - (void) dealloc { [self->cachedObject release]; [super dealloc]; } - (id) initWithCoder: (NSCoder *) decoder { NSNumber *storedRefCount; self = [super init]; EC_AUTORELEASEPOOL_BEGIN self->cachedObject = [[decoder decodeObject] retain]; storedRefCount = [decoder decodeObject]; self->cacheReferenceCount = [storedRefCount unsignedIntValue]; EC_AUTORELEASEPOOL_END return self; } - (void) encodeWithCoder: (NSCoder *) encoder { EC_AUTORELEASEPOOL_BEGIN [encoder encodeObject: self->cachedObject]; [encoder encodeObject: [[[NSNumber alloc] initWithUnsignedInt: self->cacheReferenceCount] autorelease] ]; EC_AUTORELEASEPOOL_END } - cachedObject { return self->cachedObject; } - (void) incrementCacheReferenceCount { self->cacheReferenceCount++; } - (unsigned int) decrementCacheReferenceCount { self->cacheReferenceCount--; return self->cacheReferenceCount; } - (unsigned int) cacheReferenceCount { return self->cacheReferenceCount; } @end