FluxioNode.cpp
Go to the documentation of this file.
1 #include "FluxioNode.h"
2 
3 #include <experimental/memory>
4 
6 
10 #include <RobotAPI/interface/skills/SkillManagerInterface.h>
11 #include <RobotAPI/libraries/skills/core/aron/FluxioIdentificator.aron.generated.h>
12 #include <RobotAPI/libraries/skills/core/aron/FluxioNode.aron.generated.h>
13 
14 namespace armarx
15 {
16  namespace skills
17  {
19  FluxioNodeTypeFromString(const std::string& type)
20  {
21  if (type == "PARAMETER")
22  {
24  }
25  else if (type == "CONTROL")
26  {
28  }
29  else if (type == "SUBSKILL")
30  {
32  }
33  else
34  {
35  ARMARX_WARNING << "Unknown node type: " << type;
37  }
38  }
39 
40  std::optional<std::string>
42  {
43  switch (type)
44  {
46  return "PARAMETER";
48  return "CONTROL";
50  return "SUBSKILL";
52  default:
53  ARMARX_WARNING << "Unknown node type: " << static_cast<int>(type);
54  return std::nullopt;
55  }
56  }
57 
58  std::optional<manager::dto::FluxioNode>
60  {
61  manager::dto::FluxioNode ret;
62 
63  const auto& nt = FluxioNodeTypeToString(nodeType);
64  if (!nt.has_value())
65  {
66  return std::nullopt;
67  }
68 
69  ret.nodeType = nt.value();
70  ret.nodeId = nodeId;
71  ret.name = name;
72  ret.xPos = xPos;
73  ret.yPos = yPos;
74  ret.controlType = "";
75  ret.parameters = {};
76 
77  manager::dto::FluxioIdentificator emptyId;
78  emptyId.id = "";
79  emptyId.hint = "";
80 
81  ret.parameterId = emptyId;
82  ret.skillId = emptyId;
83 
84  return ret;
85  }
86 
87  std::optional<manager::arondto::FluxioNode>
89  {
90  manager::arondto::FluxioNode ret;
91 
92  const auto& nt = FluxioNodeTypeToString(nodeType);
93  if (!nt.has_value())
94  {
95  return std::nullopt;
96  }
97 
98  ret.nodeType = nt.value();
99  ret.nodeId = nodeId;
100  ret.name = name;
101  ret.xPos = xPos;
102  ret.yPos = yPos;
103  ret.controlType = "";
104  ret.parameters = {};
105 
106  manager::arondto::FluxioIdentificator emptyId;
107  emptyId.id = "";
108  emptyId.hint = "";
109 
110  ret.parameterId = emptyId;
111  ret.skillId = emptyId;
112 
113  return ret;
114  }
115 
116  manager::dto::FluxioIdentificator
118  {
119  manager::dto::FluxioIdentificator ret;
120  ret.id = nodeId;
121  ret.hint = name;
122  return ret;
123  }
124 
125  manager::arondto::FluxioIdentificator
127  {
128  manager::arondto::FluxioIdentificator ret;
129  ret.id = nodeId;
130  ret.hint = name;
131  return ret;
132  }
133 
136  const manager::dto::FluxioIdentificator& i,
137  const std::map<const std::string, const std::unique_ptr<FluxioNode>>& nodesMap)
138  {
139  const auto& nodeIt = nodesMap.find(i.id);
140 
141  if (nodeIt == nodesMap.end())
142  {
143  ARMARX_WARNING << "Node with id " << i.id << " not found";
144  return nullptr;
145  }
146 
147  return std::experimental::make_observer(nodeIt->second.get());
148  }
149 
152  const manager::arondto::FluxioIdentificator& i,
153  const std::map<const std::string, const std::unique_ptr<FluxioNode>>& nodesMap)
154  {
155  const auto& nodeIt = nodesMap.find(i.id);
156 
157  if (nodeIt == nodesMap.end())
158  {
159  ARMARX_WARNING << "Node with id " << i.id << " not found";
160  return nullptr;
161  }
162 
163  return std::experimental::make_observer(nodeIt->second.get());
164  }
165 
166  FluxioNode
167  FluxioNode::FromIce(const manager::dto::FluxioNode& i)
168  {
169  FluxioNode ret;
170 
171  ret.nodeType = FluxioNodeTypeFromString(i.nodeType);
172  ret.nodeId = i.nodeId;
173  ret.xPos = i.xPos;
174  ret.yPos = i.yPos;
175 
176  return ret;
177  }
178  } // namespace skills
179 } // namespace armarx
armarx::aron::ret
ReaderT::InputType T & ret
Definition: rw.h:13
skills
This file is part of ArmarX.
armarx::skills::FluxioNode
Definition: FluxioNode.h:23
armarx::skills::FluxioNodeType::PARAMETER
@ PARAMETER
armarx::skills::FluxioNode::toFluxioIdentificatorIce
manager::dto::FluxioIdentificator toFluxioIdentificatorIce() const
Definition: FluxioNode.cpp:117
List.h
armarx::skills::FluxioNode::toFluxioIdentificatorAron
manager::arondto::FluxioIdentificator toFluxioIdentificatorAron() const
Definition: FluxioNode.cpp:126
std::experimental::fundamentals_v2::make_observer
observer_ptr< _Tp > make_observer(_Tp *__p) noexcept
armarx::skills::FluxioNode::FromFluxioIdentificatorIce
static std::experimental::observer_ptr< const FluxioNode > FromFluxioIdentificatorIce(const manager::dto::FluxioIdentificator &i, const std::map< const std::string, const std::unique_ptr< FluxioNode >> &nodesMap)
Definition: FluxioNode.cpp:135
armarx::skills::FluxioNode::xPos
float xPos
Definition: FluxioNode.h:29
std::experimental::fundamentals_v2::observer_ptr
Definition: ManagedIceObject.h:53
armarx::skills::FluxioNode::yPos
float yPos
Definition: FluxioNode.h:30
armarx::skills::FluxioNode::FromFluxioIdentificatorAron
static std::experimental::observer_ptr< const FluxioNode > FromFluxioIdentificatorAron(const manager::arondto::FluxioIdentificator &i, const std::map< const std::string, const std::unique_ptr< FluxioNode >> &nodesMap)
Definition: FluxioNode.cpp:151
armarx::skills::FluxioNodeTypeToString
std::optional< std::string > FluxioNodeTypeToString(const FluxioNodeType &type)
Definition: FluxioNode.cpp:41
armarx::skills::FluxioNode::toManagerIce
virtual std::optional< manager::dto::FluxioNode > toManagerIce() const
Definition: FluxioNode.cpp:59
armarx::skills::FluxioNodeType::CONTROL
@ CONTROL
armarx::skills::FluxioNode::FromIce
static FluxioNode FromIce(const manager::dto::FluxioNode &i)
Definition: FluxioNode.cpp:167
Float.h
armarx::skills::FluxioNodeTypeFromString
FluxioNodeType FluxioNodeTypeFromString(const std::string &type)
Definition: FluxioNode.cpp:19
armarx::skills::FluxioNode::nodeId
std::string nodeId
Definition: FluxioNode.h:27
armarx::skills::FluxioNodeType::UNKNOWN
@ UNKNOWN
Logging.h
armarx::skills::FluxioNodeType
FluxioNodeType
Definition: FluxioNode.h:15
ARMARX_WARNING
#define ARMARX_WARNING
Definition: Logging.h:193
armarx::skills::FluxioNodeType::SUBSKILL
@ SUBSKILL
String.h
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::skills::FluxioNode::toAron
virtual std::optional< manager::arondto::FluxioNode > toAron() const
Definition: FluxioNode.cpp:88
FluxioNode.h
armarx::skills::FluxioNode::name
std::string name
Definition: FluxioNode.h:28
armarx::skills::FluxioNode::nodeType
FluxioNodeType nodeType
Definition: FluxioNode.h:26