typeid.h
Go to the documentation of this file.
1 /*
2  pybind11/detail/typeid.h: Compiler-independent access to type identifiers
3 
4  Copyright (c) 2016 Wenzel Jakob <wenzel.jakob@epfl.ch>
5 
6  All rights reserved. Use of this source code is governed by a
7  BSD-style license that can be found in the LICENSE file.
8 */
9 
10 #pragma once
11 
12 #include <cstdio>
13 #include <cstdlib>
14 
15 #if defined(__GNUG__)
16 #include <cxxabi.h>
17 #endif
18 
19 #include "common.h"
20 
24 inline void erase_all(std::string &string, const std::string &search) {
25  for (size_t pos = 0;;) {
26  pos = string.find(search, pos);
27  if (pos == std::string::npos) break;
28  string.erase(pos, search.length());
29  }
30 }
31 
32 PYBIND11_NOINLINE inline void clean_type_id(std::string &name) {
33 #if defined(__GNUG__)
34  int status = 0;
35  std::unique_ptr<char, void (*)(void *)> res {
36  abi::__cxa_demangle(name.c_str(), nullptr, nullptr, &status), std::free };
37  if (status == 0)
38  name = res.get();
39 #else
40  detail::erase_all(name, "class ");
41  detail::erase_all(name, "struct ");
42  detail::erase_all(name, "enum ");
43 #endif
44  detail::erase_all(name, "pybind11::");
45 }
47 
48 template <typename T> static std::string type_id() {
50  std::string name(typeid(T).name());
52  return name;
53 }
54 
Definition: Half.h:150
PYBIND11_NOINLINE void clean_type_id(std::string &name)
Definition: typeid.h:32
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
static std::string type_id()
Return a string representation of a C++ type.
Definition: typeid.h:49
Annotation for function names.
Definition: attr.h:36
#define PYBIND11_NAMESPACE_END(name)
#define PYBIND11_NAMESPACE_BEGIN(name)
void erase_all(std::string &string, const std::string &search)
Erase all occurrences of a substring.
Definition: typeid.h:24


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:51:19