Lines Matching refs:std

55 inline bool same_type(const std::type_info &lhs, const std::type_info &rhs) { return lhs == rhs; }
56 using type_hash = std::hash<std::type_index>;
57 using type_equal_to = std::equal_to<std::type_index>;
59 inline bool same_type(const std::type_info &lhs, const std::type_info &rhs) {
60 return lhs.name() == rhs.name() || std::strcmp(lhs.name(), rhs.name()) == 0;
64 size_t operator()(const std::type_index &t) const {
74 bool operator()(const std::type_index &lhs, const std::type_index &rhs) const {
75 return lhs.name() == rhs.name() || std::strcmp(lhs.name(), rhs.name()) == 0;
81 using type_map = std::unordered_map<std::type_index, value_type, type_hash, type_equal_to>;
84 inline size_t operator()(const std::pair<const PyObject *, const char *>& v) const {
85 size_t value = std::hash<const void *>()(v.first);
86 value ^= std::hash<const void *>()(v.second) + 0x9e3779b9 + (value<<6) + (value>>2);
95 type_map<type_info *> registered_types_cpp; // std::type_index -> pybind11's type information
96 std::unordered_map<PyTypeObject *, std::vector<type_info *>> registered_types_py; // PyTypeObject* -> base type_info(s)
97 std::unordered_multimap<const void *, instance*> registered_instances; // void * -> instance*
98 std::unordered_set<std::pair<const PyObject *, const char *>, overload_hash> inactive_overload_cache;
99 type_map<std::vector<bool (*)(PyObject *, void *&)>> direct_conversions;
100 std::unordered_map<const PyObject *, std::vector<PyObject *>> patients;
101 std::forward_list<void (*) (std::exception_ptr)> registered_exception_translators;
102 std::unordered_map<std::string, void *> shared_data; // Custom data to be shared across extensions
103 std::vector<PyObject *> loader_patient_stack; // Used by `loader_life_support`
104 std::forward_list<std::string> static_strings; // Stores the std::strings backing detail::c_str()
118 const std::type_info *cpptype;
123 std::vector<PyObject *(*)(PyObject *, PyTypeObject *)> implicit_conversions;
124 std::vector<std::pair<const std::type_info *, void *(*)(void *)>> implicit_casts;
125 std::vector<bool (*)(PyObject *, void *&)> *direct_conversions;
203 inline void translate_exception(std::exception_ptr p) {
205 if (p) std::rethrow_exception(p);
208 } catch (const std::bad_alloc &e) { PyErr_SetString(PyExc_MemoryError, e.what()); return;
209 } catch (const std::domain_error &e) { PyErr_SetString(PyExc_ValueError, e.what()); return;
210 } catch (const std::invalid_argument &e) { PyErr_SetString(PyExc_ValueError, e.what()); return;
211 } catch (const std::length_error &e) { PyErr_SetString(PyExc_ValueError, e.what()); return;
212 } catch (const std::out_of_range &e) { PyErr_SetString(PyExc_IndexError, e.what()); return;
213 } catch (const std::range_error &e) { PyErr_SetString(PyExc_ValueError, e.what()); return;
214 } catch (const std::exception &e) { PyErr_SetString(PyExc_RuntimeError, e.what()); return;
222 inline void translate_local_exception(std::exception_ptr p) {
224 if (p) std::rethrow_exception(p);
293 /// Constructs a std::string with the given arguments, stores it in `internals`, and returns its
300 strings.emplace_front(std::forward<Args>(args)...);
309 inline PYBIND11_NOINLINE void *get_shared_data(const std::string &name) {
316 inline PYBIND11_NOINLINE void *set_shared_data(const std::string &name, void *data) {
325 T &get_or_create_shared_data(const std::string &name) {