| class TileCache     :public IlvTileCache { public:     TileCache(int size);     TileCache::TileCache(IlvInputFile& file);     virtual void tileAboutToLoad(IlvTile *);         virtual void tileCached(IlvTile *);     virtual void tileRetrieved(class IlvTile *);     virtual void controllerDeleted(IlvTileController *);     virtual void write(IlvOutputFile& output) const; private:     int _size;     IlList _tiles; }; | 
| TileCache::TileCache(int size)     :IlvTileCache(),      _size(size) { } | 
| TileCache::TileCache(IlvInputFile& file)     :IlvTileCache() {     file.getStream() >> _size; } | 
| void TileCache::write(IlvOutputFile& output)  const {     output.getStream() << _size; } | 
| void TileCache::tileCached(IlvTile *tile) {     _tiles.append(tile); } | 
| void TileCache::tileRetrieved(IlvTile* tile) {     _tiles.remove(tile); } | 
| void TileCache::tileAboutToLoad(IlvTile *tile) {     int toRemove = _tiles.length() - _size;     if (toRemove <= 0)       return;     for (int i = toRemove; i > 0; i--) {         IlvTile* current = (IlvTile*)_tiles[0];         _tiles.remove(current);         releaseTile(current);     } } | 
| void TileCache::controllerDeleted(IlvTileController* controller) {     IlvLink* l;     l = _tiles.getFirst();     IlvTile* tile;     while (l) {         tile = (IlvTile*) l->getValue();         l = l->getNext();         if (tile->getController() == controller)             _tiles.remove(tile);     } } |