mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Added half of the std::map conversion (we don't have reading from Values yet)
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
|
||||
#include "yaml-cpp/value/value.h"
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
|
||||
namespace YAML
|
||||
@@ -61,6 +62,21 @@ namespace YAML
|
||||
YAML_DEFINE_CONVERT_STREAMABLE(long double);
|
||||
|
||||
#undef YAML_DEFINE_CONVERT_STREAMABLE
|
||||
|
||||
template<typename K, typename V>
|
||||
struct convert<std::map<K, V> > {
|
||||
static Value encode(const std::map<K, V>& rhs) {
|
||||
Value value(ValueType::Map);
|
||||
for(typename std::map<K, V>::const_iterator it=rhs.begin();it!=rhs.end();++it)
|
||||
value[it->first] = it->second;
|
||||
return value;
|
||||
}
|
||||
|
||||
static bool decode(const Value& value, std::map<K, V>& rhs) {
|
||||
rhs.clear();
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif // VALUE_CONVERT_H_62B23520_7C8E_11DE_8A39_0800200C9A66
|
||||
|
@@ -2,13 +2,4 @@
|
||||
|
||||
namespace YAML
|
||||
{
|
||||
|
||||
//
|
||||
// template<typename K, typename V>
|
||||
// Value convert<std::map<K, V> >(const std::map<K, V>& rhs) {
|
||||
// Value value(ValueType::Map);
|
||||
// for(std::map<K, V>::const_iterator it=rhs.begin();it!=rhs.end();++it)
|
||||
// value[it->first] = it->second;
|
||||
// return value;
|
||||
// }
|
||||
}
|
||||
|
@@ -1,4 +1,5 @@
|
||||
#include "yaml-cpp/value.h"
|
||||
#include <map>
|
||||
|
||||
int main()
|
||||
{
|
||||
@@ -12,5 +13,12 @@ int main()
|
||||
value["monkey"] = 5;
|
||||
std::cout << value["monkey"].as<int>() << "\n";
|
||||
|
||||
std::map<int, std::string> names;
|
||||
names[1] = "one";
|
||||
names[2] = "two";
|
||||
names[3] = "three";
|
||||
names[4] = "four";
|
||||
value["names"] = names;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user