16 float x_min,
float x_max,
float row_h)
19 const std::string name = entry.
name;
21 std::vector<ValueSpec> values {
24 .reader = [name] {
return name.empty() ?
"(unnamed)" : name; },
34 .reader = [routine] {
return routine->is_active() ?
"true" :
"false"; },
46 std::vector<RowBuffer> rbufs;
47 rbufs.reserve(values.size());
48 for (
const auto& spec : values)
52 surface, cursor, x_min, x_max, row_h,
false);
55 result.
group = std::move(group);
62 float x_min,
float x_max,
float row_h)
68 const std::vector<ValueSpec> root_values {
79 std::vector<RowBuffer> rbufs;
80 rbufs.reserve(root_values.size());
81 for (
const auto& spec : root_values)
84 surface, cursor, x_min, x_max, row_h,
true);
87 result.
group = std::move(root_group);
90 for (
const auto& entry :
tasks) {
95 entry, surface, cursor,
99 result.
children.push_back(std::move(task_result));
109 float x_min,
float x_max,
float row_h)
111 const std::string header_label =
"TaskScheduler ["
117 surface, cursor, x_min, x_max, row_h,
true);
120 result.
group = std::move(root_group);
123 for (
const auto& entry : all) {
126 if (entry.routine->get_processing_token() != token)
130 entry, surface, cursor,
131 x_min, x_max, row_h);
133 result.group.header.attach(surface.
layer(), task_result.group.header.header_id);
134 result.children.push_back(std::move(task_result));
const std::vector< TaskEntry > & get_all_tasks()
Get all tasks for inspection/debugging.
constexpr std::string_view enum_to_string(EnumType value) noexcept
Universal enum to string converter using magic_enum (original case)
std::string short_dynamic_type_name(const T &obj) noexcept
Returns the unqualified dynamic type name of obj.
std::shared_ptr< Routine > routine