YARP
Yet Another Robot Platform
 
Loading...
Searching...
No Matches
Types.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5
7
9
10#include <yarp/os/LogStream.h>
11
12#include <sstream>
13#include <string>
14
15
16namespace {
17YARP_LOG_COMPONENT(YRI_TYPES, "yarp.yri.Types")
18}
19
20bool yarp::robotinterface::hasParam(const yarp::robotinterface::ParamList& list, const std::string& name)
21{
22 for (const auto& param : list) {
23 if (name == param.name()) {
24 return true;
25 }
26 }
27 return false;
28}
29
30std::string yarp::robotinterface::findParam(const yarp::robotinterface::ParamList& list, const std::string& name)
31{
32 for (const auto& param : list) {
33 if (name == param.name()) {
34 return param.value();
35 }
36 }
37 yCError(YRI_TYPES) << "Param" << name << "not found";
38 return {};
39}
40
41bool yarp::robotinterface::hasGroup(const yarp::robotinterface::ParamList& list, const std::string& name)
42{
43 for (const auto& param : list) {
44 if (param.isGroup() && name == param.name()) {
45 return true;
46 }
47 }
48 return false;
49}
50
51std::string yarp::robotinterface::findGroup(const yarp::robotinterface::ParamList& list, const std::string& name)
52{
53 for (const auto& param : list) {
54 if (param.isGroup() && name == param.name()) {
55 return param.value();
56 }
57 }
58 yCError(YRI_TYPES) << "Param" << name << "not found";
59 return {};
60}
61
63{
65 for (auto it1 = params.begin(); it1 != params.end(); ++it1) {
66 yarp::robotinterface::Param& param1 = *it1;
67 for (auto it2 = it1 + 1; it2 != params.end();) {
68 yarp::robotinterface::Param& param2 = *it2;
69 if (param1.name() == param2.name()) {
70 if (!param1.isGroup() || !param2.isGroup()) {
71 yCFatal(YRI_TYPES) << "Duplicate parameter \"" << param1.name() << "\" found and at least one of them is not a group.";
72 }
73 param1.value() += std::string(" ");
74 param1.value() += param2.value();
75 it2 = params.erase(it2);
76 } else {
77 it2++;
78 }
79 }
80 }
81 return params;
82}
83
84
86{
87 if (phase == "startup") {
89 } else if (phase == "run") {
91 } else if (phase == "interrupt1") {
93 } else if (phase == "interrupt2") {
95 } else if (phase == "interrupt3") {
97 } else if (phase == "shutdown") {
99 }
101}
102
104{
105 switch (actionphase) {
107 return std::string("startup");
109 return std::string("run");
111 return std::string("interrupt1");
113 return std::string("interrupt2");
115 return std::string("interrupt3");
117 return std::string("shutdown");
119 default:
120 return {};
121 }
122}
123
124void yarp::robotinterface::operator>>(const std::stringstream& sstream, yarp::robotinterface::ActionPhase& actionphase)
125{
126 actionphase = yarp::robotinterface::StringToActionPhase(sstream.str());
127}
128
129
131{
132 if (type == "configure") {
134 } else if (type == "calibrate") {
136 } else if (type == "attach") {
138 } else if (type == "abort") {
140 } else if (type == "detach") {
142 } else if (type == "park") {
144 } else if (type == "custom") {
146 } else {
148 }
149}
150
152{
153 switch (actiontype) {
155 return std::string("configure");
157 return std::string("calibrate");
159 return std::string("attach");
161 return std::string("abort");
163 return std::string("detach");
165 return std::string("park");
167 return std::string("custom");
169 default:
170 return {};
171 }
172}
173
174void yarp::robotinterface::operator>>(const std::stringstream& sstream, yarp::robotinterface::ActionType& actiontype)
175{
176 actiontype = yarp::robotinterface::StringToActionType(sstream.str());
177}
std::string & name()
Definition Param.cpp:83
std::string & value()
Definition Param.cpp:88
#define yCError(component,...)
#define YARP_LOG_COMPONENT(name,...)
#define yCFatal(component,...)
robotinterface::ParamList mergeDuplicateGroups(const robotinterface::ParamList &list)
Definition Types.cpp:62
std::string ActionTypeToString(robotinterface::ActionType actiontype)
Definition Types.cpp:151
void operator>>(const std::stringstream &sstream, robotinterface::ActionPhase &actionphase)
Definition Types.cpp:124
bool hasParam(const robotinterface::ParamList &list, const std::string &name)
Definition Types.cpp:20
std::vector< robotinterface::Param > ParamList
Definition Types.h:30
std::string findGroup(const robotinterface::ParamList &list, const std::string &name)
Definition Types.cpp:51
robotinterface::ActionPhase StringToActionPhase(const std::string &phase)
Definition Types.cpp:85
robotinterface::ActionType StringToActionType(const std::string &type)
Definition Types.cpp:130
bool hasGroup(const robotinterface::ParamList &list, const std::string &name)
Definition Types.cpp:41
std::string findParam(const robotinterface::ParamList &list, const std::string &name)
Definition Types.cpp:30
std::string ActionPhaseToString(robotinterface::ActionPhase actionphase)
Definition Types.cpp:103