00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029
00030 #ifndef __RESOURCERESOLVER_H__
00031 #define __RESOURCERESOLVER_H__
00032
00033 #include "H3DApi.h"
00034 #include <string>
00035 using namespace std;
00036 #include "URNResolver.h"
00037 #include "AutoPtrVector.h"
00038
00039
00040 namespace H3D {
00041
00045 class H3DAPI_API ResourceResolver {
00046 public:
00047
00049 virtual ~ResourceResolver() {}
00050
00054 virtual string resolveURLAsTmpFile( const string &url ) = 0;
00055
00057 static void setURNResolver( URNResolver *resolver ) {
00058 urn_resolver.reset( resolver );
00059 }
00060
00062 static URNResolver* getURNResolver() {
00063 return urn_resolver.get();
00064 }
00065
00067 static void addResolver( ResourceResolver *resolver ) {
00068 resolvers.push_back( resolver );
00069 }
00070
00073 static void setBaseURL( const string &base ) {
00074 baseURL = base;
00075 }
00076
00078 static const string & getBaseURL() {
00079 return baseURL;
00080 }
00081
00084 static string resolveURLAsFile( const string &urn );
00085
00086 protected:
00087 static auto_ptr< URNResolver > urn_resolver;
00088 static AutoPtrVector< ResourceResolver > resolvers;
00089 static string baseURL;
00090 };
00091 }
00092
00093 #endif