#include <stdlib.h>
#include <cxxabi.h>
#include "ffi_pl_lang_cpp_demangle.h"
int
ffi_pl_lang_cpp_demangle_status;
extern "C" const char *
ffi_pl_lang_cpp_demangle(const char *c_symbol)
{
static char *buffer = NULL;
static size_t size = 0;
if(c_symbol == NULL)
{
if(buffer != NULL)
free(buffer);
return NULL;
}
ffi_pl_lang_cpp_demangle_status = 0;
buffer = abi::__cxa_demangle(c_symbol, buffer, &size, &ffi_pl_lang_cpp_demangle_status);
if(ffi_pl_lang_cpp_demangle_status == 0)
{
return buffer;
}
else
{
return NULL;
}
}