00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIFE_RESOURE_H
00023 #define FIFE_RESOURE_H
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "resource_location.h"
00034
00035 namespace FIFE {
00036
00037 class IReferenceCounted {
00038 public:
00039 virtual ~IReferenceCounted() { }
00040
00047 virtual void addRef() = 0;
00048
00052 virtual void decRef() = 0;
00053
00057 virtual unsigned int getRefCount() = 0;
00058 };
00059
00063 class IResource: public virtual IReferenceCounted {
00064 public:
00065 virtual ~IResource() { }
00066
00069 virtual const ResourceLocation& getResourceLocation() = 0;
00070 virtual const std::string& getResourceFile() = 0;
00071
00074 virtual void setResourceLocation(const ResourceLocation& location) = 0;
00075 virtual void setResourceFile(const std::string& filename) = 0;
00076
00079 virtual int getPoolId() = 0;
00080 virtual void setPoolId(int poolid) = 0;
00081 };
00082
00087 class ResourceLoader {
00088 public:
00089 virtual ~ResourceLoader() { };
00090 virtual IResource* loadResource(const ResourceLocation& location) = 0;
00091 };
00092
00095 class ResourceSaver {
00096 public:
00097 virtual ~ResourceSaver() { };
00098
00099 virtual void save(const ResourceLocation& location, IResource* resource) = 0;
00100 virtual void save(const std::string& filename, IResource* resource) { save(ResourceLocation(filename), resource); }
00101 };
00102 }
00103
00104 #endif