mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 05:05:11 +00:00
code size reduction
This commit is contained in:
parent
43398a8548
commit
fbe82bf94d
@ -26,23 +26,27 @@ inline void erase_all(std::string &string, const std::string &search) {
|
|||||||
string.erase(pos, search.length());
|
string.erase(pos, search.length());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
NAMESPACE_END(detail)
|
|
||||||
|
|
||||||
/// Return a string representation of a C++ type
|
inline void clean_type_id(std::string &name) {
|
||||||
template <typename T> static std::string type_id() {
|
#if defined(__GNUG__)
|
||||||
std::string name(typeid(T).name());
|
int status = 0;
|
||||||
#if defined(__GNUG__)
|
std::unique_ptr<char, void (*)(void *)> res {
|
||||||
int status = 0;
|
abi::__cxa_demangle(name.c_str(), nullptr, nullptr, &status), std::free };
|
||||||
std::unique_ptr<char, void (*)(void *)> res {
|
if (status == 0)
|
||||||
abi::__cxa_demangle(name.c_str(), nullptr, nullptr, &status), std::free };
|
name = res.get();
|
||||||
if (status == 0)
|
|
||||||
name = res.get();
|
|
||||||
#else
|
#else
|
||||||
detail::erase_all(name, "class ");
|
detail::erase_all(name, "class ");
|
||||||
detail::erase_all(name, "struct ");
|
detail::erase_all(name, "struct ");
|
||||||
detail::erase_all(name, "enum ");
|
detail::erase_all(name, "enum ");
|
||||||
#endif
|
#endif
|
||||||
detail::erase_all(name, "pybind::");
|
detail::erase_all(name, "pybind::");
|
||||||
|
}
|
||||||
|
NAMESPACE_END(detail)
|
||||||
|
|
||||||
|
/// Return a string representation of a C++ type
|
||||||
|
template <typename T> static std::string type_id() {
|
||||||
|
std::string name(typeid(T).name());
|
||||||
|
detail::clean_type_id(name);
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user