CrystalSpace

Public API Reference

csutil/rootedhiercache.h
00001 /*
00002     Copyright (C) 2008 by Frank Richter
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; either
00007     version 2 of the License, or (at your option) any later version.
00008     
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013     
00014     You should have received a copy of the GNU Library General Public
00015     License along with this library; if not, write to the Free
00016     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 */
00018 
00019 #ifndef __CS_UTIL_ROOTEDHIERCACHE_H__
00020 #define __CS_UTIL_ROOTEDHIERCACHE_H__
00021 
00022 #include "csextern.h"
00023 #include "iutil/cache.h"
00024 #include "iutil/hiercache.h"
00025 #include "csutil/csstring.h"
00026 #include "csutil/scf_implementation.h"
00027 
00028 struct iObjectRegistry;
00029 struct iVFS;
00030 
00031 namespace CS
00032 {
00033 namespace Utility
00034 {
00042   class CS_CRYSTALSPACE_EXPORT RootedHierarchicalCache : 
00043     public scfImplementation1<RootedHierarchicalCache, iHierarchicalCache>
00044   {
00045   private:
00046     csRef<iHierarchicalCache> wrappedCache;
00047     csString rootdir;
00048     
00049     csString AdjustPath (const char* org);
00050   public:
00056     RootedHierarchicalCache (iHierarchicalCache* cache, const char* root)
00057      : scfImplementationType (this), wrappedCache (cache), rootdir (root) {}
00058   
00059     virtual ~RootedHierarchicalCache () {}
00060   
00063     virtual bool CacheData (const void* data, size_t size,
00064       const char* path)
00065     { return wrappedCache->CacheData (data, size, AdjustPath (path)); }
00066     virtual csPtr<iDataBuffer> ReadCache (const char* path)
00067     { return wrappedCache->ReadCache (AdjustPath (path)); }
00068     virtual bool ClearCache (const char* path)
00069     { return wrappedCache->ClearCache (AdjustPath (path)); }
00070     virtual void Flush ()
00071     { wrappedCache->Flush (); }
00072     virtual csPtr<iHierarchicalCache> GetRootedCache (const char* base);
00073     virtual csPtr<iStringArray> GetSubItems (const char* path)
00074     { return wrappedCache->GetSubItems (AdjustPath (path)); }
00075     virtual iHierarchicalCache* GetTopCache()
00076     { return wrappedCache->GetTopCache(); }
00077     virtual bool IsCacheWriteable() const
00078     { return wrappedCache->IsCacheWriteable(); }
00080   };
00081 } // namespace Utility
00082 } // namespace CS
00083 
00084 #endif // __CS_UTIL_ROOTEDHIERCACHE_H__
00085 

Generated for Crystal Space 2.0 by doxygen 1.7.6.1