Skip to content
Snippets Groups Projects
Commit c3a0d6c0 authored by Rainer Kartmann's avatar Rainer Kartmann
Browse files

Add print() in operations.h, remove MemoryBase::dump()

parent 5d2abce6
No related branches found
No related tags found
3 merge requests!192Fix bugs in ArMem and make disk loading and storing nicer,!190ArMem: Revice get/find interface,!188ArMem Updates
This commit is part of merge request !192. Comments created here will be created in the context of that merge request.
......@@ -316,28 +316,6 @@ namespace armarx::armem::base
return this->name();
}
std::string dump() const
{
std::stringstream ss;
ss << "Memory '" << this->name() << "': \n";
forEachCoreSegment([&ss](const CoreSegmentT & cseg)
{
ss << "+- Core segment '" << cseg.name() << "' (" << cseg.size() << "): \n";
cseg.forEachProviderSegment([&ss](const ProviderSegmentT & pseg)
{
ss << "| +- Provider segment '" << pseg.name() << "' (" << pseg.size() << "): \n";
pseg.forEachEntity([&ss](const EntityT & entity)
{
ss << "| | +- Entity '" << entity.name() << "' (" << entity.size() << "): \n";
return true;
});
return true;
});
return true;
});
return ss.str();
}
private:
......
#include "operations.h"
#include <RobotAPI/libraries/armem/core/Time.h>
#include <SimoxUtility/algorithm/string/string_tools.h>
namespace armarx
{
......@@ -26,7 +30,72 @@ namespace armarx
return up;
}
}
template <class DataT>
static std::string makeLine(int depth, const DataT& data, std::optional<size_t> size = std::nullopt)
{
std::stringstream ss;
while (depth > 1)
{
ss << "| ";
depth--;
}
if (depth > 0)
{
ss << "+- ";
}
ss << simox::alg::capitalize_words(DataT::getLevelName());
ss << " '" << simox::alg::capitalize_words(data.getKeyString()) << "'";
if (size.has_value())
{
ss << " (size " << size.value() << ")";
}
ss << "\n";
return ss.str();
}
template <class DataT>
static std::string _print(const DataT& data, int maxDepth, int depth)
{
std::stringstream ss;
ss << makeLine(depth, data, data.size());
if (maxDepth < 0 || maxDepth > 0)
{
data.forEachChild([&ss, maxDepth, depth](const auto& instance)
{
ss << armem::print(instance, maxDepth - 1, depth + 1);
});
}
return ss.str();
}
std::string armem::print(const wm::Memory& data, int maxDepth, int depth)
{
return _print(data, maxDepth, depth);
}
std::string armem::print(const wm::CoreSegment& data, int maxDepth, int depth)
{
return _print(data, maxDepth, depth);
}
std::string armem::print(const wm::ProviderSegment& data, int maxDepth, int depth)
{
return _print(data, maxDepth, depth);
}
std::string armem::print(const wm::Entity& data, int maxDepth, int depth)
{
return _print(data, maxDepth, depth);
}
std::string armem::print(const wm::EntitySnapshot& data, int maxDepth, int depth)
{
return _print(data, maxDepth, depth);
}
std::string armem::print(const wm::EntityInstance& data, int maxDepth, int depth)
{
(void) maxDepth;
std::stringstream ss;
ss << makeLine(depth, data);
return ss.str();
}
}
......@@ -2,6 +2,8 @@
#include "wm/memory_definitions.h"
#include <string>
/*
* Functions performing some "advanced" operations on the memory
......@@ -30,5 +32,13 @@ namespace armarx::armem
return commit;
}
std::string print(const wm::Memory& data, int maxDepth = -1, int depth = 0);
std::string print(const wm::CoreSegment& data, int maxDepth = -1, int depth = 0);
std::string print(const wm::ProviderSegment& data, int maxDepth = -1, int depth = 0);
std::string print(const wm::Entity& data, int maxDepth = -1, int depth = 0);
std::string print(const wm::EntitySnapshot& data, int maxDepth = -1, int depth = 0);
std::string print(const wm::EntityInstance& data, int maxDepth = -1, int depth = 0);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment