mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Added a convert<> specialization for YAML::_Null (so you can say node[YAML::Null])
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "yaml-cpp/node/node.h"
|
||||
#include "yaml-cpp/node/iterator.h"
|
||||
#include "yaml-cpp/null.h"
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
@@ -30,6 +31,17 @@ namespace YAML
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
struct convert<_Null> {
|
||||
static Node encode(const _Null& /* rhs */) {
|
||||
return Node();
|
||||
}
|
||||
|
||||
static bool decode(const Node& node, _Null& /* rhs */) {
|
||||
return node.Type() == NodeType::Null;
|
||||
}
|
||||
};
|
||||
|
||||
#define YAML_DEFINE_CONVERT_STREAMABLE(type)\
|
||||
template<>\
|
||||
struct convert<type> {\
|
||||
@@ -66,6 +78,7 @@ namespace YAML
|
||||
|
||||
#undef YAML_DEFINE_CONVERT_STREAMABLE
|
||||
|
||||
// std::map
|
||||
template<typename K, typename V>
|
||||
struct convert<std::map<K, V> > {
|
||||
static Node encode(const std::map<K, V>& rhs) {
|
||||
@@ -86,6 +99,7 @@ namespace YAML
|
||||
}
|
||||
};
|
||||
|
||||
// std::vector
|
||||
template<typename T>
|
||||
struct convert<std::vector<T> > {
|
||||
static Node encode(const std::vector<T>& rhs) {
|
||||
@@ -106,6 +120,7 @@ namespace YAML
|
||||
}
|
||||
};
|
||||
|
||||
// std::list
|
||||
template<typename T>
|
||||
struct convert<std::list<T> > {
|
||||
static Node encode(const std::list<T>& rhs) {
|
||||
|
@@ -132,6 +132,7 @@ namespace YAML
|
||||
inline node& node_data::convert_to_node(const T& rhs, shared_memory_holder pMemory)
|
||||
{
|
||||
Node value = convert<T>::encode(rhs);
|
||||
value.EnsureNodeExists();
|
||||
pMemory->merge(*value.m_pMemory);
|
||||
return *value.m_pNode;
|
||||
}
|
||||
|
Reference in New Issue
Block a user