34 #ifndef SOMAIO_IO_FORMATDICTIONARY_D_H
35 #define SOMAIO_IO_FORMATDICTIONARY_D_H
50 #define localMsg( message ) cartoCondMsg( 4, message, "FORMATDICTIONARY" )
58 std::map<std::string, FormatReader<T>*> &
59 FormatDictionary<T>::_readformats()
61 static std::map<std::string, FormatReader<T>*> form;
66 std::map<std::string, FormatWriter<T>*> &
67 FormatDictionary<T>::_writeformats()
69 static std::map<std::string, FormatWriter<T>*> form;
74 std::multimap<std::string, std::string> &
75 FormatDictionary<T>::_readextensions()
77 static std::multimap<std::string, std::string> ext;
82 std::multimap<std::string, std::string> &
83 FormatDictionary<T>::_writeextensions()
85 static std::multimap<std::string, std::string> ext;
90 const std::multimap<std::string, std::string> &
94 return _readextensions();
98 const std::multimap<std::string, std::string> &
102 return _writeextensions();
105 template <
typename T>
108 static bool initialized =
false;
120 registerBaseFormats();
125 template <
typename T>
131 template <
typename T>
135 const std::vector<std::string>
142 _readformats()[ format ] = formatObj;
144 std::vector<std::string>::const_iterator ie, ee = extensions.end();
145 for( ie=extensions.begin(); ie!=ee; ++ie )
146 _readextensions().insert
147 ( std::pair<std::string, std::string>( *ie, format ) );
151 template <
typename T>
155 const std::vector<std::string>
162 _writeformats()[ format ] = formatObj;
164 std::vector<std::string>::const_iterator ie, ee = extensions.end();
165 for( ie=extensions.begin(); ie!=ee; ++ie )
166 _writeextensions().insert
167 ( std::pair<std::string, std::string>( *ie, format ) );
171 template <
typename T>
177 typename std::map<std::string, FormatReader<T>*>::const_iterator i
178 = _readformats().find( format );
179 if( i == _readformats().end() )
181 return( (*i).second );
185 template <
typename T>
191 typename std::map<std::string, FormatWriter<T>*>::const_iterator i
192 = _writeformats().find( format );
193 if( i == _writeformats().end() )
195 return( (*i).second );
199 template <
typename T>
203 std::set<std::string> f;
204 typename std::map<std::string, FormatReader<T>*>::const_iterator
205 i, e = _readformats().end();
206 for( i=_readformats().begin(); i!=e; ++i )
207 f.insert( i->first );
212 template <
typename T>
216 std::set<std::string> f;
217 typename std::map<std::string, FormatWriter<T>*>::const_iterator
218 i, e = _writeformats().end();
219 for( i=_writeformats().begin(); i!=e; ++i )
220 f.insert( i->first );
static void registerWriteType(const std::string &datatype, FormatInfo info)
static void registerReadType(const std::string &datatype, FormatInfo info)