21 #ifndef ph_IOhandler_hh 22 #define ph_IOhandler_hh 48 typedef typename I::Data
Data;
51 typedef typename std::shared_ptr<Data >
PData;
60 typedef std::multimap<std::string, std::string>
CSuffixmap;
72 PData load(
const std::string& fname)
const;
82 DataKey load_to_pool(
const std::string& fname)
const;
92 bool save(
const std::string& fname,
const Data& data)
const;
99 const Interface *preferred_plugin_ptr(
const std::string& fname)
const;
108 const Interface& preferred_plugin(
const std::string& fname)
const;
111 const CSuffixmap& get_supported_filetype_map()
const;
114 const std::string get_supported_suffixes()
const;
117 const std::set<std::string> get_supported_suffix_set()
const;
125 std::string get_preferred_suffix(
const std::string& type)
const;
135 void do_initialise();
138 CSuffixmap m_suffixmap;
141 std::set<std::string> m_compress_sfx;
145 void do_print_help(std::ostream& os)
const;
147 std::string get_handler_type_string_and_help(std::ostream& os)
const;
148 std::string do_get_handler_type_string()
const;
149 bool do_validate_parameter_string(
const std::string& s)
const;
151 virtual void check_file_exists(
const std::string& fname)
const;
160 PData do_load(
const std::string& fname)
const;
161 bool do_save(
const std::string& fname,
163 const std::string do_get_descr()
const;
164 const std::string do_get_preferred_suffix()
const;
167 std::shared_ptr<Interface> m_pool_plugin;
174 #define EXPLICITE_INSTANCEIATE_IO_HANDLER(IOTYPE) \ 175 template class TIOPlugin<IOTYPE>; \ 176 template class THandlerSingleton<TIOPluginHandler<TIOPlugin<IOTYPE>>>; \ 177 template class TIOPluginHandler<TIOPlugin<IOTYPE>>; \ 178 template class TPluginHandler<TIOPlugin<IOTYPE>> \ 182 template <
typename Data>
191 template <
typename T>
194 static_assert(
sizeof(T) == 0,
"The call to load_image must be resolved to a template specialization");
I Interface
typedef for the plug-in interface provided by the class
the singleton that a plug-in handler really is
TDelayedParameter< PData > DataKey
The type of the key used for the CDatapool access.
#define NS_MIA_BEGIN
conveniance define to start the mia namespace
std::shared_ptr< Data > PData
Shared pointer to the data hadnled by this plug-in.
TPluginHandler< I >::const_iterator const_iterator
an iterator over the available plug-ins
I::Data Data
Data type handled by this plug-in.
THandlerSingleton< TIOPluginHandler< TIOPlugin< Data > > > type
CPluginMap::const_iterator const_iterator
the iterator to walk over the available plug-ins
std::multimap< std::string, std::string > CSuffixmap
The map that maps file name suffixes to IO plug-ins.
T load_image(const std::string &filename)
Template for all plug-in handlers that are responsible for data IO.
TPluginHandler< I >::Interface Interface
the IO interface provided by this handler
A parameter proxy object with a key to identify it.
The basic template of all plugin handlers.
#define NS_MIA_END
conveniance define to end the mia namespace