Conscience Core
CommandParseContext.h
Go to the documentation of this file.
1 #ifndef CommandParseContext_h
2 #define CommandParseContext_h
3 
4 #include "CscCommon.h"
5 
7 #pragma region forwardDefs
10 class ConscienceEncoder;
11 }
12 namespace conscience_core::ai {
13 class CscEntityReflexion;
15 }
18 }
21 }
22 class CscEntityModel;
23 #pragma endregion forwardDefs
24 
26 using namespace conscience_core::bridging;
27 using namespace conscience_core::ai;
28 using namespace conscience_core::core_objects;
30 
31 #define PARAMETERS_ARGUMENT_INDEX 0
32 #define ROBOT_MODEL_ID_ARGUMENT_INDEX 1
33 #define STATE_ARGUMENT_INDEX 2
34 
35 #define COMMAND_ARGUMENTS_DELIMITER ";"
36 #define STATE_ARGUMENT_DELIMITER ","
37 #define PARAMETERS_ARGUMENT_DELIMITER ","
38 
40 
41 typedef string CommandTypeId;
42 
44 public:
45  EntityReflexionNotFoundException(const string &serialNumber) noexcept : errorMessage("cannot find entity reflexion with serialNumber: " + serialNumber) {}
46 
47  const char *what() const noexcept override {
48  return errorMessage.c_str();
49  }
50 
51  ~EntityReflexionNotFoundException() noexcept override = default;
52 
53 private:
54  const string errorMessage;
55 };
56 
58 public:
59  const optional<int> knowledgeId;
60  const vector<string> &arguments;
61  const string &originalCommandString;
65 
66  CscCommandParseContext(optional<int> knowledgeId, const vector<string> &arguments, const string &originalCommandString, const ConscienceEncoder &conscienceEncoder, CscEntityModelsRepository &entityModelRepository, CscEntityReflexions &entityReflexions);
68 
72  CscStateWithExtras getCurrentStateFromArguments(unsigned index = STATE_ARGUMENT_INDEX) const;
73 
74  CscEntityModel *getEntityModelFromArguments() const;
75 
80  const vector<string> &getParameters();
81  string getParameter(int index);
82 
86  ptr<CscEntityReflexion> getEntityReflexionFromParameter(int index = 0);
87 
91  ptr<CscEntityReflexion> getEntityReflexionFromParameterOrThrow(int index = 0) noexcept(false);
92 
97  map<string, string> extractAdditionalParams(int fromIndex = 0);
98 
99 private:
100  vector<string> *parameters = nullptr;
101 };
102 }
103 
104 #endif
conscience_core::bridging
Definition: CscCoreObjectsJsonEncoder.cpp:13
conscience_core::core_objects
Definition: CscEntityReflexion.h:33
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:34
conscience_core::bridging::commands::CscCommandParseContext::knowledgeId
const optional< int > knowledgeId
Definition: CommandParseContext.h:59
conscience_core::ai
Definition: alerts.cpp:12
conscience_core::core_objects::element_3d::Csc3dElementModelsRepository
Definition: Csc3dElementModelsRepository.h:42
CscEntityModel
Definition: CscEntityModel.h:54
conscience_core::bridging::commands::CscCommandParseContext
Definition: CommandParseContext.h:57
conscience_core::bridging::commands::entityReflexions
static ptr< CscEntityReflexions > entityReflexions
Definition: CommandCommons.h:17
conscience_core::bridging::commands::CscCommandParseContext::originalCommandString
const string & originalCommandString
Definition: CommandParseContext.h:61
conscience_core::ai::CscEntityReflexions
Definition: CscEntityReflexions.h:27
conscience_core::bridging::commands::CommandTypeId
string CommandTypeId
Definition: Command.h:29
conscience_core::core_objects::element_3d
Definition: CommandParseContext.h:19
conscience_core::bridging::commands::CscCommandParseContext::encoder
const ConscienceEncoder & encoder
Definition: CommandParseContext.h:62
conscience_core::bridging::commands
Definition: cartographyCommands.cpp:4
conscience_core::bridging::commands::EntityReflexionNotFoundException::EntityReflexionNotFoundException
EntityReflexionNotFoundException(const string &serialNumber) noexcept
Definition: CommandParseContext.h:45
conscience_core::ai::CscEntityReflexion
Definition: CscEntityReflexion.h:389
conscience_core::core_objects::entities
Definition: CscRealEntityMessageHandler.cpp:19
conscience_core::bridging::commands::EntityReflexionNotFoundException
Definition: CommandParseContext.h:43
conscience_core::bridging::commands::CscCommandParseContext::entityReflexions
CscEntityReflexions & entityReflexions
Definition: CommandParseContext.h:64
jwt::alphabet::index
uint32_t index(const std::array< char, 64 > &alphabet, char symbol)
Definition: base.h:91
CscCommon.h
STATE_ARGUMENT_INDEX
#define STATE_ARGUMENT_INDEX
Definition: CommandParseContext.h:33
conscience_core::bridging::ConscienceEncoder
Definition: ConscienceEncoder.h:46
conscience_core::core_objects::entities::CscEntityModelsRepository
Definition: CscEntityModelsRepository.h:27
conscience_core::bridging::commands::CscCommandParseContext::entityModelRepository
CscEntityModelsRepository & entityModelRepository
Definition: CommandParseContext.h:63
conscience_core::bridging::commands::EntityReflexionNotFoundException::what
const char * what() const noexcept override
Definition: CommandParseContext.h:47
conscience_core::bridging::commands::CscCommandParseContext::arguments
const vector< string > & arguments
Definition: CommandParseContext.h:60
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::bridging::CscStateWithExtras
Definition: ConscienceEncoder.h:41