/*----------------------------------------------------------------------------*/ /* Copyright (c) 2008-2019 FIRST. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #include "wpi/StackTrace.h" #include "StackWalker.h" #include "wpi/ConvertUTF.h" #include "wpi/SmallString.h" namespace { class StackTraceWalker : public StackWalker { public: explicit StackTraceWalker(std::string& output) : m_output(output) {} void OnOutput(LPCTSTR szText) override; private: std::string& m_output; }; } // namespace void StackTraceWalker::OnOutput(LPCTSTR szText) { #ifdef _UNICODE wpi::SmallString<128> utf8; wpi::sys::windows::UTF16ToUTF8(szText, wcslen(szText), utf8); m_output.append(utf8.data(), utf8.size()); #else m_output.append(szText); #endif } namespace wpi { std::string GetStackTrace(int offset) { // TODO: implement offset std::string output; StackTraceWalker walker(output); return output; } } // namespace wpi