|
32 | 32 | #ifndef PYBIND11_ABSEIL_ABSL_CASTERS_H_
|
33 | 33 | #define PYBIND11_ABSEIL_ABSL_CASTERS_H_
|
34 | 34 |
|
35 |
| -#include <Python.h> |
36 | 35 | #include <pybind11/cast.h>
|
37 | 36 | #include <pybind11/pybind11.h>
|
38 | 37 | #include <pybind11/stl.h>
|
|
46 | 45 | #include <cstring>
|
47 | 46 | #include <tuple>
|
48 | 47 | #include <type_traits>
|
49 |
| -#include <utility> |
50 | 48 | #include <vector>
|
51 | 49 |
|
52 | 50 | #include "absl/cleanup/cleanup.h"
|
@@ -620,39 +618,10 @@ struct type_caster<absl::Cord> {
|
620 | 618 |
|
621 | 619 | // Conversion part 1 (Python->C++)
|
622 | 620 | bool load(handle src, bool convert) {
|
623 |
| - // If the source is a bytes/string object, we can avoid a copy by using |
624 |
| - // absl::MakeCordFromExternal. |
625 |
| - absl::optional<absl::string_view> view; |
626 |
| - if (PyUnicode_Check(src.ptr())) { |
627 |
| - Py_ssize_t size = 0; |
628 |
| - const char* data = PyUnicode_AsUTF8AndSize(src.ptr(), &size); |
629 |
| - if (data) { |
630 |
| - view = absl::string_view(data, size); |
631 |
| - } else { |
632 |
| - PyErr_Clear(); |
633 |
| - } |
634 |
| - } else if (PyBytes_Check(src.ptr())) { |
635 |
| - view = absl::string_view(PyBytes_AS_STRING(src.ptr()), |
636 |
| - PyBytes_GET_SIZE(src.ptr())); |
637 |
| - } |
638 |
| - if (view.has_value()) { |
639 |
| - if (!view->empty()) { |
640 |
| - // Bypass StringViewCaster life support as absl::Cord may outlive the |
641 |
| - // handle. |
642 |
| - src.inc_ref(); |
643 |
| - value = absl::MakeCordFromExternal(*view, [src] { |
644 |
| - PyGILState_STATE gstate = PyGILState_Ensure(); |
645 |
| - src.dec_ref(); |
646 |
| - PyGILState_Release(gstate); |
647 |
| - }); |
648 |
| - } else { |
649 |
| - value.Clear(); |
650 |
| - } |
651 |
| - return true; |
652 |
| - } |
653 | 621 | auto caster = StringViewCaster();
|
654 | 622 | if (caster.load(src, convert)) {
|
655 |
| - value = absl::Cord(cast_op<absl::string_view>(std::move(caster))); |
| 623 | + absl::string_view view = cast_op<absl::string_view>(std::move(caster)); |
| 624 | + value = view; |
656 | 625 | return true;
|
657 | 626 | }
|
658 | 627 | return false;
|
|
0 commit comments