Commit 53b26549 by Wenzel Jakob

python 3.2 compatiblity (closes #56)

parent ba0732e7
...@@ -30,11 +30,11 @@ dict_result['key2'] = 'value2' ...@@ -30,11 +30,11 @@ dict_result['key2'] = 'value2'
instance.print_dict_2(dict_result) instance.print_dict_2(dict_result)
set_result = instance.get_set() set_result = instance.get_set()
set_result.add(u'key3') set_result.add('key3')
instance.print_set(set_result) instance.print_set(set_result)
set_result = instance.get_set2() set_result = instance.get_set2()
set_result.add(u'key3') set_result.add('key3')
instance.print_set_2(set_result) instance.print_set_2(set_result)
list_result = instance.get_list() list_result = instance.get_list()
......
...@@ -10,62 +10,65 @@ ...@@ -10,62 +10,65 @@
#pragma once #pragma once
#if !defined(NAMESPACE_BEGIN) #if !defined(NAMESPACE_BEGIN)
#define NAMESPACE_BEGIN(name) namespace name { # define NAMESPACE_BEGIN(name) namespace name {
#endif #endif
#if !defined(NAMESPACE_END) #if !defined(NAMESPACE_END)
#define NAMESPACE_END(name) } # define NAMESPACE_END(name) }
#endif #endif
#if !defined(PYBIND11_EXPORT) #if !defined(PYBIND11_EXPORT)
#if defined(WIN32) || defined(_WIN32) # if defined(WIN32) || defined(_WIN32)
#define PYBIND11_EXPORT __declspec(dllexport) # define PYBIND11_EXPORT __declspec(dllexport)
#else # else
#define PYBIND11_EXPORT __attribute__ ((visibility("default"))) # define PYBIND11_EXPORT __attribute__ ((visibility("default")))
#endif # endif
#endif #endif
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define PYBIND11_NOINLINE __declspec(noinline) # define PYBIND11_NOINLINE __declspec(noinline)
#else #else
#define PYBIND11_NOINLINE __attribute__ ((noinline)) # define PYBIND11_NOINLINE __attribute__ ((noinline))
#endif #endif
#include <vector>
#include <string>
#include <stdexcept>
#include <unordered_set>
#include <unordered_map>
#include <memory>
/// Include Python header, disable linking to pythonX_d.lib on Windows in debug mode /// Include Python header, disable linking to pythonX_d.lib on Windows in debug mode
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define HAVE_ROUND # define HAVE_ROUND
#pragma warning(push) # pragma warning(push)
#pragma warning(disable: 4510 4610 4512 4005) # pragma warning(disable: 4510 4610 4512 4005)
#if _DEBUG # if _DEBUG
#define _DEBUG_MARKER # define _DEBUG_MARKER
#undef _DEBUG # undef _DEBUG
#endif # endif
#endif #endif
#include <Python.h> #include <Python.h>
#include <frameobject.h> #include <frameobject.h>
#ifdef isalnum #ifdef isalnum
#undef isalnum # undef isalnum
#undef isalpha # undef isalpha
#undef islower # undef islower
#undef isspace # undef isspace
#undef isupper # undef isupper
#undef tolower # undef tolower
#undef toupper # undef toupper
#endif #endif
#if defined(_MSC_VER) #if defined(_MSC_VER)
#if defined(_DEBUG_MARKER) # if defined(_DEBUG_MARKER)
#define _DEBUG # define _DEBUG
#undef _DEBUG_MARKER # undef _DEBUG_MARKER
#endif #endif
#pragma warning(pop) # pragma warning(pop)
#endif #endif
#include <vector>
#include <string>
#include <stdexcept>
#include <unordered_set>
#include <unordered_map>
#include <memory>
#if PY_MAJOR_VERSION >= 3 /// Compatibility macros for various Python versions #if PY_MAJOR_VERSION >= 3 /// Compatibility macros for various Python versions
#define PYBIND11_BYTES_CHECK PyBytes_Check #define PYBIND11_BYTES_CHECK PyBytes_Check
#define PYBIND11_BYTES_FROM_STRING PyBytes_FromString #define PYBIND11_BYTES_FROM_STRING PyBytes_FromString
......
...@@ -248,13 +248,13 @@ public: ...@@ -248,13 +248,13 @@ public:
} }
operator std::string() const { operator std::string() const {
#if PY_MAJOR_VERSION >= 3 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 3
return PyUnicode_AsUTF8(m_ptr); return PyUnicode_AsUTF8(m_ptr);
#else #else
object temp(PyUnicode_AsUTF8String(m_ptr), false); object temp(PyUnicode_AsUTF8String(m_ptr), false);
if (temp.ptr() == nullptr) if (temp.ptr() == nullptr)
pybind11_fail("Unable to extract string contents!"); pybind11_fail("Unable to extract string contents!");
return PyString_AsString(temp.ptr()); return PYBIND11_BYTES_AS_STRING(temp.ptr());
#endif #endif
} }
}; };
......
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