Added half of the std::map conversion (we don't have reading from Values yet)

This commit is contained in:
Jesse Beder
2011-09-08 02:10:04 -05:00
parent 0e197b8723
commit 6ffc9ac788
3 changed files with 24 additions and 9 deletions

View File

@@ -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

View File

@@ -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;
// }
}

View File

@@ -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;
}