1 #ifndef CscEnvironmentInteractionCommandParser_h
2 #define CscEnvironmentInteractionCommandParser_h
4 #include "../Command.h"
13 #include <unordered_set>
29 optional<int> knowledgeId = {};
39 unordered_set<CommandTypeId> getSupportedCommandIds();
52 const map<CommandTypeId, ParseCommandFunction> *parseFunctions =
nullptr;
54 const map<CommandTypeId, ParseCommandFunction> &getParseFunctions();
56 ParseCommandFunction getParseFunction(
const CommandTypeId &commandId,
bool autoParseFunctionOnly);
59 inline static unique_ptr<CscLogger>
logger =
nullptr;
110 template <
class TCommandClass>
112 const vector<string> &arguments = parseParams.
arguments;
114 logger->trace(
"Creating ConscienceEnvironmentInteractionCommandAreaAnalysis from arguments - size=" +
to_string(arguments.size()));
116 logger->trace(
"ParametersString=" + parametersString);
122 const string entitySerialNumber = parametersTokens->at(paramIndex++);
123 int numberOfPosition = stoi(parametersTokens->at(paramIndex++));
124 vector<const CscPoint3d *> areaVertices = vector<const CscPoint3d *>();
126 for (
int i = 0;
i < numberOfPosition;
i++) {
127 int x = stoi(parametersTokens->at(paramIndex++));
128 int y = stoi(parametersTokens->at(paramIndex++));
129 int z = stoi(parametersTokens->at(paramIndex++));
130 areaVertices.push_back(
new CscPoint3d(x, y, z));
133 int numberOfHoles = stoi(parametersTokens->at(paramIndex++));
134 vector<vector<const CscPoint3d *>> holes = vector<vector<const CscPoint3d *>>();
136 for (
int i = 0;
i < numberOfHoles;
i++) {
137 vector<const CscPoint3d *> hole = vector<const CscPoint3d *>();
138 int numberOfPositionHole = stoi(parametersTokens->at(paramIndex++));
139 for (
int j = 0;
j < numberOfPositionHole;
j++) {
140 int x = stoi(parametersTokens->at(paramIndex++));
141 int y = stoi(parametersTokens->at(paramIndex++));
142 int z = stoi(parametersTokens->at(paramIndex++));
145 holes.push_back(hole);
147 float areaOfPerceptionWidth = stof(parametersTokens->at(paramIndex++));
148 int x = stoi(parametersTokens->at(paramIndex++));
149 int y = stoi(parametersTokens->at(paramIndex++));
150 int z = stoi(parametersTokens->at(paramIndex++));
155 optional<bool> doNotPlay = {};
156 if (parametersTokens->size() > paramIndex) {
157 if (
trim(parametersTokens->at(paramIndex)) !=
"") {
158 doNotPlay = parametersTokens->at(paramIndex) ==
"true";
163 delete parametersTokens;
165 return newptr<TCommandClass>(entityReflexion, areaVertices, holes, areaOfPerceptionWidth, entityPosition, doNotPlay);
172 ptr<CscCommand> doParseFromString(
const string &commandString,
bool forceAutoParse);