Commit 89ec7f3e by Ivan Smirnov

Add (const char *, size_t) ctors for str/bytes

parent 1e121781
......@@ -144,7 +144,7 @@ public:
}
py::bytes get_bytes_from_str() {
return (py::bytes) py::str(std::string("bar"));
return (py::bytes) py::str("bar", 3);
}
py::str get_str_from_string() {
......@@ -152,7 +152,7 @@ public:
}
py::str get_str_from_bytes() {
return (py::str) py::bytes(std::string("boo"));
return (py::str) py::bytes("boo", 3);
}
static int value;
......
......@@ -345,8 +345,8 @@ class str : public object {
public:
PYBIND11_OBJECT_DEFAULT(str, object, detail::PyUnicode_Check_Permissive)
str(const std::string &s)
: object(PyUnicode_FromStringAndSize(s.c_str(), (ssize_t) s.length()), false) {
str(const char *c, size_t n)
: object(PyUnicode_FromStringAndSize(c, (ssize_t) n), false) {
if (!m_ptr) pybind11_fail("Could not allocate string object!");
}
......@@ -355,6 +355,8 @@ public:
if (!m_ptr) pybind11_fail("Could not allocate string object!");
}
str(const std::string &s) : str(s.data(), s.size()) { }
operator std::string() const {
object temp = *this;
if (PyUnicode_Check(m_ptr)) {
......@@ -385,11 +387,13 @@ class bytes : public object {
public:
PYBIND11_OBJECT_DEFAULT(bytes, object, PYBIND11_BYTES_CHECK)
bytes(const std::string &s)
: object(PYBIND11_BYTES_FROM_STRING_AND_SIZE(s.data(), (ssize_t) s.size()), false) {
bytes(const char *c, size_t n)
: object(PYBIND11_BYTES_FROM_STRING_AND_SIZE(c, (ssize_t) n), false) {
if (!m_ptr) pybind11_fail("Could not allocate bytes object!");
}
bytes(const std::string &s) : bytes(s.data(), s.size()) { }
operator std::string() const {
char *buffer;
ssize_t length;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment