25 #ifndef ACE_ROUTINE_LOG_BIN_JSON_RENDERER_H
26 #define ACE_ROUTINE_LOG_BIN_JSON_RENDERER_H
31 #include "CoroutineProfiler.h"
32 #include "LogBinProfiler.h"
34 namespace ace_routine {
47 template <
typename T_COROUTINE>
74 bool lineNeedsTrailingComma =
false;
75 T_COROUTINE** root = T_COROUTINE::getRoot();
76 for (T_COROUTINE** p = root; (*p) !=
nullptr; p = (*p)->getNext()) {
77 auto* profiler = (
Profiler*) (*p)->getProfiler();
78 if (! profiler)
continue;
83 internal::rollupExteriorBins(
87 bins = profiler->mBins;
90 if (lineNeedsTrailingComma) printer.println(
',');
91 lineNeedsTrailingComma =
true;
94 (*p)->printNameTo(printer);
95 printer.print(
"\":[");
97 bool elementNeedsTrailingComma =
false;
98 for (uint8_t i = startBin; i < endBin; i++) {
99 if (elementNeedsTrailingComma) printer.print(
',');
100 elementNeedsTrailingComma =
true;
101 printer.print(bins[i]);
110 printer.println(
'}');
114 using LogBinJsonRenderer = LogBinJsonRendererTemplate<Coroutine>;