AffordanceLoader.cpp
Go to the documentation of this file.
1#include "AffordanceLoader.h"
2
3#include <map>
4#include <string>
5#include <vector>
6
8
10
11#include <nlohmann/json.hpp>
12
14{
15 std::vector<StaticAffordance>
16 AffordanceLoader::LoadAffordances(const std::string& source, const nlohmann::json& js)
17 {
18 std::vector<StaticAffordance> ret;
19 if (not js.contains("affordances"))
20 {
21 ARMARX_WARNING << "The affordances file has the wrong structure. Missing key "
22 "'affordances'.";
23 return ret;
24 }
25
26 for (const auto& affordance : js.at("affordances").get<std::vector<std::string>>())
27 {
28 StaticAffordance a{{.source = source, .name = affordance}};
29 ret.push_back(a);
30 }
31 return ret;
32 }
33
34 std::vector<LocationAffordance>
35 AffordanceLoader::LoadLocationAffordances(const std::string& source, const nlohmann::json& js)
36 {
37 std::vector<LocationAffordance> ret;
38 if (not js.contains("location_affordances"))
39 {
40 ARMARX_WARNING << "The affordances file has the wrong structure. Missing key "
41 "'location_affordances'.";
42 return ret;
43 }
44
45 for (const auto& [locationName, affordances] :
46 js.at("location_affordances").get<std::map<std::string, std::vector<std::string>>>())
47 {
48 for (const auto& affordance : affordances)
49 {
50 LocationAffordance a{.id = {.source = source, .name = affordance},
51 .locationName = locationName};
52 ret.push_back(a);
53 }
54 }
55 return ret;
56 }
57} // namespace armarx::priorknowledge::util
static std::vector< LocationAffordance > LoadLocationAffordances(const std::string &sourceId, const nlohmann::json &)
static std::vector< StaticAffordance > LoadAffordances(const std::string &sourceId, const nlohmann::json &)
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
Definition Logging.h:193