Sha256: bd10e9cc91ee7cc0d96e258640d2f06ec5a4949d755fb571d800ddc6f66223c1

Contents?: true

Size: 802 Bytes

Versions: 36

Compression:

Stored size: 802 Bytes

Contents

#include "demangle.hpp"

#ifdef __GNUC__
#include <cxxabi.h>
#include <cstdlib>
#include <cstring>
#endif

std::string
Rice::detail::
demangle(char const * mangled_name)
{
#ifdef __GNUC__
    struct Helper
  {
    Helper(
        char const * mangled_name)
      : name_(0)
    {
      int status = 0;
      name_ = abi::__cxa_demangle(mangled_name, 0, 0, &status);
    }

    ~Helper()
    {
      std::free(name_);
    }

    char * name_;

  private:
    Helper(Helper const &);
    void operator=(Helper const &);
  };

  Helper helper(mangled_name);
  if(helper.name_)
  {
    return helper.name_;
  }
  else
  {
    return mangled_name;
  }
#else
  return mangled_name;
#endif
}


std::string
Rice::detail::
demangle(std::string const & mangled_name)
{
  return demangle(mangled_name.c_str());
}

Version data entries

36 entries across 36 versions & 6 rubygems

Version Path
rice-3.0.0 rice/detail/demangle.cpp
rice2-2.2.1 rice/detail/demangle.cpp
rice2-2.2.0 rice/detail/demangle.cpp
rice-2.2.0 rice/detail/demangle.cpp
rice-2.1.3 rice/detail/demangle.cpp
rice-2.1.2 rice/detail/demangle.cpp
rice-2.1.1 rice/detail/demangle.cpp
rice-2.1.0 rice/detail/demangle.cpp
rice-2.0.0 rice/detail/demangle.cpp
rice-1.7.0 rice/detail/demangle.cpp
rice-1.6.3 rice/detail/demangle.cpp
jameskilton-rice-1.2.0 rice/detail/demangle.cpp
rice-1.6.2 rice/detail/demangle.cpp
rice-1.6.1 rice/detail/demangle.cpp
rice-1.6.0 rice/detail/demangle.cpp
rice-1.6.0.pre rice/detail/demangle.cpp
rice-1.5.3 rice/detail/demangle.cpp
rice-1.5.2 rice/detail/demangle.cpp
keyme-rice-1.5.1.keyme1 rice/detail/demangle.cpp
keyme-rice-1.5.1.keyme rice/detail/demangle.cpp