make alias assignment explicit
This commit is contained in:
parent
1b38ced175
commit
7542e04151
@ -239,11 +239,12 @@ inline void Node::Assign(char* rhs) {
|
||||
}
|
||||
|
||||
inline Node& Node::operator=(const Node& rhs) {
|
||||
if (!m_isValid || !rhs.m_isValid)
|
||||
throw InvalidNode();
|
||||
if (is(rhs))
|
||||
return *this;
|
||||
AssignNode(rhs);
|
||||
AssignData(rhs);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Node& Node::operator=(const NodeAlias& rhs) {
|
||||
AssignNode(rhs.m_node);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
@ -26,6 +26,7 @@ struct iterator_value;
|
||||
} // namespace YAML
|
||||
|
||||
namespace YAML {
|
||||
class YAML_CPP_API NodeAlias;
|
||||
class YAML_CPP_API Node {
|
||||
public:
|
||||
friend class NodeBuilder;
|
||||
@ -81,6 +82,7 @@ class YAML_CPP_API Node {
|
||||
template <typename T>
|
||||
Node& operator=(const T& rhs);
|
||||
Node& operator=(const Node& rhs);
|
||||
Node& operator=(const NodeAlias& rhs);
|
||||
void reset(const Node& rhs = Node());
|
||||
|
||||
// size/iterator
|
||||
@ -134,6 +136,14 @@ class YAML_CPP_API Node {
|
||||
mutable detail::node* m_pNode;
|
||||
};
|
||||
|
||||
class NodeAlias {
|
||||
friend class Node;
|
||||
public:
|
||||
NodeAlias(const Node& node) : m_node(node) {}
|
||||
private:
|
||||
const Node& m_node;
|
||||
};
|
||||
|
||||
YAML_CPP_API bool operator==(const Node& lhs, const Node& rhs);
|
||||
|
||||
YAML_CPP_API Node Clone(const Node& node);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user