tue_config
map.cpp
Go to the documentation of this file.
1 #include "tue/config/map.h"
2 #include "tue/config/data.h"
3 
4 namespace tue
5 {
6 
7 namespace config
8 {
9 
10 NodePtr Map::deepCopy(const Data& source, NodeIdx target_idx, Data& target) const
11 {
12  boost::shared_ptr<Map> n(new Map(name()));
13 
14  NodeIdx previous_child_idx = -1;
15  for(std::map<Label, NodeIdx>::const_iterator it = map_.begin(); it != map_.end(); ++it)
16  {
17  NodeIdx child_idx = target.addNode(NodePtr(), target_idx);
18  target.nodes[child_idx] = source.nodes[it->second]->deepCopy(source, child_idx, target);
19  n->map_[it->first] = child_idx;
20 
21  if (previous_child_idx != static_cast<NodeIdx>(-1))
22  target.setRightSibling(previous_child_idx, child_idx);
23 
24  previous_child_idx = child_idx;
25  }
26 
27  // VALUES
28  n->values = values;
29 
30  return n;
31 }
32 
33 }
34 
35 } // end namespace tue
36 
tue::config::Map::Map
Map(const Label &name)
Definition: map.h:17
tue::config::NodeIdx
unsigned int NodeIdx
Definition: data_pointer.h:12
tue::config::Map::map_
std::map< Label, NodeIdx > map_
Definition: map.h:62
tue::config::Data::nodes
std::vector< NodePtr > nodes
Definition: data.h:77
tue::config::Data::setRightSibling
void setRightSibling(NodeIdx n, NodeIdx sibling)
Definition: data.h:75
tue::config::Data::addNode
NodeIdx addNode(const NodePtr &n, NodeIdx parent)
Definition: data.h:61
map.h
std::map
tue::config::Data
Definition: data.h:17
data.h
tue::config::NodePtr
boost::shared_ptr< Node > NodePtr
Definition: types.h:21
tue::config::Map::values
std::map< Label, Variant > values
Definition: map.h:64
tue::config::Node::name
const Label & name() const
Definition: node.h:54
tue::config::Map::deepCopy
NodePtr deepCopy(const Data &source, NodeIdx target_idx, Data &target) const
Definition: map.cpp:10
tue
config
tue::config::ReaderWriter config
Definition: sdf_gtest.cpp:9