#include "DualTrace.h" using panda::string; namespace xs { panda::BacktraceInfoSP DualTrace::get_c_trace() noexcept { if (!c_trace_cached && c_trace_producer) { c_trace_cached = c_trace_producer(); } return c_trace_cached; } PerlTraceInfoSP DualTrace::get_perl_trace() noexcept { if (!perl_trace_cached && perl_trace_producer) { perl_trace_cached = panda::static_pointer_cast(perl_trace_producer()); } return perl_trace_cached; } string DualTrace::to_string() noexcept { string r; auto c_trace = get_c_trace(); if (c_trace) { r += "C backtrace:\n"; r += c_trace->to_string(); } auto perl_trace = get_perl_trace(); if (perl_trace) { r += "Perl backtrace:\n"; r += perl_trace->to_string(); } return r; } }