Rename our allwpilib (which is now 2020) to not have 2019 in the name
Change-Id: I3c07f85ed32ab8b97db765a9b43f2a6ce7da964a
diff --git a/wpiutil/src/main/native/windows/Demangle.cpp b/wpiutil/src/main/native/windows/Demangle.cpp
new file mode 100644
index 0000000..34d1cab
--- /dev/null
+++ b/wpiutil/src/main/native/windows/Demangle.cpp
@@ -0,0 +1,30 @@
+/*----------------------------------------------------------------------------*/
+/* 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/Demangle.h"
+
+#include <windows.h> // NOLINT(build/include_order)
+
+#include <dbghelp.h>
+
+#include "wpi/mutex.h"
+
+#pragma comment(lib, "Dbghelp.lib")
+
+namespace wpi {
+
+std::string Demangle(char const* mangledSymbol) {
+ static wpi::mutex m;
+ std::scoped_lock lock(m);
+ char buffer[256];
+ DWORD sz = UnDecorateSymbolName(mangledSymbol, buffer, sizeof(buffer),
+ UNDNAME_COMPLETE);
+ if (sz == 0) return mangledSymbol;
+ return std::string(buffer, sz);
+}
+
+} // namespace wpi