00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef OST_IO_MANAGER_H
00020 #define OST_IO_MANAGER_H
00021
00022 #include <vector>
00023
00024 #include <ost/config.hh>
00025 #include <ost/io/module_config.hh>
00026
00027 #include <ost/io/mol/entity_io_handler.hh>
00028 #include <ost/io/seq/sequence_io_handler.hh>
00029 #include <ost/io/seq/profile_io_handler.hh>
00030 #include <ost/io/mol/surface_io_handler.hh>
00031
00032 #if OST_IMG_ENABLED
00033 # include <ost/io/img/map_io_handler.hh>
00034 #endif
00035
00036 #include <ost/io/io_exception.hh>
00037
00038 namespace ost { namespace io {
00039
00040 typedef std::vector<EntityIOHandlerFactoryBaseP> EntityIOHFList;
00041 typedef std::vector<SequenceIOHandlerFactoryBasePtr> AlignmentIOFList;
00042 typedef std::vector<ProfileIOHandlerFactoryBasePtr> ProfileIOFList;
00043 typedef std::vector<SurfaceIOHandlerFactoryBasePtr> SurfaceIOFList;
00044
00045 #if OST_IMG_ENABLED
00046 typedef std::vector<MapIOHandlerFactoryBasePtr> MapIOFList;
00047 #endif
00048
00050 class DLLEXPORT_OST_IO IOManager {
00051 public:
00067 EntityIOHandlerP FindEntityImportHandler(const String& filename,
00068 const String& format="auto");
00069
00074 EntityIOHandlerP FindEntityExportHandler(const String& filename,
00075 const String& format="auto");
00076
00077
00079
00080
00081
00082 SequenceIOHandlerPtr FindAlignmentImportHandler(const String& filename,
00083 const String& format="auto");
00084
00085 SequenceIOHandlerPtr FindAlignmentExportHandler(const String& filename,
00086 const String& format="auto");
00087
00088 ProfileIOHandlerPtr FindProfileImportHandler(const String& filename,
00089 const String& format="auto");
00090
00091 ProfileIOHandlerPtr FindProfileExportHandler(const String& filename,
00092 const String& format="auto");
00093
00094 SurfaceIOHandlerPtr FindSurfaceImportHandler(const String& filename,
00095 const String& format="auto");
00097
00098
00099 void RegisterFactory(const EntityIOHandlerFactoryBaseP&);
00102 void RegisterFactory(const SequenceIOHandlerFactoryBasePtr&);
00105 void RegisterFactory(const ProfileIOHandlerFactoryBasePtr&);
00108 void RegisterFactory(const SurfaceIOHandlerFactoryBasePtr&);
00109
00111 const EntityIOHFList& GetAvailableEntityHandler() const;
00112
00114 const AlignmentIOFList& GetAvailableAlignmentHandler() const;
00115
00117 const ProfileIOFList& GetAvailableProfileHandler() const;
00118
00120 const SurfaceIOFList& GetAvailableSurfaceHandler() const;
00121
00122 #if OST_IMG_ENABLED
00124
00125
00126
00127 void RegisterFactory(const MapIOHandlerFactoryBasePtr&);
00128
00129 MapIOHandlerPtr FindMapImportHandlerFile(const boost::filesystem::path& loc,
00130 const ImageFormatBase& format);
00131
00132 MapIOHandlerPtr FindMapImportHandlerStream(std::istream& stream,
00133 const ImageFormatBase& format);
00134
00135 MapIOHandlerPtr FindMapExportHandlerFile(const boost::filesystem::path& loc,
00136 const ImageFormatBase& format);
00137
00138 MapIOHandlerPtr FindMapExportHandlerStream(std::istream& stream,
00139 const ImageFormatBase& format);
00140
00141 const MapIOFList& GetAvailableMapHandler() const;
00143 #endif
00144
00145
00146 static IOManager& Instance();
00147
00148 private:
00149 IOManager();
00150 IOManager(const IOManager&) {}
00151 IOManager& operator=(const IOManager&) {return *this;}
00152
00153 EntityIOHFList entity_iohf_list_;
00154 AlignmentIOFList alignment_io_list_;
00155 ProfileIOFList profile_io_list_;
00156 SurfaceIOFList surface_io_list_;
00157
00158 #if OST_IMG_ENABLED
00159 MapIOFList map_io_list_;
00160 #endif
00161 };
00162
00163
00164
00165 }}
00166
00167 #endif