actions.cpp
Go to the documentation of this file.
1#include "actions.h"
2
3#include <RobotAPI/interface/armem/actions.h>
4
6{
7
8 MenuEntry::MenuEntry(const std::string& id,
9 const std::string& text,
10 const std::vector<MenuEntry>& entries) :
12 {
13 }
14
16 MenuEntry::add(const std::string& id,
17 const std::string& text,
18 const std::vector<MenuEntry>& entries)
19 {
20 return this->entries.emplace_back(id, text, entries);
21 }
22
23 data::MenuEntryPtr
24 MenuEntry::toIce() const // NOLINT (recursive call chain)
25 {
26 if (entries.empty())
27 {
28 return new data::Action{this->id, this->text};
29 }
30
31 data::SubMenuPtr ice = new data::SubMenu{this->id, this->text, {}};
32 for (const MenuEntry& entry : entries)
33 {
34 ice->entries.push_back(entry.toIce());
35 }
36 return ice;
37 }
38
40 MenuEntry::fromIce(const data::MenuEntryPtr& ice) // NOLINT (recursive call chain)
41 {
42 if (ice->ice_isA(data::SubMenu::ice_staticId()))
43 {
45 MenuEntry subMenu{ptr->id, ptr->text, {}};
46 for (const auto& entry : ptr->entries)
47 {
48 subMenu.entries.push_back(MenuEntry::fromIce(entry));
49 }
50 return subMenu;
51 }
52
53 return MenuEntry{ice->id, ice->text, {}};
54 }
55
56 Action::Action(const std::string& id, const std::string& text) : MenuEntry(id, text)
57 {
58 }
59
60 SubMenu::SubMenu(const std::string& id,
61 const std::string& text,
62 const std::vector<MenuEntry>& entries) :
64 {
65 }
66
68 SubMenu::add(const std::string& id,
69 const std::string& text,
70 const std::vector<MenuEntry>& entries)
71 {
72 return this->entries.emplace_back(id, text, entries);
73 }
74
75 Menu::Menu(std::initializer_list<MenuEntry> entries) : entries(entries)
76 {
77 }
78
79 Menu::Menu(const std::vector<MenuEntry>& entries) : entries(entries)
80 {
81 }
82
84 Menu::add(const std::string& id, const std::string& text, const std::vector<MenuEntry>& entries)
85 {
86 return this->entries.emplace_back(id, text, entries);
87 }
88
91 {
92 data::MenuPtr ice{new data::Menu};
93 for (const MenuEntry& entry : entries)
94 {
95 ice->entries.push_back(entry.toIce());
96 }
97 return ice;
98 }
99
100 Menu
102 {
103 Menu menu;
104 for (const auto& entry : ice->entries)
105 {
106 menu.entries.push_back(MenuEntry::fromIce(entry));
107 }
108 return menu;
109 }
110} // namespace armarx::armem::actions
data::MenuPtr toIce() const
Definition actions.cpp:90
MenuEntry & add(const std::string &id, const std::string &text, const std::vector< MenuEntry > &entries={})
Definition actions.cpp:84
std::vector< MenuEntry > entries
Definition actions.h:66
static Menu fromIce(const data::MenuPtr &ice)
Definition actions.cpp:101
Menu(std::initializer_list< MenuEntry > entries)
Definition actions.cpp:75
::IceInternal::Handle< Menu > MenuPtr
Action(const std::string &id, const std::string &text)
Definition actions.cpp:56
MenuEntry(const std::string &id, const std::string &text, const std::vector< MenuEntry > &entries={})
Definition actions.cpp:8
MenuEntry & add(const std::string &id, const std::string &text, const std::vector< MenuEntry > &entries={})
Definition actions.cpp:16
static MenuEntry fromIce(const data::MenuEntryPtr &ice)
Definition actions.cpp:40
std::vector< MenuEntry > entries
Definition actions.h:30
data::MenuEntryPtr toIce() const
Definition actions.cpp:24
MenuEntry & add(const std::string &id, const std::string &text, const std::vector< MenuEntry > &entries={})
Definition actions.cpp:68
SubMenu(const std::string &id, const std::string &text, const std::vector< MenuEntry > &entries={})
Definition actions.cpp:60