00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef GCU_LOADER_H
00026 #define GCU_LOADER_H
00027
00028 #include <list>
00029 #include <map>
00030 #include <string>
00031
00032 namespace gcu {
00033
00034 class Document;
00035 class Loader;
00036
00037 typedef struct {
00038 Loader *loader;
00039 bool read;
00040 bool write;
00041 bool supports2D;
00042 bool supports3D;
00043 bool supportsCrystals;
00044 } LoaderStruct;
00045
00046 class Loader
00047 {
00048 public:
00049 Loader ();
00050 virtual ~Loader ();
00051
00052
00053 static void Init ();
00054 static bool GetFirstLoader (std::map<std::string, LoaderStruct>::iterator &it);
00055 static bool GetNextLoader (std::map<std::string, LoaderStruct>::iterator &it);
00056 static Loader *GetLoader (char const *mime_type);
00057
00058
00059 virtual bool Read (Document *doc, std::string &uri, char const *mime_type);
00060 virtual bool Write (Document *doc, std::string &uri, char const *mime_type);
00061
00062 protected:
00063 void AddMimeType (const char *mime_type);
00064 void RemoveMimeType (const char *mime_type);
00065
00066 private:
00067 static bool Inited;
00068
00069 protected:
00070 std::list<std::string> MimeTypes;
00071 };
00072
00073 }
00074
00075 #endif // GCU_LOADER_H