10 #include <SimoxUtility/meta/type_name.h>
18 template <
class ...Args>
28 memory.forEachCoreSegment([
this, &group](
const auto & coreSegment)
36 static std::string getTypeString(
const armem::base::detail::AronTyped& typed)
38 std::stringstream type;
41 type <<
" (" << typed.aronType()->getFullName() <<
")";
45 type <<
" (no Aron type)";
50 template <
class ...Args>
55 + getTypeString(coreSegment));
57 if (coreSegment.empty())
61 coreSegment.forEachProviderSegment([
this, &group](
const auto & providerSegment)
69 template <
class ...Args>
70 MemoryRemoteGui::GroupBox MemoryRemoteGui::_makeGroupBox(
const armem::base::ProviderSegmentBase<Args...>& providerSegment)
const
74 + getTypeString(providerSegment));
76 if (providerSegment.empty())
80 providerSegment.forEachEntity([
this, &group](
const auto & entity)
88 template <
class ...Args>
106 entity.forEachSnapshot(addChild);
110 const int margin = 2;
111 entity.forEachSnapshotInIndexRange(0, margin, addChild);
112 entity.forEachSnapshotInIndexRange(-margin, -1, addChild);
114 group.setCollapsed(
true);
122 return this->_makeGroupBox(
memory);
127 return this->_makeGroupBox(
memory);
133 return coreSegment.
doLocked([
this, &coreSegment]()
135 return this->_makeGroupBox(coreSegment);
142 return this->_makeGroupBox(coreSegment);
148 return this->_makeGroupBox(providerSegment);
154 return this->_makeGroupBox(providerSegment);
160 return this->_makeGroupBox(entity);
166 return this->_makeGroupBox(entity);
174 snapshot.
size(),
" = ",
""));
176 if (snapshot.
empty())
206 std::stringstream ss;
207 ss <<
"Instance #" << instance.
index();
216 const std::string& term,
const std::string& name,
size_t size,
217 const std::string& namePrefix,
const std::string& nameSuffix)
const
219 std::stringstream ss;
220 ss << term << namePrefix << name << nameSuffix <<
" (" << size <<
")";
227 std::stringstream ss;
228 ss <<
"(no " << term <<
")";