10 #include "ismrmrd/export.h"
133 void set(
const char* s)
136 sscanf(s_.c_str(),
"%ld",&l_);
137 sscanf(s_.c_str(),
"%lf",&d_);
143 d_ = static_cast<double>(l_);
144 std::stringstream strstream;
152 l_ = static_cast<long>(d_);
153 std::stringstream strstream;
161 EXPORTISMRMRD
void deserialize(
const char* xml, MetaContainer& h);
162 EXPORTISMRMRD
void serialize(MetaContainer& h, std::ostream& o);
167 typedef std::map< std::string, std::vector<MetaValue> > map_t;
169 friend void EXPORTISMRMRD serialize(
MetaContainer& h, std::ostream& o);
184 template <
class T>
void set(
const char* name, T value)
187 map_[std::string(name)] = std::vector<MetaValue>(1,value);
191 template <
class T>
void append(
const char* name, T value)
193 map_t::iterator it = map_.find(std::string(name));
194 if (it == map_.end()) {
198 it->second.push_back(v);
205 map_t::const_iterator it = map_.find(std::string(name));
206 if (it != map_.end()) {
207 return it->second.size();
213 long as_long(
const char* name,
size_t index = 0)
const
215 return value(name,index).as_long();
219 double as_double(
const char* name,
size_t index = 0)
const
221 return value(name,index).as_double();
225 const char* as_str(
const char* name,
size_t index = 0)
const
227 return value(name,index).as_str();
230 const MetaValue& value(
const char* name,
size_t index = 0)
const
232 map_t::const_iterator it = map_.find(std::string(name));
233 if (it == map_.end()) {
234 throw std::runtime_error(
"Attempting to access unknown parameter");
236 if (index >= it->second.size()) {
237 throw std::runtime_error(
"Attempting to access indexed value out of bounds");
239 return it->second[index];
264 #endif //ISMRMRDMETA_H