Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
pybind11
Commits
89ec7f3e
Commit
89ec7f3e
authored
Aug 13, 2016
by
Ivan Smirnov
Browse files
Add (const char *, size_t) ctors for str/bytes
parent
1e121781
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
6 deletions
+10
-6
example/example-python-types.cpp
example/example-python-types.cpp
+2
-2
include/pybind11/pytypes.h
include/pybind11/pytypes.h
+8
-4
No files found.
example/example-python-types.cpp
View file @
89ec7f3e
...
...
@@ -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
;
...
...
include/pybind11/pytypes.h
View file @
89ec7f3e
...
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment