diff --git a/pykd/boost.python/boost_python-src.dict.cpp b/pykd/boost.python/boost_python-src.dict.cpp deleted file mode 100644 index 0134390..0000000 --- a/pykd/boost.python/boost_python-src.dict.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "dict.cpp" diff --git a/pykd/boost.python/boost_python-src.errors.cpp b/pykd/boost.python/boost_python-src.errors.cpp deleted file mode 100644 index 2e07ffd..0000000 --- a/pykd/boost.python/boost_python-src.errors.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "errors.cpp" diff --git a/pykd/boost.python/boost_python-src.exec.cpp b/pykd/boost.python/boost_python-src.exec.cpp deleted file mode 100644 index ea11bdb..0000000 --- a/pykd/boost.python/boost_python-src.exec.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "exec.cpp" diff --git a/pykd/boost.python/boost_python-src.import.cpp b/pykd/boost.python/boost_python-src.import.cpp deleted file mode 100644 index cb15f74..0000000 --- a/pykd/boost.python/boost_python-src.import.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "import.cpp" diff --git a/pykd/boost.python/boost_python-src.list.cpp b/pykd/boost.python/boost_python-src.list.cpp deleted file mode 100644 index 4ef9dbf..0000000 --- a/pykd/boost.python/boost_python-src.list.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "list.cpp" diff --git a/pykd/boost.python/boost_python-src.long.cpp b/pykd/boost.python/boost_python-src.long.cpp deleted file mode 100644 index a1f9e37..0000000 --- a/pykd/boost.python/boost_python-src.long.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "long.cpp" diff --git a/pykd/boost.python/boost_python-src.module.cpp b/pykd/boost.python/boost_python-src.module.cpp deleted file mode 100644 index 470e296..0000000 --- a/pykd/boost.python/boost_python-src.module.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "module.cpp" diff --git a/pykd/boost.python/boost_python-src.object_operators.cpp b/pykd/boost.python/boost_python-src.object_operators.cpp deleted file mode 100644 index 81acc34..0000000 --- a/pykd/boost.python/boost_python-src.object_operators.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "object_operators.cpp" diff --git a/pykd/boost.python/boost_python-src.object_protocol.cpp b/pykd/boost.python/boost_python-src.object_protocol.cpp deleted file mode 100644 index cafe3ea..0000000 --- a/pykd/boost.python/boost_python-src.object_protocol.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "object_protocol.cpp" diff --git a/pykd/boost.python/boost_python-src.slice.cpp b/pykd/boost.python/boost_python-src.slice.cpp deleted file mode 100644 index c8d7ffe..0000000 --- a/pykd/boost.python/boost_python-src.slice.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "slice.cpp" diff --git a/pykd/boost.python/boost_python-src.str.cpp b/pykd/boost.python/boost_python-src.str.cpp deleted file mode 100644 index 1e7300c..0000000 --- a/pykd/boost.python/boost_python-src.str.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "str.cpp" diff --git a/pykd/boost.python/boost_python-src.tuple.cpp b/pykd/boost.python/boost_python-src.tuple.cpp deleted file mode 100644 index 045db47..0000000 --- a/pykd/boost.python/boost_python-src.tuple.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "tuple.cpp" diff --git a/pykd/boost.python/boost_python-src.wrapper.cpp b/pykd/boost.python/boost_python-src.wrapper.cpp deleted file mode 100644 index 75b1f4d..0000000 --- a/pykd/boost.python/boost_python-src.wrapper.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "wrapper.cpp" diff --git a/pykd/boost.python/converter/arg_to_python_base.cpp b/pykd/boost.python/converter/arg_to_python_base.cpp deleted file mode 100644 index d872314..0000000 --- a/pykd/boost.python/converter/arg_to_python_base.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/converter/arg_to_python_base.hpp> -#include <boost/python/errors.hpp> -#include <boost/python/converter/registrations.hpp> -#include <boost/python/handle.hpp> -#include <boost/python/refcount.hpp> - -namespace boost { namespace python { namespace converter { - -namespace detail -{ - arg_to_python_base::arg_to_python_base( - void const volatile* source, registration const& converters) -# if !defined(BOOST_MSVC) || BOOST_MSVC <= 1300 || _MSC_FULL_VER > 13102179 - : handle<> -# else - : m_ptr -# endif - (converters.to_python(source)) - { - } -} - -}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp b/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp deleted file mode 100644 index dd9752a..0000000 --- a/pykd/boost.python/converter/boost_python-src.converter.arg_to_python_base.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "arg_to_python_base.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp b/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp deleted file mode 100644 index df31ccf..0000000 --- a/pykd/boost.python/converter/boost_python-src.converter.builtin_converters.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "builtin_converters.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp b/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp deleted file mode 100644 index fc71566..0000000 --- a/pykd/boost.python/converter/boost_python-src.converter.from_python.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "from_python.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.registry.cpp b/pykd/boost.python/converter/boost_python-src.converter.registry.cpp deleted file mode 100644 index 7cc2cf8..0000000 --- a/pykd/boost.python/converter/boost_python-src.converter.registry.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "registry.cpp" diff --git a/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp b/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp deleted file mode 100644 index afaf12b..0000000 --- a/pykd/boost.python/converter/boost_python-src.converter.type_id.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "type_id.cpp" diff --git a/pykd/boost.python/converter/builtin_converters.cpp b/pykd/boost.python/converter/builtin_converters.cpp deleted file mode 100644 index ee2d5b4..0000000 --- a/pykd/boost.python/converter/builtin_converters.cpp +++ /dev/null @@ -1,592 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/handle.hpp> -#include <boost/python/type_id.hpp> -#include <boost/python/errors.hpp> -#include <boost/python/refcount.hpp> - -#include <boost/python/detail/config.hpp> -#include <boost/python/detail/wrap_python.hpp> - -#include <boost/python/converter/builtin_converters.hpp> -#include <boost/python/converter/rvalue_from_python_data.hpp> -#include <boost/python/converter/registry.hpp> -#include <boost/python/converter/registrations.hpp> -#include <boost/python/converter/shared_ptr_deleter.hpp> -#include <boost/python/converter/pytype_function.hpp> - -#include <boost/cast.hpp> -#include <string> -#include <complex> - -namespace boost { namespace python { namespace converter { - -shared_ptr_deleter::shared_ptr_deleter(handle<> owner) - : owner(owner) -{} - -shared_ptr_deleter::~shared_ptr_deleter() {} - -void shared_ptr_deleter::operator()(void const*) -{ - owner.reset(); -} - -namespace -{ - - // An lvalue conversion function which extracts a char const* from a - // Python String. -#if PY_VERSION_HEX < 0x03000000 - void* convert_to_cstring(PyObject* obj) - { - return PyString_Check(obj) ? PyString_AsString(obj) : 0; - } -#elif PY_VERSION_HEX < 0x03070000 - void* convert_to_cstring(PyObject* obj) - { - return PyUnicode_Check(obj) ? _PyUnicode_AsString(obj) : 0; - } -#else - void* convert_to_cstring(PyObject* obj) - { - return PyUnicode_Check(obj) ? const_cast<void*>(reinterpret_cast<const void*>(_PyUnicode_AsString(obj))) : 0; - } -#endif - - // Given a target type and a SlotPolicy describing how to perform a - // given conversion, registers from_python converters which use the - // SlotPolicy to extract the type. - template <class T, class SlotPolicy> - struct slot_rvalue_from_python - { - public: - slot_rvalue_from_python() - { - registry::insert( - &slot_rvalue_from_python<T,SlotPolicy>::convertible - , &slot_rvalue_from_python<T,SlotPolicy>::construct - , type_id<T>() - , &SlotPolicy::get_pytype - ); - } - - private: - static void* convertible(PyObject* obj) - { - unaryfunc* slot = SlotPolicy::get_slot(obj); - return slot && *slot ? slot : 0; - } - - static void construct(PyObject* obj, rvalue_from_python_stage1_data* data) - { - // Get the (intermediate) source object - unaryfunc creator = *static_cast<unaryfunc*>(data->convertible); - handle<> intermediate(creator(obj)); - - // Get the location in which to construct - void* storage = ((rvalue_from_python_storage<T>*)data)->storage.bytes; -# ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable:4244) -# endif - new (storage) T( SlotPolicy::extract(intermediate.get()) ); - -# ifdef _MSC_VER -# pragma warning(pop) -# endif - // record successful construction - data->convertible = storage; - } - }; - - // identity_unaryfunc/py_object_identity -- manufacture a unaryfunc - // "slot" which just returns its argument. - extern "C" PyObject* identity_unaryfunc(PyObject* x) - { - Py_INCREF(x); - return x; - } - unaryfunc py_object_identity = identity_unaryfunc; - -#if PY_VERSION_HEX >= 0x03000000 - // As in Python 3 there is only one integer type, we can have much - // simplified logic. - // XXX(bhy) maybe the code will work with 2.6 or even 2.5? - struct int_rvalue_from_python_base - { - static unaryfunc* get_slot(PyObject* obj) - { - return PyLong_Check(obj) ? &py_object_identity : 0; - } - static PyTypeObject const* get_pytype() {return &PyLong_Type;} - }; - - template <class T> - struct signed_int_rvalue_from_python : int_rvalue_from_python_base - { - static T extract(PyObject* intermediate) - { - long x = PyLong_AsLong(intermediate); - if (PyErr_Occurred()) - throw_error_already_set(); - return numeric_cast<T>(x); - } - }; - - template <class T> - struct unsigned_int_rvalue_from_python : int_rvalue_from_python_base - { - static T extract(PyObject* intermediate) - { - unsigned long x = PyLong_AsUnsignedLong(intermediate); - if (PyErr_Occurred()) - throw_error_already_set(); - return numeric_cast<T>(x); - } - }; -#else // PY_VERSION_HEX >= 0x03000000 - // A SlotPolicy for extracting signed integer types from Python objects - struct signed_int_rvalue_from_python_base - { - static unaryfunc* get_slot(PyObject* obj) - { - PyNumberMethods* number_methods = obj->ob_type->tp_as_number; - if (number_methods == 0) - return 0; - - return ( -#if PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) - !PyBool_Check(obj) && -#endif - (PyInt_Check(obj) || PyLong_Check(obj))) - - ? &number_methods->nb_int : 0; - } - static PyTypeObject const* get_pytype() { return &PyInt_Type;} - }; - - template <class T> - struct signed_int_rvalue_from_python : signed_int_rvalue_from_python_base - { - static T extract(PyObject* intermediate) - { - long x = PyInt_AsLong(intermediate); - if (PyErr_Occurred()) - throw_error_already_set(); - return numeric_cast<T>(x); - } - }; - - // A SlotPolicy for extracting unsigned integer types from Python objects - struct unsigned_int_rvalue_from_python_base - { - static unaryfunc* get_slot(PyObject* obj) - { - PyNumberMethods* number_methods = obj->ob_type->tp_as_number; - if (number_methods == 0) - return 0; - - return ( -#if PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) - !PyBool_Check(obj) && -#endif - (PyInt_Check(obj) || PyLong_Check(obj))) - ? &py_object_identity : 0; - } - static PyTypeObject const* get_pytype() { return &PyInt_Type;} - }; - - template <class T> - struct unsigned_int_rvalue_from_python : unsigned_int_rvalue_from_python_base - { - static T extract(PyObject* intermediate) - { - if (PyLong_Check(intermediate)) { - // PyLong_AsUnsignedLong() checks for negative overflow, so no - // need to check it here. - unsigned long result = PyLong_AsUnsignedLong(intermediate); - if (PyErr_Occurred()) - throw_error_already_set(); - return numeric_cast<T>(result); - } else { - // None of PyInt_AsUnsigned*() functions check for negative - // overflow, so use PyInt_AS_LONG instead and check if number is - // negative, issuing the exception appropriately. - long result = PyInt_AS_LONG(intermediate); - if (PyErr_Occurred()) - throw_error_already_set(); - if (result < 0) { - PyErr_SetString(PyExc_OverflowError, "can't convert negative" - " value to unsigned"); - throw_error_already_set(); - } - return numeric_cast<T>(result); - } - } - }; -#endif // PY_VERSION_HEX >= 0x03000000 - -// Checking Python's macro instead of Boost's - we don't seem to get -// the config right all the time. Furthermore, Python's is defined -// when long long is absent but __int64 is present. - -#ifdef HAVE_LONG_LONG - // A SlotPolicy for extracting long long types from Python objects - - struct long_long_rvalue_from_python_base - { - static unaryfunc* get_slot(PyObject* obj) - { -#if PY_VERSION_HEX >= 0x03000000 - return PyLong_Check(obj) ? &py_object_identity : 0; -#else - PyNumberMethods* number_methods = obj->ob_type->tp_as_number; - if (number_methods == 0) - return 0; - - // Return the identity conversion slot to avoid creating a - // new object. We'll handle that in the extract function - if (PyInt_Check(obj)) - return &number_methods->nb_int; - else if (PyLong_Check(obj)) - return &number_methods->nb_long; - else - return 0; -#endif - } - static PyTypeObject const* get_pytype() { return &PyLong_Type;} - }; - - struct long_long_rvalue_from_python : long_long_rvalue_from_python_base - { - static BOOST_PYTHON_LONG_LONG extract(PyObject* intermediate) - { -#if PY_VERSION_HEX < 0x03000000 - if (PyInt_Check(intermediate)) - { - return PyInt_AS_LONG(intermediate); - } - else -#endif - { - BOOST_PYTHON_LONG_LONG result = PyLong_AsLongLong(intermediate); - - if (PyErr_Occurred()) - throw_error_already_set(); - - return result; - } - } - }; - - struct unsigned_long_long_rvalue_from_python : long_long_rvalue_from_python_base - { - static unsigned BOOST_PYTHON_LONG_LONG extract(PyObject* intermediate) - { -#if PY_VERSION_HEX < 0x03000000 - if (PyInt_Check(intermediate)) - { - return numeric_cast<unsigned BOOST_PYTHON_LONG_LONG>(PyInt_AS_LONG(intermediate)); - } - else -#endif - { - unsigned BOOST_PYTHON_LONG_LONG result = PyLong_AsUnsignedLongLong(intermediate); - - if (PyErr_Occurred()) - throw_error_already_set(); - - return result; - } - } - }; -#endif - - // A SlotPolicy for extracting bool from a Python object - struct bool_rvalue_from_python - { - static unaryfunc* get_slot(PyObject* obj) - { -#if PY_VERSION_HEX >= 0x03000000 - return obj == Py_None || PyLong_Check(obj) ? &py_object_identity : 0; -#elif PY_VERSION_HEX >= 0x02040000 && defined(BOOST_PYTHON_BOOL_INT_STRICT) - return obj == Py_None || PyBool_Check(obj) ? &py_object_identity : 0; -#else - return obj == Py_None || PyInt_Check(obj) ? &py_object_identity : 0; -#endif - } - - static bool extract(PyObject* intermediate) - { - return PyObject_IsTrue(intermediate); - } - - static PyTypeObject const* get_pytype() - { -#if PY_VERSION_HEX >= 0x02030000 - return &PyBool_Type; -#else - return &PyInt_Type; -#endif - } - }; - - // A SlotPolicy for extracting floating types from Python objects. - struct float_rvalue_from_python - { - static unaryfunc* get_slot(PyObject* obj) - { - PyNumberMethods* number_methods = obj->ob_type->tp_as_number; - if (number_methods == 0) - return 0; - - // For integer types, return the tp_int conversion slot to avoid - // creating a new object. We'll handle that below -#if PY_VERSION_HEX < 0x03000000 - if (PyInt_Check(obj)) - return &number_methods->nb_int; -#endif - - return (PyLong_Check(obj) || PyFloat_Check(obj)) - ? &number_methods->nb_float : 0; - } - - static double extract(PyObject* intermediate) - { -#if PY_VERSION_HEX < 0x03000000 - if (PyInt_Check(intermediate)) - { - return PyInt_AS_LONG(intermediate); - } - else -#endif - { - return PyFloat_AS_DOUBLE(intermediate); - } - } - static PyTypeObject const* get_pytype() { return &PyFloat_Type;} - }; - -#if PY_VERSION_HEX >= 0x03000000 - unaryfunc py_unicode_as_string_unaryfunc = PyUnicode_AsUTF8String; -#endif - - // A SlotPolicy for extracting C++ strings from Python objects. - struct string_rvalue_from_python - { - // If the underlying object is "string-able" this will succeed - static unaryfunc* get_slot(PyObject* obj) - { -#if PY_VERSION_HEX >= 0x03000000 - return (PyUnicode_Check(obj)) ? &py_unicode_as_string_unaryfunc : - PyBytes_Check(obj) ? &py_object_identity : 0; -#else - return (PyString_Check(obj)) ? &obj->ob_type->tp_str : 0; - -#endif - }; - - // Remember that this will be used to construct the result object -#if PY_VERSION_HEX >= 0x03000000 - static std::string extract(PyObject* intermediate) - { - return std::string(PyBytes_AsString(intermediate),PyBytes_Size(intermediate)); - } - static PyTypeObject const* get_pytype() { return &PyUnicode_Type;} -#else - static std::string extract(PyObject* intermediate) - { - return std::string(PyString_AsString(intermediate),PyString_Size(intermediate)); - } - static PyTypeObject const* get_pytype() { return &PyString_Type;} -#endif - }; - -#if defined(Py_USING_UNICODE) && !defined(BOOST_NO_STD_WSTRING) - // encode_string_unaryfunc/py_encode_string -- manufacture a unaryfunc - // "slot" which encodes a Python string using the default encoding - extern "C" PyObject* encode_string_unaryfunc(PyObject* x) - { - return PyUnicode_FromEncodedObject( x, 0, 0 ); - } - unaryfunc py_encode_string = encode_string_unaryfunc; - - // A SlotPolicy for extracting C++ strings from Python objects. - struct wstring_rvalue_from_python - { - // If the underlying object is "string-able" this will succeed - static unaryfunc* get_slot(PyObject* obj) - { - return PyUnicode_Check(obj) - ? &py_object_identity -#if PY_VERSION_HEX >= 0x03000000 - : PyBytes_Check(obj) -#else - : PyString_Check(obj) -#endif - ? &py_encode_string - : 0; - }; - - // Remember that this will be used to construct the result object - static std::wstring extract(PyObject* intermediate) - { - // On Windows, with Python >= 3.3, PyObject_Length cannot be used to get - // the size of the wchar_t string, because it will count the number of - // *code points*, but some characters not on the BMP will use two UTF-16 - // *code units* (surrogate pairs). - // This is not a problem on Unix, since wchar_t is 32-bit. -#if defined(_WIN32) && PY_VERSION_HEX >= 0x03030000 - BOOST_STATIC_ASSERT(sizeof(wchar_t) == 2); - - Py_ssize_t size = 0; - wchar_t *buf = PyUnicode_AsWideCharString(intermediate, &size); - if (buf == NULL) { - boost::python::throw_error_already_set(); - } - std::wstring result(buf, size); - PyMem_Free(buf); -#else - std::wstring result(::PyObject_Length(intermediate), L' '); - if (!result.empty()) - { - int err = PyUnicode_AsWideChar( -#if PY_VERSION_HEX < 0x03020000 - (PyUnicodeObject *) -#endif - intermediate - , &result[0] - , result.size()); - - if (err == -1) - throw_error_already_set(); - } -#endif - return result; - } - static PyTypeObject const* get_pytype() { return &PyUnicode_Type;} - }; -#endif - - struct complex_rvalue_from_python - { - static unaryfunc* get_slot(PyObject* obj) - { - if (PyComplex_Check(obj)) - return &py_object_identity; - else - return float_rvalue_from_python::get_slot(obj); - } - - static std::complex<double> extract(PyObject* intermediate) - { - if (PyComplex_Check(intermediate)) - { - return std::complex<double>( - PyComplex_RealAsDouble(intermediate) - , PyComplex_ImagAsDouble(intermediate)); - } -#if PY_VERSION_HEX < 0x03000000 - else if (PyInt_Check(intermediate)) - { - return PyInt_AS_LONG(intermediate); - } -#endif - else - { - return PyFloat_AS_DOUBLE(intermediate); - } - } - static PyTypeObject const* get_pytype() { return &PyComplex_Type;} - }; -} - -BOOST_PYTHON_DECL PyObject* do_return_to_python(char x) -{ -#if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_FromStringAndSize(&x, 1); -#else - return PyString_FromStringAndSize(&x, 1); -#endif -} - -BOOST_PYTHON_DECL PyObject* do_return_to_python(char const* x) -{ -#if PY_VERSION_HEX >= 0x03000000 - return x ? PyUnicode_FromString(x) : boost::python::detail::none(); -#else - return x ? PyString_FromString(x) : boost::python::detail::none(); -#endif -} - -BOOST_PYTHON_DECL PyObject* do_return_to_python(PyObject* x) -{ - return x ? x : boost::python::detail::none(); -} - -BOOST_PYTHON_DECL PyObject* do_arg_to_python(PyObject* x) -{ - if (x == 0) - return boost::python::detail::none(); - - Py_INCREF(x); - return x; -} - -#define REGISTER_INT_CONVERTERS(signedness, U) \ - slot_rvalue_from_python< \ - signedness U \ - ,signedness##_int_rvalue_from_python<signedness U> \ - >() - -#define REGISTER_INT_CONVERTERS2(U) \ - REGISTER_INT_CONVERTERS(signed, U); \ - REGISTER_INT_CONVERTERS(unsigned, U) - -void initialize_builtin_converters() -{ - // booleans - slot_rvalue_from_python<bool,bool_rvalue_from_python>(); - - // integer types - REGISTER_INT_CONVERTERS2(char); - REGISTER_INT_CONVERTERS2(short); - REGISTER_INT_CONVERTERS2(int); - REGISTER_INT_CONVERTERS2(long); - -// using Python's macro instead of Boost's - we don't seem to get the -// config right all the time. -# ifdef HAVE_LONG_LONG - slot_rvalue_from_python<signed BOOST_PYTHON_LONG_LONG,long_long_rvalue_from_python>(); - slot_rvalue_from_python<unsigned BOOST_PYTHON_LONG_LONG,unsigned_long_long_rvalue_from_python>(); -# endif - - // floating types - slot_rvalue_from_python<float,float_rvalue_from_python>(); - slot_rvalue_from_python<double,float_rvalue_from_python>(); - slot_rvalue_from_python<long double,float_rvalue_from_python>(); - - slot_rvalue_from_python<std::complex<float>,complex_rvalue_from_python>(); - slot_rvalue_from_python<std::complex<double>,complex_rvalue_from_python>(); - slot_rvalue_from_python<std::complex<long double>,complex_rvalue_from_python>(); - - // Add an lvalue converter for char which gets us char const* -#if PY_VERSION_HEX < 0x03000000 - registry::insert(convert_to_cstring,type_id<char>(),&converter::wrap_pytype<&PyString_Type>::get_pytype); -#else - registry::insert(convert_to_cstring,type_id<char>(),&converter::wrap_pytype<&PyUnicode_Type>::get_pytype); -#endif - - // Register by-value converters to std::string, std::wstring -#if defined(Py_USING_UNICODE) && !defined(BOOST_NO_STD_WSTRING) - slot_rvalue_from_python<std::wstring, wstring_rvalue_from_python>(); -# endif - slot_rvalue_from_python<std::string, string_rvalue_from_python>(); - -} - -}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/from_python.cpp b/pykd/boost.python/converter/from_python.cpp deleted file mode 100644 index 9678be1..0000000 --- a/pykd/boost.python/converter/from_python.cpp +++ /dev/null @@ -1,303 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/converter/from_python.hpp> -#include <boost/python/converter/registrations.hpp> -#include <boost/python/converter/rvalue_from_python_data.hpp> - -#include <boost/python/object/find_instance.hpp> - -#include <boost/python/handle.hpp> -#include <boost/python/detail/raw_pyobject.hpp> -#include <boost/python/cast.hpp> - -#include <vector> -#include <algorithm> - -namespace boost { namespace python { namespace converter { - -// rvalue_from_python_stage1 -- do the first stage of a conversion -// from a Python object to a C++ rvalue. -// -// source - the Python object to be converted -// converters - the registry entry for the target type T -// -// Postcondition: where x is the result, one of: -// -// 1. x.convertible == 0, indicating failure -// -// 2. x.construct == 0, x.convertible is the address of an object of -// type T. Indicates a successful lvalue conversion -// -// 3. where y is of type rvalue_from_python_data<T>, -// x.construct(source, y) constructs an object of type T -// in y.storage.bytes and then sets y.convertible == y.storage.bytes, -// or else throws an exception and has no effect. -BOOST_PYTHON_DECL rvalue_from_python_stage1_data rvalue_from_python_stage1( - PyObject* source - , registration const& converters) -{ - rvalue_from_python_stage1_data data; - - // First check to see if it's embedded in an extension class - // instance, as a special case. - data.convertible = objects::find_instance_impl(source, converters.target_type, converters.is_shared_ptr); - data.construct = 0; - if (!data.convertible) - { - for (rvalue_from_python_chain const* chain = converters.rvalue_chain; - chain != 0; - chain = chain->next) - { - void* r = chain->convertible(source); - if (r != 0) - { - data.convertible = r; - data.construct = chain->construct; - break; - } - } - } - return data; -} - -// rvalue_result_from_python -- return the address of a C++ object which -// can be used as the result of calling a Python function. -// -// src - the Python object to be converted -// -// data - a reference to the base part of a -// rvalue_from_python_data<T> object, where T is the -// target type of the conversion. -// -// Requires: data.convertible == ®istered<T>::converters -// -BOOST_PYTHON_DECL void* rvalue_result_from_python( - PyObject* src, rvalue_from_python_stage1_data& data) -{ - // Retrieve the registration - // Cast in two steps for less-capable compilers - void const* converters_ = data.convertible; - registration const& converters = *static_cast<registration const*>(converters_); - - // Look for an eligible converter - data = rvalue_from_python_stage1(src, converters); - return rvalue_from_python_stage2(src, data, converters); -} - -BOOST_PYTHON_DECL void* rvalue_from_python_stage2( - PyObject* source, rvalue_from_python_stage1_data& data, registration const& converters) -{ - if (!data.convertible) - { - handle<> msg( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromFormat -#else - ::PyString_FromFormat -#endif - ( - "No registered converter was able to produce a C++ rvalue of type %s from this Python object of type %s" - , converters.target_type.name() - , source->ob_type->tp_name - )); - - PyErr_SetObject(PyExc_TypeError, msg.get()); - throw_error_already_set(); - } - - // If a construct function was registered (i.e. we found an - // rvalue conversion), call it now. - if (data.construct != 0) - data.construct(source, &data); - - // Return the address of the resulting C++ object - return data.convertible; -} - -BOOST_PYTHON_DECL void* get_lvalue_from_python( - PyObject* source - , registration const& converters) -{ - // Check to see if it's embedded in a class instance - void* x = objects::find_instance_impl(source, converters.target_type); - if (x) - return x; - - lvalue_from_python_chain const* chain = converters.lvalue_chain; - for (;chain != 0; chain = chain->next) - { - void* r = chain->convert(source); - if (r != 0) - return r; - } - return 0; -} - -namespace -{ - // Prevent looping in implicit conversions. This could/should be - // much more efficient, but will work for now. - typedef std::vector<rvalue_from_python_chain const*> visited_t; - static visited_t visited; - - inline bool visit(rvalue_from_python_chain const* chain) - { - visited_t::iterator const p = std::lower_bound(visited.begin(), visited.end(), chain); - if (p != visited.end() && *p == chain) - return false; - visited.insert(p, chain); - return true; - } - - // RAII class for managing global visited marks. - struct unvisit - { - unvisit(rvalue_from_python_chain const* chain) - : chain(chain) {} - - ~unvisit() - { - visited_t::iterator const p = std::lower_bound(visited.begin(), visited.end(), chain); - assert(p != visited.end()); - visited.erase(p); - } - private: - rvalue_from_python_chain const* chain; - }; -} - - -BOOST_PYTHON_DECL bool implicit_rvalue_convertible_from_python( - PyObject* source - , registration const& converters) -{ - if (objects::find_instance_impl(source, converters.target_type)) - return true; - - rvalue_from_python_chain const* chain = converters.rvalue_chain; - - if (!visit(chain)) - return false; - - unvisit protect(chain); - - for (;chain != 0; chain = chain->next) - { - if (chain->convertible(source)) - return true; - } - - return false; -} - -namespace -{ - void throw_no_lvalue_from_python(PyObject* source, registration const& converters, char const* ref_type) - { - handle<> msg( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromFormat -#else - ::PyString_FromFormat -#endif - ( - "No registered converter was able to extract a C++ %s to type %s" - " from this Python object of type %s" - , ref_type - , converters.target_type.name() - , source->ob_type->tp_name - )); - - PyErr_SetObject(PyExc_TypeError, msg.get()); - - throw_error_already_set(); - } - - void* lvalue_result_from_python( - PyObject* source - , registration const& converters - , char const* ref_type) - { - handle<> holder(source); - if (source->ob_refcnt <= 1) - { - handle<> msg( -#if PY_VERSION_HEX >= 0x3000000 - ::PyUnicode_FromFormat -#else - ::PyString_FromFormat -#endif - ( - "Attempt to return dangling %s to object of type: %s" - , ref_type - , converters.target_type.name())); - - PyErr_SetObject(PyExc_ReferenceError, msg.get()); - - throw_error_already_set(); - } - - void* result = get_lvalue_from_python(source, converters); - if (!result) - (throw_no_lvalue_from_python)(source, converters, ref_type); - return result; - } - -} - -BOOST_PYTHON_DECL void throw_no_pointer_from_python(PyObject* source, registration const& converters) -{ - (throw_no_lvalue_from_python)(source, converters, "pointer"); -} - -BOOST_PYTHON_DECL void throw_no_reference_from_python(PyObject* source, registration const& converters) -{ - (throw_no_lvalue_from_python)(source, converters, "reference"); -} - -BOOST_PYTHON_DECL void* reference_result_from_python( - PyObject* source - , registration const& converters) -{ - return (lvalue_result_from_python)(source, converters, "reference"); -} - -BOOST_PYTHON_DECL void* pointer_result_from_python( - PyObject* source - , registration const& converters) -{ - if (source == Py_None) - { - Py_DECREF(source); - return 0; - } - return (lvalue_result_from_python)(source, converters, "pointer"); -} - -BOOST_PYTHON_DECL void void_result_from_python(PyObject* o) -{ - Py_DECREF(expect_non_null(o)); -} - -} // namespace boost::python::converter - -BOOST_PYTHON_DECL PyObject* -pytype_check(PyTypeObject* type_, PyObject* source) -{ - if (!PyObject_IsInstance(source, python::upcast<PyObject>(type_))) - { - ::PyErr_Format( - PyExc_TypeError - , "Expecting an object of type %s; got an object of type %s instead" - , type_->tp_name - , source->ob_type->tp_name - ); - throw_error_already_set(); - } - return source; -} - -}} // namespace boost::python diff --git a/pykd/boost.python/converter/registry.cpp b/pykd/boost.python/converter/registry.cpp deleted file mode 100644 index aa20c3f..0000000 --- a/pykd/boost.python/converter/registry.cpp +++ /dev/null @@ -1,306 +0,0 @@ -// Copyright David Abrahams 2001. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/converter/registry.hpp> -#include <boost/python/converter/registrations.hpp> -#include <boost/python/converter/builtin_converters.hpp> - -#include <set> -#include <stdexcept> - -#if defined(__APPLE__) && defined(__MACH__) && defined(__GNUC__) \ - && __GNUC__ == 3 && __GNUC_MINOR__ <= 4 && !defined(__APPLE_CC__) -# define BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND -#endif - -#if defined(BOOST_PYTHON_TRACE_REGISTRY) \ - || defined(BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND) -# include <iostream> -#endif - -namespace boost { namespace python { namespace converter { -BOOST_PYTHON_DECL PyTypeObject const* registration::expected_from_python_type() const -{ - if (this->m_class_object != 0) - return this->m_class_object; - - std::set<PyTypeObject const*> pool; - - for(rvalue_from_python_chain* r = rvalue_chain; r ; r=r->next) - if(r->expected_pytype) - pool.insert(r->expected_pytype()); - - //for now I skip the search for common base - if (pool.size()==1) - return *pool.begin(); - - return 0; - -} - -BOOST_PYTHON_DECL PyTypeObject const* registration::to_python_target_type() const -{ - if (this->m_class_object != 0) - return this->m_class_object; - - if (this->m_to_python_target_type != 0) - return this->m_to_python_target_type(); - - return 0; -} - -BOOST_PYTHON_DECL PyTypeObject* registration::get_class_object() const -{ - if (this->m_class_object == 0) - { - ::PyErr_Format( - PyExc_TypeError - , const_cast<char*>("No Python class registered for C++ class %s") - , this->target_type.name()); - - throw_error_already_set(); - } - - return this->m_class_object; -} - -BOOST_PYTHON_DECL PyObject* registration::to_python(void const volatile* source) const -{ - if (this->m_to_python == 0) - { - handle<> msg( -#if PY_VERSION_HEX >= 0x3000000 - ::PyUnicode_FromFormat -#else - ::PyString_FromFormat -#endif - ( - "No to_python (by-value) converter found for C++ type: %s" - , this->target_type.name() - ) - ); - - PyErr_SetObject(PyExc_TypeError, msg.get()); - - throw_error_already_set(); - } - - return source == 0 - ? incref(Py_None) - : this->m_to_python(const_cast<void*>(source)); -} - -namespace -{ - template< typename T > - void delete_node( T* node ) - { - if( !!node && !!node->next ) - delete_node( node->next ); - delete node; - } -} - -registration::~registration() -{ - delete_node(lvalue_chain); - delete_node(rvalue_chain); -} - - -namespace // <unnamed> -{ - typedef registration entry; - - typedef std::set<entry> registry_t; - -#ifndef BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND - registry_t& entries() - { - static registry_t registry; - -# ifndef BOOST_PYTHON_SUPPRESS_REGISTRY_INITIALIZATION - static bool builtin_converters_initialized = false; - if (!builtin_converters_initialized) - { - // Make this true early because registering the builtin - // converters will cause recursion. - builtin_converters_initialized = true; - - initialize_builtin_converters(); - } -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "registry: "; - for (registry_t::iterator p = registry.begin(); p != registry.end(); ++p) - { - std::cout << p->target_type << "; "; - } - std::cout << '\n'; -# endif -# endif - return registry; - } -#else - registry_t& static_registry() - { - static registry_t result; - return result; - } - - bool static_builtin_converters_initialized() - { - static bool result = false; - if (result == false) { - result = true; - std::cout << std::flush; - return false; - } - return true; - } - - registry_t& entries() - { -# ifndef BOOST_PYTHON_SUPPRESS_REGISTRY_INITIALIZATION - if (!static_builtin_converters_initialized()) - { - initialize_builtin_converters(); - } -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "registry: "; - for (registry_t::iterator p = static_registry().begin(); p != static_registry().end(); ++p) - { - std::cout << p->target_type << "; "; - } - std::cout << '\n'; -# endif -# endif - return static_registry(); - } -#endif // BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND - - entry* get(type_info type, bool is_shared_ptr = false) - { -# ifdef BOOST_PYTHON_TRACE_REGISTRY - registry_t::iterator p = entries().find(entry(type)); - - std::cout << "looking up " << type << ": " - << (p == entries().end() || p->target_type != type - ? "...NOT found\n" : "...found\n"); -# endif - std::pair<registry_t::const_iterator,bool> pos_ins - = entries().insert(entry(type,is_shared_ptr)); - -# if __MWERKS__ >= 0x3000 - // do a little invariant checking if a change was made - if ( pos_ins.second ) - assert(entries().invariants()); -# endif - return const_cast<entry*>(&*pos_ins.first); - } -} // namespace <unnamed> - -namespace registry -{ - void insert(to_python_function_t f, type_info source_t, PyTypeObject const* (*to_python_target_type)()) - { -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "inserting to_python " << source_t << "\n"; -# endif - entry* slot = get(source_t); - - assert(slot->m_to_python == 0); // we have a problem otherwise - if (slot->m_to_python != 0) - { - std::string msg = ( - std::string("to-Python converter for ") - + source_t.name() - + " already registered; second conversion method ignored." - ); - - if ( ::PyErr_Warn( NULL, const_cast<char*>(msg.c_str()) ) ) - { - throw_error_already_set(); - } - } - slot->m_to_python = f; - slot->m_to_python_target_type = to_python_target_type; - } - - // Insert an lvalue from_python converter - void insert(convertible_function convert, type_info key, PyTypeObject const* (*exp_pytype)()) - { -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "inserting lvalue from_python " << key << "\n"; -# endif - entry* found = get(key); - lvalue_from_python_chain *registration = new lvalue_from_python_chain; - registration->convert = convert; - registration->next = found->lvalue_chain; - found->lvalue_chain = registration; - - insert(convert, 0, key,exp_pytype); - } - - // Insert an rvalue from_python converter - void insert(convertible_function convertible - , constructor_function construct - , type_info key - , PyTypeObject const* (*exp_pytype)()) - { -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "inserting rvalue from_python " << key << "\n"; -# endif - entry* found = get(key); - rvalue_from_python_chain *registration = new rvalue_from_python_chain; - registration->convertible = convertible; - registration->construct = construct; - registration->expected_pytype = exp_pytype; - registration->next = found->rvalue_chain; - found->rvalue_chain = registration; - } - - // Insert an rvalue from_python converter - void push_back(convertible_function convertible - , constructor_function construct - , type_info key - , PyTypeObject const* (*exp_pytype)()) - { -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "push_back rvalue from_python " << key << "\n"; -# endif - rvalue_from_python_chain** found = &get(key)->rvalue_chain; - while (*found != 0) - found = &(*found)->next; - - rvalue_from_python_chain *registration = new rvalue_from_python_chain; - registration->convertible = convertible; - registration->construct = construct; - registration->expected_pytype = exp_pytype; - registration->next = 0; - *found = registration; - } - - registration const& lookup(type_info key) - { - return *get(key); - } - - registration const& lookup_shared_ptr(type_info key) - { - return *get(key, true); - } - - registration const* query(type_info type) - { - registry_t::iterator p = entries().find(entry(type)); -# ifdef BOOST_PYTHON_TRACE_REGISTRY - std::cout << "querying " << type - << (p == entries().end() || p->target_type != type - ? "...NOT found\n" : "...found\n"); -# endif - return (p == entries().end() || p->target_type != type) ? 0 : &*p; - } -} // namespace registry - -}}} // namespace boost::python::converter diff --git a/pykd/boost.python/converter/type_id.cpp b/pykd/boost.python/converter/type_id.cpp deleted file mode 100644 index c6a8bf7..0000000 --- a/pykd/boost.python/converter/type_id.cpp +++ /dev/null @@ -1,212 +0,0 @@ -// Copyright David Abrahams 2001. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/type_id.hpp> -#include <boost/python/detail/decorated_type_id.hpp> -#include <utility> -#include <vector> -#include <algorithm> -#include <memory> -#include <cstdlib> -#include <cstring> - -#if defined(__QNXNTO__) -# include <ostream> -#else /* defined(__QNXNTO__) */ - -#if !defined(__GNUC__) || __GNUC__ >= 3 || __SGI_STL_PORT || __EDG_VERSION__ -# include <ostream> -#else -# include <ostream.h> -#endif - -# ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE -# if defined(__GNUC__) && __GNUC__ >= 3 - -// http://lists.debian.org/debian-gcc/2003/09/msg00055.html notes -// that, in cxxabi.h of gcc-3.x for x < 4, this type is used before it -// is declared. -# if __GNUC__ == 3 && __GNUC_MINOR__ < 4 -class __class_type_info; -# endif - -# include <cxxabi.h> -# endif -# endif -#endif /* defined(__QNXNTO__) */ - -namespace boost { namespace python { - -# ifdef BOOST_PYTHON_HAVE_GCC_CP_DEMANGLE - -# if defined(__QNXNTO__) -namespace cxxabi { -extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); -} -# else /* defined(__QNXNTO__) */ - -# ifdef __GNUC__ -# if __GNUC__ < 3 - -namespace cxxabi = :: ; -extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); -# else - -namespace cxxabi = ::abi; // GCC 3.1 and later - -# if __GNUC__ == 3 && __GNUC_MINOR__ == 0 -namespace abi -{ - extern "C" char* __cxa_demangle(char const*, char*, std::size_t*, int*); -} -# endif /* __GNUC__ == 3 && __GNUC_MINOR__ == 0 */ -# endif /* __GNUC__ < 3 */ -# endif /* __GNUC__ */ -# endif /* defined(__QNXNTO__) */ - -namespace -{ - struct compare_first_cstring - { - template <class T> - bool operator()(T const& x, T const& y) - { - return std::strcmp(x.first,y.first) < 0; - } - }; - - struct free_mem - { - free_mem(char*p) - : p(p) {} - - ~free_mem() - { - std::free(p); - } - char* p; - }; -} - -bool cxxabi_cxa_demangle_is_broken() -{ - static bool was_tested = false; - static bool is_broken = false; - if (!was_tested) { - int status; - free_mem keeper(cxxabi::__cxa_demangle("b", 0, 0, &status)); - was_tested = true; - if (status == -2 || strcmp(keeper.p, "bool") != 0) { - is_broken = true; - } - } - return is_broken; -} - -namespace detail -{ - BOOST_PYTHON_DECL char const* gcc_demangle(char const* mangled) - { - typedef std::vector< - std::pair<char const*, char const*> - > mangling_map; - - static mangling_map demangler; - mangling_map::iterator p - = std::lower_bound( - demangler.begin(), demangler.end() - , std::make_pair(mangled, (char const*)0) - , compare_first_cstring()); - - if (p == demangler.end() || strcmp(p->first, mangled)) - { - int status; - free_mem keeper( - cxxabi::__cxa_demangle(mangled, 0, 0, &status) - ); - - assert(status != -3); // invalid argument error - - if (status == -1) - { - throw std::bad_alloc(); - } - else - { - char const* demangled - = status == -2 - // Invalid mangled name. Best we can do is to - // return it intact. - ? mangled - : keeper.p; - - // Ult Mundane, 2005 Aug 17 - // Contributed under the Boost Software License, Version 1.0. - // (See accompanying file LICENSE_1_0.txt or copy at - // http://www.boost.org/LICENSE_1_0.txt) - // The __cxa_demangle function is supposed to translate - // builtin types from their one-character mangled names, - // but it doesn't in gcc 3.3.5 and gcc 3.4.x. - if (cxxabi_cxa_demangle_is_broken() - && status == -2 && strlen(mangled) == 1) - { - // list from - // http://www.codesourcery.com/cxx-abi/abi.html - switch (mangled[0]) - { - case 'v': demangled = "void"; break; - case 'w': demangled = "wchar_t"; break; - case 'b': demangled = "bool"; break; - case 'c': demangled = "char"; break; - case 'a': demangled = "signed char"; break; - case 'h': demangled = "unsigned char"; break; - case 's': demangled = "short"; break; - case 't': demangled = "unsigned short"; break; - case 'i': demangled = "int"; break; - case 'j': demangled = "unsigned int"; break; - case 'l': demangled = "long"; break; - case 'm': demangled = "unsigned long"; break; - case 'x': demangled = "long long"; break; - case 'y': demangled = "unsigned long long"; break; - case 'n': demangled = "__int128"; break; - case 'o': demangled = "unsigned __int128"; break; - case 'f': demangled = "float"; break; - case 'd': demangled = "double"; break; - case 'e': demangled = "long double"; break; - case 'g': demangled = "__float128"; break; - case 'z': demangled = "..."; break; - } - } - - p = demangler.insert(p, std::make_pair(mangled, demangled)); - keeper.p = 0; - } - } - - return p->second; - } -} -# endif - -BOOST_PYTHON_DECL std::ostream& operator<<(std::ostream& os, type_info const& x) -{ - return os << x.name(); -} - -namespace detail -{ - BOOST_PYTHON_DECL std::ostream& operator<<(std::ostream& os, detail::decorated_type_info const& x) - { - os << x.m_base_type; - if (x.m_decoration & decorated_type_info::const_) - os << " const"; - if (x.m_decoration & decorated_type_info::volatile_) - os << " volatile"; - if (x.m_decoration & decorated_type_info::reference) - os << "&"; - return os; - } -} -}} // namespace boost::python::converter diff --git a/pykd/boost.python/dict.cpp b/pykd/boost.python/dict.cpp deleted file mode 100644 index 77d840d..0000000 --- a/pykd/boost.python/dict.cpp +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright David Abrahams 2004. Distributed under the Boost -// Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/dict.hpp> -#include <boost/python/extract.hpp> - -namespace boost { namespace python { namespace detail { -namespace -{ - // When returning list objects from methods, it may turn out that the - // derived class is returning something else, perhaps something not - // even derived from list. Since it is generally harmless for a - // Boost.Python wrapper object to hold an object of a different - // type, and because calling list() with an object may in fact - // perform a conversion, the least-bad alternative is to assume that - // we have a Python list object and stuff it into the list result. - list assume_list(object const& o) - { - return list(detail::borrowed_reference(o.ptr())); - } - - // No PyDict_CheckExact; roll our own. - inline bool check_exact(dict_base const* p) - { - return p->ptr()->ob_type == &PyDict_Type; - } -} - -detail::new_reference dict_base::call(object const& arg_) -{ - return (detail::new_reference)PyObject_CallFunction( - (PyObject*)&PyDict_Type, const_cast<char*>("(O)"), - arg_.ptr()); -} - -dict_base::dict_base() - : object(detail::new_reference(PyDict_New())) -{} - -dict_base::dict_base(object_cref data) - : object(call(data)) -{} - -void dict_base::clear() -{ - if (check_exact(this)) - PyDict_Clear(this->ptr()); - else - this->attr("clear")(); -} - -dict dict_base::copy() -{ - if (check_exact(this)) - { - return dict(detail::new_reference( - PyDict_Copy(this->ptr()))); - } - else - { - return dict(detail::borrowed_reference( - this->attr("copy")().ptr() - )); - } -} - -object dict_base::get(object_cref k) const -{ - if (check_exact(this)) - { - PyObject* result = PyDict_GetItem(this->ptr(),k.ptr()); - return object(detail::borrowed_reference(result ? result : Py_None)); - } - else - { - return this->attr("get")(k); - } -} - -object dict_base::get(object_cref k, object_cref d) const -{ - return this->attr("get")(k,d); -} - -bool dict_base::has_key(object_cref k) const -{ - return extract<bool>(this->contains(k)); -} - -list dict_base::items() const -{ - if (check_exact(this)) - { - return list(detail::new_reference( - PyDict_Items(this->ptr()))); - } - else - { - return assume_list(this->attr("items")()); - } -} - -object dict_base::iteritems() const -{ - return this->attr("iteritems")(); -} - -object dict_base::iterkeys() const -{ - return this->attr("iterkeys")(); -} - -object dict_base::itervalues() const -{ - return this->attr("itervalues")(); -} - -list dict_base::keys() const -{ - if (check_exact(this)) - { - return list(detail::new_reference( - PyDict_Keys(this->ptr()))); - } - else - { - return assume_list(this->attr("keys")()); - } -} - -tuple dict_base::popitem() -{ - return tuple(detail::borrowed_reference( - this->attr("popitem")().ptr() - )); -} - -object dict_base::setdefault(object_cref k) -{ - return this->attr("setdefault")(k); -} - -object dict_base::setdefault(object_cref k, object_cref d) -{ - return this->attr("setdefault")(k,d); -} - -void dict_base::update(object_cref other) -{ - if (check_exact(this)) - { - if (PyDict_Update(this->ptr(),other.ptr()) == -1) - throw_error_already_set(); - } - else - { - this->attr("update")(other); - } -} - -list dict_base::values() const -{ - if (check_exact(this)) - { - return list(detail::new_reference( - PyDict_Values(this->ptr()))); - } - else - { - return assume_list(this->attr("values")()); - } -} - -static struct register_dict_pytype_ptr -{ - register_dict_pytype_ptr() - { - const_cast<converter::registration &>( - converter::registry::lookup(boost::python::type_id<boost::python::dict>()) - ).m_class_object = &PyDict_Type; - } -}register_dict_pytype_ptr_; - -}}} // namespace boost::python diff --git a/pykd/boost.python/errors.cpp b/pykd/boost.python/errors.cpp deleted file mode 100644 index 34ea22f..0000000 --- a/pykd/boost.python/errors.cpp +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright David Abrahams 2001. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#ifndef BOOST_PYTHON_SOURCE -# define BOOST_PYTHON_SOURCE -#endif - -#include <boost/python/errors.hpp> -#include <boost/cast.hpp> -#include <boost/python/detail/exception_handler.hpp> - -namespace boost { namespace python { - -error_already_set::~error_already_set() {} - -// IMPORTANT: this function may only be called from within a catch block! -BOOST_PYTHON_DECL bool handle_exception_impl(function0<void> f) -{ - try - { - if (detail::exception_handler::chain) - return detail::exception_handler::chain->handle(f); - f(); - return false; - } - catch(const boost::python::error_already_set&) - { - // The python error reporting has already been handled. - } - catch(const std::bad_alloc&) - { - PyErr_NoMemory(); - } - catch(const bad_numeric_cast& x) - { - PyErr_SetString(PyExc_OverflowError, x.what()); - } - catch(const std::out_of_range& x) - { - PyErr_SetString(PyExc_IndexError, x.what()); - } - catch(const std::invalid_argument& x) - { - PyErr_SetString(PyExc_ValueError, x.what()); - } - catch(const std::exception& x) - { - PyErr_SetString(PyExc_RuntimeError, x.what()); - } - catch(...) - { - PyErr_SetString(PyExc_RuntimeError, "unidentifiable C++ exception"); - } - return true; -} - -void BOOST_PYTHON_DECL throw_error_already_set() -{ - throw error_already_set(); -} - -namespace detail { - -bool exception_handler::operator()(function0<void> const& f) const -{ - if (m_next) - { - return m_next->handle(f); - } - else - { - f(); - return false; - } -} - -exception_handler::exception_handler(handler_function const& impl) - : m_impl(impl) - , m_next(0) -{ - if (chain != 0) - tail->m_next = this; - else - chain = this; - tail = this; -} - -exception_handler* exception_handler::chain; -exception_handler* exception_handler::tail; - -BOOST_PYTHON_DECL void register_exception_handler(handler_function const& f) -{ - // the constructor links the new object into a handler chain, so - // this object isn't actaully leaked (until, of course, the - // interpreter exits). - new exception_handler(f); -} - -} // namespace boost::python::detail - -}} // namespace boost::python - - diff --git a/pykd/boost.python/exec.cpp b/pykd/boost.python/exec.cpp deleted file mode 100644 index 90e3ea2..0000000 --- a/pykd/boost.python/exec.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// Copyright Stefan Seefeld 2005. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/exec.hpp> -#include <boost/python/borrowed.hpp> -#include <boost/python/dict.hpp> -#include <boost/python/extract.hpp> -#include <boost/python/handle.hpp> - -namespace boost -{ -namespace python -{ - -object BOOST_PYTHON_DECL eval(str string, object global, object local) -{ - return eval(python::extract<char const *>(string), global, local); -} - -object BOOST_PYTHON_DECL eval(char const *string, object global, object local) -{ - // Set suitable default values for global and local dicts. - if (global.is_none()) - { - if (PyObject *g = PyEval_GetGlobals()) - global = object(detail::borrowed_reference(g)); - else - global = dict(); - } - if (local.is_none()) local = global; - // should be 'char const *' but older python versions don't use 'const' yet. - char *s = const_cast<char *>(string); - PyObject* result = PyRun_String(s, Py_eval_input, global.ptr(), local.ptr()); - if (!result) throw_error_already_set(); - return object(detail::new_reference(result)); -} - -object BOOST_PYTHON_DECL exec(str string, object global, object local) -{ - return exec(python::extract<char const *>(string), global, local); -} - -object BOOST_PYTHON_DECL exec(char const *string, object global, object local) -{ - // Set suitable default values for global and local dicts. - if (global.is_none()) - { - if (PyObject *g = PyEval_GetGlobals()) - global = object(detail::borrowed_reference(g)); - else - global = dict(); - } - if (local.is_none()) local = global; - // should be 'char const *' but older python versions don't use 'const' yet. - char *s = const_cast<char *>(string); - PyObject* result = PyRun_String(s, Py_file_input, global.ptr(), local.ptr()); - if (!result) throw_error_already_set(); - return object(detail::new_reference(result)); -} - -object BOOST_PYTHON_DECL exec_statement(str string, object global, object local) -{ - return exec_statement(python::extract<char const *>(string), global, local); -} - -object BOOST_PYTHON_DECL exec_statement(char const *string, object global, object local) -{ - // Set suitable default values for global and local dicts. - if (global.is_none()) - { - if (PyObject *g = PyEval_GetGlobals()) - global = object(detail::borrowed_reference(g)); - else - global = dict(); - } - if (local.is_none()) local = global; - // should be 'char const *' but older python versions don't use 'const' yet. - char *s = const_cast<char *>(string); - PyObject* result = PyRun_String(s, Py_single_input, global.ptr(), local.ptr()); - if (!result) throw_error_already_set(); - return object(detail::new_reference(result)); -} - -// Execute python source code from file filename. -// global and local are the global and local scopes respectively, -// used during execution. -object BOOST_PYTHON_DECL exec_file(str filename, object global, object local) -{ - return exec_file(python::extract<char const *>(filename), global, local); -} - -object BOOST_PYTHON_DECL exec_file(char const *filename, object global, object local) -{ - // Set suitable default values for global and local dicts. - if (global.is_none()) - { - if (PyObject *g = PyEval_GetGlobals()) - global = object(detail::borrowed_reference(g)); - else - global = dict(); - } - if (local.is_none()) local = global; - // should be 'char const *' but older python versions don't use 'const' yet. - char *f = const_cast<char *>(filename); - // Let python open the file to avoid potential binary incompatibilities. -#if PY_VERSION_HEX >= 0x030a0000 - PyObject* fo = Py_BuildValue("s", f); - FILE* fs = _Py_fopen_obj(fo, "r"); - Py_DECREF(fo); -#elif PY_VERSION_HEX >= 0x03040000 - FILE *fs = _Py_fopen(f, "r"); -#elif PY_VERSION_HEX >= 0x03000000 - PyObject *fo = Py_BuildValue("s", f); - FILE *fs = _Py_fopen(fo, "r"); - Py_DECREF(fo); -#else - PyObject *pyfile = PyFile_FromString(f, const_cast<char*>("r")); - if (!pyfile) throw std::invalid_argument(std::string(f) + " : no such file"); - python::handle<> file(pyfile); - FILE *fs = PyFile_AsFile(file.get()); -#endif - PyObject* result = PyRun_File(fs, - f, - Py_file_input, - global.ptr(), local.ptr()); - if (!result) throw_error_already_set(); - return object(detail::new_reference(result)); -} - -} // namespace boost::python -} // namespace boost diff --git a/pykd/boost.python/fabscript b/pykd/boost.python/fabscript deleted file mode 100644 index 0ebeac6..0000000 --- a/pykd/boost.python/fabscript +++ /dev/null @@ -1,58 +0,0 @@ -# -*- python -*- -# -# Copyright (c) 2016 Stefan Seefeld -# All rights reserved. -# -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -from faber.feature import set -from faber.artefacts.library import library -from faber.tools.compiler import define - -root = module('..') - -bpl = library('boost_python' + root.py_suffix, - ['list.cpp', - 'long.cpp', - 'dict.cpp', - 'tuple.cpp', - 'str.cpp', - 'slice.cpp', - 'converter/from_python.cpp', - 'converter/registry.cpp', - 'converter/type_id.cpp', - 'object/enum.cpp', - 'object/class.cpp', - 'object/function.cpp', - 'object/inheritance.cpp', - 'object/life_support.cpp', - 'object/pickle_support.cpp', - 'errors.cpp', - 'module.cpp', - 'converter/builtin_converters.cpp', - 'converter/arg_to_python_base.cpp', - 'object/iterator.cpp', - 'object/stl_iterator.cpp', - 'object_protocol.cpp', - 'object_operators.cpp', - 'wrapper.cpp', - 'import.cpp', - 'exec.cpp', - 'object/function_doc_signature.cpp'], - dependencies=root.config, - features=features + define('BOOST_PYTHON_SOURCE')) - -bnl = library('boost_numpy' + root.py_suffix, - ['numpy/dtype.cpp', - 'numpy/matrix.cpp', - 'numpy/ndarray.cpp', - 'numpy/numpy.cpp', - 'numpy/scalars.cpp', - 'numpy/ufunc.cpp', - bpl], - dependencies=root.config, - features=features + define('BOOST_NUMPY_SOURCE'), - condition=set.define.contains('HAS_NUMPY')) -default = [bpl, bnl] diff --git a/pykd/boost.python/import.cpp b/pykd/boost.python/import.cpp deleted file mode 100644 index 0add79e..0000000 --- a/pykd/boost.python/import.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright Stefan Seefeld 2005. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/import.hpp> -#include <boost/python/borrowed.hpp> -#include <boost/python/extract.hpp> -#include <boost/python/handle.hpp> - -namespace boost -{ -namespace python -{ - -object BOOST_PYTHON_DECL import(str name) -{ - // should be 'char const *' but older python versions don't use 'const' yet. - char *n = python::extract<char *>(name); - python::handle<> module(PyImport_ImportModule(n)); - return python::object(module); -} - -} // namespace boost::python -} // namespace boost diff --git a/pykd/boost.python/list.cpp b/pykd/boost.python/list.cpp deleted file mode 100644 index 77e6168..0000000 --- a/pykd/boost.python/list.cpp +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/list.hpp> -#include <boost/python/ssize_t.hpp> - -namespace boost { namespace python { namespace detail { - - -detail::new_non_null_reference list_base::call(object const& arg_) -{ - return (detail::new_non_null_reference) - (expect_non_null)( - PyObject_CallFunction( - (PyObject*)&PyList_Type, const_cast<char*>("(O)"), - arg_.ptr())); -} - -list_base::list_base() - : object(detail::new_reference(PyList_New(0))) -{} - -list_base::list_base(object_cref sequence) - : object(list_base::call(sequence)) -{} - -void list_base::append(object_cref x) -{ - if (PyList_CheckExact(this->ptr())) - { - if (PyList_Append(this->ptr(), x.ptr()) == -1) - throw_error_already_set(); - } - else - { - this->attr("append")(x); - } -} - -//long list_base::count(object_cref value) const; - -void list_base::extend(object_cref sequence) -{ - this->attr("extend")(sequence); -} - -long list_base::index(object_cref value) const -{ - object result_obj(this->attr("index")(value)); -#if PY_VERSION_HEX >= 0x03000000 - ssize_t result = PyLong_AsSsize_t(result_obj.ptr()); -#else - long result = PyInt_AsLong(result_obj.ptr()); -#endif - if (result == -1) - throw_error_already_set(); - return result; -} - -void list_base::insert(ssize_t index, object_cref item) -{ - if (PyList_CheckExact(this->ptr())) - { - if (PyList_Insert(this->ptr(), index, item.ptr()) == -1) - throw_error_already_set(); - } - else - { - this->attr("insert")(index, item); - } -} - -void list_base::insert(object const& index, object_cref x) -{ -#if PY_VERSION_HEX >= 0x03000000 - ssize_t index_ = PyLong_AsSsize_t(index.ptr()); -#else - long index_ = PyInt_AsLong(index.ptr()); -#endif - if (index_ == -1 && PyErr_Occurred()) - throw_error_already_set(); - this->insert(index_, x); -} - -object list_base::pop() -{ - return this->attr("pop")(); -} - -object list_base::pop(ssize_t index) -{ - return this->pop(object(index)); -} - -object list_base::pop(object const& index) -{ - return this->attr("pop")(index); -} - -void list_base::remove(object_cref value) -{ - this->attr("remove")(value); -} - -void list_base::reverse() -{ - if (PyList_CheckExact(this->ptr())) - { - if (PyList_Reverse(this->ptr()) == -1) - throw_error_already_set(); - } - else - { - this->attr("reverse")(); - } -} - -void list_base::sort() -{ - if (PyList_CheckExact(this->ptr())) - { - if (PyList_Sort(this->ptr()) == -1) - throw_error_already_set(); - } - else - { - this->attr("sort")(); - } -} - -#if PY_VERSION_HEX >= 0x03000000 -void list_base::sort(args_proxy const &args, - kwds_proxy const &kwds) -{ - this->attr("sort")(args, kwds); -} -#else -void list_base::sort(object_cref cmpfunc) -{ - this->attr("sort")(cmpfunc); -} -#endif - -// For some reason, moving this to the end of the TU suppresses an ICE -// with vc6. -ssize_t list_base::count(object_cref value) const -{ - object result_obj(this->attr("count")(value)); -#if PY_VERSION_HEX >= 0x03000000 - ssize_t result = PyLong_AsSsize_t(result_obj.ptr()); -#else - long result = PyInt_AsLong(result_obj.ptr()); -#endif - if (result == -1) - throw_error_already_set(); - return result; -} - -static struct register_list_pytype_ptr -{ - register_list_pytype_ptr() - { - const_cast<converter::registration &>( - converter::registry::lookup(boost::python::type_id<boost::python::list>()) - ).m_class_object = &PyList_Type; - } -}register_list_pytype_ptr_; - -}}} // namespace boost::python diff --git a/pykd/boost.python/long.cpp b/pykd/boost.python/long.cpp deleted file mode 100644 index 1ec8ebc..0000000 --- a/pykd/boost.python/long.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/long.hpp> - -namespace boost { namespace python { namespace detail { - -new_non_null_reference long_base::call(object const& arg_) -{ - return (detail::new_non_null_reference)PyObject_CallFunction( - (PyObject*)&PyLong_Type, const_cast<char*>("(O)"), - arg_.ptr()); -} - -new_non_null_reference long_base::call(object const& arg_, object const& base) -{ - return (detail::new_non_null_reference)PyObject_CallFunction( - (PyObject*)&PyLong_Type, const_cast<char*>("(OO)"), - arg_.ptr(), base.ptr()); -} - -long_base::long_base() - : object( - detail::new_reference( - PyObject_CallFunction((PyObject*)&PyLong_Type, const_cast<char*>("()"))) - ) -{} - -long_base::long_base(object_cref arg) - : object(long_base::call(arg)) -{} - -long_base::long_base(object_cref arg, object_cref base) - : object(long_base::call(arg, base)) -{} - - -}}} // namespace boost::python diff --git a/pykd/boost.python/module.cpp b/pykd/boost.python/module.cpp deleted file mode 100644 index 9628481..0000000 --- a/pykd/boost.python/module.cpp +++ /dev/null @@ -1,73 +0,0 @@ -// (C) Copyright David Abrahams 2000. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// The author gratefully acknowleges the support of Dragon Systems, Inc., in -// producing this work. - -#include <boost/python/scope.hpp> -#include <boost/python/object/add_to_namespace.hpp> - -namespace boost { namespace python { namespace detail { - -namespace -{ - PyObject* init_module_in_scope(PyObject* m, void(*init_function)()) - { - if (m != 0) - { - // Create the current module scope - object m_obj(((borrowed_reference_t*)m)); - scope current_module(m_obj); - - handle_exception(init_function); - } - - return m; - } -} - -BOOST_PYTHON_DECL void scope_setattr_doc(char const* name, object const& x, char const* doc) -{ - // Use function::add_to_namespace to achieve overloading if - // appropriate. - scope current; - objects::add_to_namespace(current, name, x, doc); -} - -#if PY_VERSION_HEX >= 0x03000000 - -BOOST_PYTHON_DECL PyObject* init_module(PyModuleDef& moduledef, void(*init_function)()) -{ - return init_module_in_scope( - PyModule_Create(&moduledef), - init_function); -} - -#else - -namespace -{ - PyMethodDef initial_methods[] = { { 0, 0, 0, 0 } }; -} - -BOOST_PYTHON_DECL PyObject* init_module(char const* name, void(*init_function)()) -{ - return init_module_in_scope( - Py_InitModule(const_cast<char*>(name), initial_methods), - init_function); -} - -#endif - -}}} // namespace boost::python::detail - -namespace boost { namespace python { - -namespace detail -{ - BOOST_PYTHON_DECL PyObject* current_scope = 0; -} - -}} diff --git a/pykd/boost.python/object/boost_python-src.object.class.cpp b/pykd/boost.python/object/boost_python-src.object.class.cpp deleted file mode 100644 index 08c1ef8..0000000 --- a/pykd/boost.python/object/boost_python-src.object.class.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "class.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.enum.cpp b/pykd/boost.python/object/boost_python-src.object.enum.cpp deleted file mode 100644 index 798abca..0000000 --- a/pykd/boost.python/object/boost_python-src.object.enum.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "enum.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.function.cpp b/pykd/boost.python/object/boost_python-src.object.function.cpp deleted file mode 100644 index 961a417..0000000 --- a/pykd/boost.python/object/boost_python-src.object.function.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "function.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp b/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp deleted file mode 100644 index 86af1d5..0000000 --- a/pykd/boost.python/object/boost_python-src.object.function_doc_signature.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "function_doc_signature.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.inheritance.cpp b/pykd/boost.python/object/boost_python-src.object.inheritance.cpp deleted file mode 100644 index 0725431..0000000 --- a/pykd/boost.python/object/boost_python-src.object.inheritance.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "inheritance.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.iterator.cpp b/pykd/boost.python/object/boost_python-src.object.iterator.cpp deleted file mode 100644 index 9cfb3c2..0000000 --- a/pykd/boost.python/object/boost_python-src.object.iterator.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "iterator.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.life_support.cpp b/pykd/boost.python/object/boost_python-src.object.life_support.cpp deleted file mode 100644 index 54d4422..0000000 --- a/pykd/boost.python/object/boost_python-src.object.life_support.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "life_support.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp b/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp deleted file mode 100644 index b3bc57a..0000000 --- a/pykd/boost.python/object/boost_python-src.object.pickle_support.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "pickle_support.cpp" diff --git a/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp b/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp deleted file mode 100644 index e27520e..0000000 --- a/pykd/boost.python/object/boost_python-src.object.stl_iterator.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#define _SCL_SECURE_NO_WARNINGS -#define _CRT_SECURE_NO_WARNINGS -#pragma warning(disable: 4244 4503 4752 4800 4996) -#define BOOST_PYTHON_SOURCE -#include "stl_iterator.cpp" diff --git a/pykd/boost.python/object/class.cpp b/pykd/boost.python/object/class.cpp deleted file mode 100644 index 3d4a6d5..0000000 --- a/pykd/boost.python/object/class.cpp +++ /dev/null @@ -1,781 +0,0 @@ -// Copyright David Abrahams 2001. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/detail/prefix.hpp> -#include <boost/mpl/lambda.hpp> // #including this first is an intel6 workaround - -#include <boost/python/object/class.hpp> -#include <boost/python/object/instance.hpp> -#include <boost/python/object/class_detail.hpp> -#include <boost/python/scope.hpp> -#include <boost/python/converter/registry.hpp> -#include <boost/python/object/find_instance.hpp> -#include <boost/python/object/pickle_support.hpp> -#include <boost/python/detail/map_entry.hpp> -#include <boost/python/object.hpp> -#include <boost/python/object_protocol.hpp> -#include <boost/detail/binary_search.hpp> -#include <boost/python/self.hpp> -#include <boost/python/dict.hpp> -#include <boost/python/str.hpp> -#include <boost/python/ssize_t.hpp> -#include <functional> -#include <vector> -#include <cstddef> -#include <new> -#include <structmember.h> - -namespace boost { namespace python { - -# ifdef BOOST_PYTHON_SELF_IS_CLASS -namespace self_ns -{ - self_t self; -} -# endif - -instance_holder::instance_holder() - : m_next(0) -{ -} - -instance_holder::~instance_holder() -{ -} - -extern "C" -{ - // This is copied from typeobject.c in the Python sources. Even though - // class_metatype_object doesn't set Py_TPFLAGS_HAVE_GC, that bit gets - // filled in by the base class initialization process in - // PyType_Ready(). However, tp_is_gc is *not* copied from the base - // type, making it assume that classes are GC-able even if (like - // class_type_object) they're statically allocated. - static int - type_is_gc(PyTypeObject *python_type) - { - return python_type->tp_flags & Py_TPFLAGS_HEAPTYPE; - } - - // This is also copied from the Python sources. We can't implement - // static_data as a subclass property effectively without it. - typedef struct { - PyObject_HEAD - PyObject *prop_get; - PyObject *prop_set; - PyObject *prop_del; - PyObject *prop_doc; - int getter_doc; - } propertyobject; - - // Copied from Python source and removed the part for setting docstring, - // since we don't have a setter for __doc__ and trying to set it will - // cause the init fail. - static int property_init(PyObject *self, PyObject *args, PyObject *kwds) - { - PyObject *get = NULL, *set = NULL, *del = NULL, *doc = NULL; - static const char *kwlist[] = {"fget", "fset", "fdel", "doc", 0}; - propertyobject *prop = (propertyobject *)self; - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OOOO:property", - const_cast<char **>(kwlist), &get, &set, &del, &doc)) - return -1; - - if (get == Py_None) - get = NULL; - if (set == Py_None) - set = NULL; - if (del == Py_None) - del = NULL; - - Py_XINCREF(get); - Py_XINCREF(set); - Py_XINCREF(del); - Py_XINCREF(doc); - - prop->prop_get = get; - prop->prop_set = set; - prop->prop_del = del; - prop->prop_doc = doc; - prop->getter_doc = 0; - - return 0; - } - - - static PyObject * - static_data_descr_get(PyObject *self, PyObject * /*obj*/, PyObject * /*type*/) - { - propertyobject *gs = (propertyobject *)self; - - return PyObject_CallFunction(gs->prop_get, const_cast<char*>("()")); - } - - static int - static_data_descr_set(PyObject *self, PyObject * /*obj*/, PyObject *value) - { - propertyobject *gs = (propertyobject *)self; - PyObject *func, *res; - - if (value == NULL) - func = gs->prop_del; - else - func = gs->prop_set; - if (func == NULL) { - PyErr_SetString(PyExc_AttributeError, - value == NULL ? - "can't delete attribute" : - "can't set attribute"); - return -1; - } - if (value == NULL) - res = PyObject_CallFunction(func, const_cast<char*>("()")); - else - res = PyObject_CallFunction(func, const_cast<char*>("(O)"), value); - if (res == NULL) - return -1; - Py_DECREF(res); - return 0; - } -} - -static PyTypeObject static_data_object = { - PyVarObject_HEAD_INIT(NULL, 0) - const_cast<char*>("Boost.Python.StaticProperty"), - sizeof(propertyobject), - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC - | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, //&PyProperty_Type, /* tp_base */ - 0, /* tp_dict */ - static_data_descr_get, /* tp_descr_get */ - static_data_descr_set, /* tp_descr_set */ - 0, /* tp_dictoffset */ - property_init, /* tp_init */ - 0, /* tp_alloc */ - 0, // filled in with type_new /* tp_new */ - 0, // filled in with __PyObject_GC_Del /* tp_free */ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif -}; - -namespace objects -{ -#if PY_VERSION_HEX < 0x03000000 - // XXX Not sure why this run into compiling error in Python 3 - extern "C" - { - // This declaration needed due to broken Python 2.2 headers - extern DL_IMPORT(PyTypeObject) PyProperty_Type; - } -#endif - - BOOST_PYTHON_DECL PyObject* static_data() - { - if (static_data_object.tp_dict == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&static_data_object, &PyType_Type); -#else - Py_TYPE(&static_data_object) = &PyType_Type; -#endif - static_data_object.tp_base = &PyProperty_Type; - if (PyType_Ready(&static_data_object)) - return 0; - } - return upcast<PyObject>(&static_data_object); - } -} - -extern "C" -{ - // Ordinarily, descriptors have a certain assymetry: you can use - // them to read attributes off the class object they adorn, but - // writing the same attribute on the class object always replaces - // the descriptor in the class __dict__. In order to properly - // represent C++ static data members, we need to allow them to be - // written through the class instance. This function of the - // metaclass makes it possible. - static int - class_setattro(PyObject *obj, PyObject *name, PyObject* value) - { - // Must use "private" Python implementation detail - // _PyType_Lookup instead of PyObject_GetAttr because the - // latter will always end up calling the descr_get function on - // any descriptor it finds; we need the unadulterated - // descriptor here. - PyObject* a = _PyType_Lookup(downcast<PyTypeObject>(obj), name); - - // a is a borrowed reference or 0 - - // If we found a static data descriptor, call it directly to - // force it to set the static data member - if (a != 0 && PyObject_IsInstance(a, objects::static_data())) - return Py_TYPE(a)->tp_descr_set(a, obj, value); - else - return PyType_Type.tp_setattro(obj, name, value); - } -} - -static PyTypeObject class_metatype_object = { - PyVarObject_HEAD_INIT(NULL, 0) - const_cast<char*>("Boost.Python.class"), - PyType_Type.tp_basicsize, - 0, - 0, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - class_setattro, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC - | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, //&PyType_Type, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, // filled in with type_new /* tp_new */ - 0, // filled in with __PyObject_GC_Del /* tp_free */ - (inquiry)type_is_gc, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif -}; - -// Install the instance data for a C++ object into a Python instance -// object. -void instance_holder::install(PyObject* self) throw() -{ - assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self)), &class_metatype_object)); - m_next = ((objects::instance<>*)self)->objects; - ((objects::instance<>*)self)->objects = this; -} - - -namespace objects -{ -// Get the metatype object for all extension classes. - BOOST_PYTHON_DECL type_handle class_metatype() - { - if (class_metatype_object.tp_dict == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&class_metatype_object, &PyType_Type); -#else - Py_TYPE(&class_metatype_object) = &PyType_Type; -#endif - class_metatype_object.tp_base = &PyType_Type; - if (PyType_Ready(&class_metatype_object)) - return type_handle(); - } - return type_handle(borrowed(&class_metatype_object)); - } - extern "C" - { - static void instance_dealloc(PyObject* inst) - { - instance<>* kill_me = (instance<>*)inst; - - for (instance_holder* p = kill_me->objects, *next; p != 0; p = next) - { - next = p->next(); - p->~instance_holder(); - instance_holder::deallocate(inst, dynamic_cast<void*>(p)); - } - - // Python 2.2.1 won't add weak references automatically when - // tp_itemsize > 0, so we need to manage that - // ourselves. Accordingly, we also have to clean up the - // weakrefs ourselves. - if (kill_me->weakrefs != NULL) - PyObject_ClearWeakRefs(inst); - - Py_XDECREF(kill_me->dict); - - Py_TYPE(inst)->tp_free(inst); - } - - static PyObject * - instance_new(PyTypeObject* type_, PyObject* /*args*/, PyObject* /*kw*/) - { - // Attempt to find the __instance_size__ attribute. If not present, no problem. - PyObject* d = type_->tp_dict; - PyObject* instance_size_obj = PyObject_GetAttrString(d, const_cast<char*>("__instance_size__")); - - ssize_t instance_size = instance_size_obj ? -#if PY_VERSION_HEX >= 0x03000000 - PyLong_AsSsize_t(instance_size_obj) : 0; -#else - PyInt_AsLong(instance_size_obj) : 0; -#endif - - if (instance_size < 0) - instance_size = 0; - - PyErr_Clear(); // Clear any errors that may have occurred. - - instance<>* result = (instance<>*)type_->tp_alloc(type_, instance_size); - if (result) - { - // Guido says we can use ob_size for any purpose we - // like, so we'll store the total size of the object - // there. A negative number indicates that the extra - // instance memory is not yet allocated to any holders. -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_SIZE(result, -(static_cast<int>(offsetof(instance<>, storage) + instance_size))); -#elif PY_VERSION_HEX >= 0x02060000 - Py_SIZE(result) = -(static_cast<int>(offsetof(instance<>, storage) + instance_size)); -#else - result->ob_size = -(static_cast<int>(offsetof(instance<>, storage) + instance_size)); -#endif - } - return (PyObject*)result; - } - - static PyObject* instance_get_dict(PyObject* op, void*) - { - instance<>* inst = downcast<instance<> >(op); - if (inst->dict == 0) - inst->dict = PyDict_New(); - return python::xincref(inst->dict); - } - - static int instance_set_dict(PyObject* op, PyObject* dict, void*) - { - instance<>* inst = downcast<instance<> >(op); - python::xdecref(inst->dict); - inst->dict = python::incref(dict); - return 0; - } - - } - - - static PyGetSetDef instance_getsets[] = { - {const_cast<char*>("__dict__"), instance_get_dict, instance_set_dict, NULL, 0}, - {0, 0, 0, 0, 0} - }; - - - static PyMemberDef instance_members[] = { - {const_cast<char*>("__weakref__"), T_OBJECT, offsetof(instance<>, weakrefs), 0, 0}, - {0, 0, 0, 0, 0} - }; - - static PyTypeObject class_type_object = { - PyVarObject_HEAD_INIT(NULL, 0) - const_cast<char*>("Boost.Python.instance"), - offsetof(instance<>,storage), /* tp_basicsize */ - 1, /* tp_itemsize */ - instance_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - 0, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT // | Py_TPFLAGS_HAVE_GC - | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - offsetof(instance<>,weakrefs), /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - instance_members, /* tp_members */ - instance_getsets, /* tp_getset */ - 0, //&PyBaseObject_Type, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - offsetof(instance<>,dict), /* tp_dictoffset */ - 0, /* tp_init */ - PyType_GenericAlloc, /* tp_alloc */ - instance_new, /* tp_new */ - 0, /* tp_free */ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif - }; - - BOOST_PYTHON_DECL type_handle class_type() - { - if (class_type_object.tp_dict == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&class_type_object, incref(class_metatype().get())); -#else - Py_TYPE(&class_type_object) = incref(class_metatype().get()); -#endif - class_type_object.tp_base = &PyBaseObject_Type; - if (PyType_Ready(&class_type_object)) - return type_handle(); -// class_type_object.tp_setattro = class_setattro; - } - return type_handle(borrowed(&class_type_object)); - } - - BOOST_PYTHON_DECL void* - find_instance_impl(PyObject* inst, type_info type, bool null_shared_ptr_only) - { - if (!Py_TYPE(Py_TYPE(inst)) || - !PyType_IsSubtype(Py_TYPE(Py_TYPE(inst)), &class_metatype_object)) - return 0; - - instance<>* self = reinterpret_cast<instance<>*>(inst); - - for (instance_holder* match = self->objects; match != 0; match = match->next()) - { - void* const found = match->holds(type, null_shared_ptr_only); - if (found) - return found; - } - return 0; - } - - object module_prefix() - { - return object( - PyObject_IsInstance(scope().ptr(), upcast<PyObject>(&PyModule_Type)) - ? object(scope().attr("__name__")) - : api::getattr(scope(), "__module__", str()) - ); - } - - namespace - { - // Find a registered class object corresponding to id. Return a - // null handle if no such class is registered. - inline type_handle query_class(type_info id) - { - converter::registration const* p = converter::registry::query(id); - return type_handle( - python::borrowed( - python::allow_null(p ? p->m_class_object : 0)) - ); - } - - // Find a registered class corresponding to id. If not found, - // throw an appropriate exception. - type_handle get_class(type_info id) - { - type_handle result(query_class(id)); - - if (result.get() == 0) - { - object report("extension class wrapper for base class "); - report = report + id.name() + " has not been created yet"; - PyErr_SetObject(PyExc_RuntimeError, report.ptr()); - throw_error_already_set(); - } - return result; - } - - // class_base constructor - // - // name - the name of the new Python class - // - // num_types - one more than the number of declared bases - // - // types - array of python::type_info, the first item - // corresponding to the class being created, and the - // rest corresponding to its declared bases. - // - inline object - new_class(char const* name, std::size_t num_types, type_info const* const types, char const* doc) - { - assert(num_types >= 1); - - // Build a tuple of the base Python type objects. If no bases - // were declared, we'll use our class_type() as the single base - // class. - ssize_t const num_bases = (std::max)(num_types - 1, static_cast<std::size_t>(1)); - handle<> bases(PyTuple_New(num_bases)); - - for (ssize_t i = 1; i <= num_bases; ++i) - { - type_handle c = (i >= static_cast<ssize_t>(num_types)) ? class_type() : get_class(types[i]); - // PyTuple_SET_ITEM steals this reference - PyTuple_SET_ITEM(bases.get(), static_cast<ssize_t>(i - 1), upcast<PyObject>(c.release())); - } - - // Call the class metatype to create a new class - dict d; - - object m = module_prefix(); - if (m) d["__module__"] = m; - - if (doc != 0) - d["__doc__"] = doc; - - object result = object(class_metatype())(name, bases, d); - assert(PyType_IsSubtype(Py_TYPE(result.ptr()), &PyType_Type)); - - if (scope().ptr() != Py_None) - scope().attr(name) = result; - - // For pickle. Will lead to informative error messages if pickling - // is not enabled. - result.attr("__reduce__") = object(make_instance_reduce_function()); - - return result; - } - } - - class_base::class_base( - char const* name, std::size_t num_types, type_info const* const types, char const* doc) - : object(new_class(name, num_types, types, doc)) - { - // Insert the new class object in the registry - converter::registration& converters = const_cast<converter::registration&>( - converter::registry::lookup(types[0])); - - // Class object is leaked, for now - converters.m_class_object = (PyTypeObject*)incref(this->ptr()); - } - - BOOST_PYTHON_DECL void copy_class_object(type_info const& src, type_info const& dst) - { - converter::registration& dst_converters - = const_cast<converter::registration&>(converter::registry::lookup(dst)); - - converter::registration const& src_converters = converter::registry::lookup(src); - - dst_converters.m_class_object = src_converters.m_class_object; - } - - void class_base::set_instance_size(std::size_t instance_size) - { - this->attr("__instance_size__") = instance_size; - } - - void class_base::add_property( - char const* name, object const& fget, char const* docstr) - { - object property( - (python::detail::new_reference) - PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("Osss"), fget.ptr(), 0, 0, docstr)); - - this->setattr(name, property); - } - - void class_base::add_property( - char const* name, object const& fget, object const& fset, char const* docstr) - { - object property( - (python::detail::new_reference) - PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("OOss"), fget.ptr(), fset.ptr(), 0, docstr)); - - this->setattr(name, property); - } - - void class_base::add_static_property(char const* name, object const& fget) - { - object property( - (python::detail::new_reference) - PyObject_CallFunction(static_data(), const_cast<char*>("O"), fget.ptr()) - ); - - this->setattr(name, property); - } - - void class_base::add_static_property(char const* name, object const& fget, object const& fset) - { - object property( - (python::detail::new_reference) - PyObject_CallFunction(static_data(), const_cast<char*>("OO"), fget.ptr(), fset.ptr())); - - this->setattr(name, property); - } - - void class_base::setattr(char const* name, object const& x) - { - if (PyObject_SetAttrString(this->ptr(), const_cast<char*>(name), x.ptr()) < 0) - throw_error_already_set(); - } - - namespace - { - extern "C" PyObject* no_init(PyObject*, PyObject*) - { - ::PyErr_SetString(::PyExc_RuntimeError, const_cast<char*>("This class cannot be instantiated from Python")); - return NULL; - } - static ::PyMethodDef no_init_def = { - const_cast<char*>("__init__"), no_init, METH_VARARGS, - const_cast<char*>("Raises an exception\n" - "This class cannot be instantiated from Python\n") - }; - } - - void class_base::def_no_init() - { - handle<> f(::PyCFunction_New(&no_init_def, 0)); - this->setattr("__init__", object(f)); - } - - void class_base::enable_pickling_(bool getstate_manages_dict) - { - setattr("__safe_for_unpickling__", object(true)); - - if (getstate_manages_dict) - { - setattr("__getstate_manages_dict__", object(true)); - } - } - - namespace - { - PyObject* callable_check(PyObject* callable) - { - if (PyCallable_Check(expect_non_null(callable))) - return callable; - - ::PyErr_Format( - PyExc_TypeError - , const_cast<char*>("staticmethod expects callable object; got an object of type %s, which is not callable") - , Py_TYPE(callable)->tp_name - ); - - throw_error_already_set(); - return 0; - } - } - - void class_base::make_method_static(const char * method_name) - { - PyTypeObject* self = downcast<PyTypeObject>(this->ptr()); - dict d((handle<>(borrowed(self->tp_dict)))); - - object method(d[method_name]); - - this->attr(method_name) = object( - handle<>( - PyStaticMethod_New((callable_check)(method.ptr()) ) - )); - } - - BOOST_PYTHON_DECL type_handle registered_class_object(type_info id) - { - return query_class(id); - } -} // namespace objects - - -void* instance_holder::allocate(PyObject* self_, std::size_t holder_offset, std::size_t holder_size) -{ - assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self_)), &class_metatype_object)); - objects::instance<>* self = (objects::instance<>*)self_; - - int total_size_needed = holder_offset + holder_size; - - if (-Py_SIZE(self) >= total_size_needed) - { - // holder_offset should at least point into the variable-sized part - assert(holder_offset >= offsetof(objects::instance<>,storage)); - - // Record the fact that the storage is occupied, noting where it starts -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_SIZE(self, holder_offset); -#else - Py_SIZE(self) = holder_offset; -#endif - return (char*)self + holder_offset; - } - else - { - void* const result = PyMem_Malloc(holder_size); - if (result == 0) - throw std::bad_alloc(); - return result; - } -} - -void instance_holder::deallocate(PyObject* self_, void* storage) throw() -{ - assert(PyType_IsSubtype(Py_TYPE(Py_TYPE(self_)), &class_metatype_object)); - objects::instance<>* self = (objects::instance<>*)self_; - if (storage != (char*)self + Py_SIZE(self)) - { - PyMem_Free(storage); - } -} - -}} // namespace boost::python diff --git a/pykd/boost.python/object/enum.cpp b/pykd/boost.python/object/enum.cpp deleted file mode 100644 index c59eb48..0000000 --- a/pykd/boost.python/object/enum.cpp +++ /dev/null @@ -1,256 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/object/enum_base.hpp> -#include <boost/python/cast.hpp> -#include <boost/python/scope.hpp> -#include <boost/python/object.hpp> -#include <boost/python/tuple.hpp> -#include <boost/python/dict.hpp> -#include <boost/python/str.hpp> -#include <boost/python/extract.hpp> -#include <boost/python/object_protocol.hpp> -#include <structmember.h> - -namespace boost { namespace python { namespace objects { - -struct enum_object -{ -#if PY_VERSION_HEX >= 0x03000000 - PyLongObject base_object; -#else - PyIntObject base_object; -#endif - PyObject* name; -}; - -static PyMemberDef enum_members[] = { - {const_cast<char*>("name"), T_OBJECT_EX, offsetof(enum_object,name),READONLY, 0}, - {0, 0, 0, 0, 0} -}; - - -extern "C" -{ - static void - enum_dealloc(enum_object* self) - { - Py_XDECREF(self->name); - Py_TYPE(self)->tp_free((PyObject*)self); - } - - static PyObject* enum_repr(PyObject* self_) - { - PyObject *mod = PyObject_GetAttrString( self_, "__module__"); - object auto_free = object(handle<>(mod)); - enum_object* self = downcast<enum_object>(self_); - if (!self->name) - { - return -#if PY_VERSION_HEX >= 0x03000000 - PyUnicode_FromFormat("%S.%s(%ld)", mod, self_->ob_type->tp_name, PyLong_AsLong(self_)); -#else - PyString_FromFormat("%s.%s(%ld)", PyString_AsString(mod), self_->ob_type->tp_name, PyInt_AS_LONG(self_)); -#endif - } - else - { - PyObject* name = self->name; - if (name == 0) - return 0; - - return -#if PY_VERSION_HEX >= 0x03000000 - PyUnicode_FromFormat("%S.%s.%S", mod, self_->ob_type->tp_name, name); -#else - PyString_FromFormat("%s.%s.%s", - PyString_AsString(mod), self_->ob_type->tp_name, PyString_AsString(name)); -#endif - } - } - - static PyObject* enum_str(PyObject* self_) - { - enum_object* self = downcast<enum_object>(self_); - if (!self->name) - { -#if PY_VERSION_HEX >= 0x03000000 - return PyLong_Type.tp_str(self_); -#else - return PyInt_Type.tp_str(self_); -#endif - } - else - { - return incref(self->name); - } - } -} - -static PyTypeObject enum_type_object = { - PyVarObject_HEAD_INIT(NULL, 0) // &PyType_Type - const_cast<char*>("Boost.Python.enum"), - sizeof(enum_object), /* tp_basicsize */ - 0, /* tp_itemsize */ - (destructor) enum_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - enum_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - 0, /* tp_call */ - enum_str, /* tp_str */ - 0, /* tp_getattro */ - 0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT -#if PY_VERSION_HEX < 0x03000000 - | Py_TPFLAGS_CHECKTYPES -#endif - | Py_TPFLAGS_HAVE_GC - | Py_TPFLAGS_BASETYPE, /* tp_flags */ - 0, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - enum_members, /* tp_members */ - 0, /* tp_getset */ - 0, //&PyInt_Type, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ - 0, /* tp_free */ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif -}; - -object module_prefix(); - -namespace -{ - object new_enum_type(char const* name, char const *doc) - { - if (enum_type_object.tp_dict == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&enum_type_object, incref(&PyType_Type)); -#else - Py_TYPE(&enum_type_object) = incref(&PyType_Type); -#endif -#if PY_VERSION_HEX >= 0x03000000 - enum_type_object.tp_base = &PyLong_Type; -#else - enum_type_object.tp_base = &PyInt_Type; -#endif - if (PyType_Ready(&enum_type_object)) - throw_error_already_set(); - } - - type_handle metatype(borrowed(&PyType_Type)); - type_handle base(borrowed(&enum_type_object)); - - // suppress the instance __dict__ in these enum objects. There - // may be a slicker way, but this'll do for now. - dict d; - d["__slots__"] = tuple(); - d["values"] = dict(); - d["names"] = dict(); - - object module_name = module_prefix(); - if (module_name) - d["__module__"] = module_name; - if (doc) - d["__doc__"] = doc; - - object result = (object(metatype))(name, make_tuple(base), d); - - scope().attr(name) = result; - - return result; - } -} - -enum_base::enum_base( - char const* name - , converter::to_python_function_t to_python - , converter::convertible_function convertible - , converter::constructor_function construct - , type_info id - , char const *doc - ) - : object(new_enum_type(name, doc)) -{ - converter::registration& converters - = const_cast<converter::registration&>( - converter::registry::lookup(id)); - - converters.m_class_object = downcast<PyTypeObject>(this->ptr()); - converter::registry::insert(to_python, id); - converter::registry::insert(convertible, construct, id); -} - -void enum_base::add_value(char const* name_, long value) -{ - // Convert name to Python string - object name(name_); - - // Create a new enum instance by calling the class with a value - object x = (*this)(value); - - // Store the object in the enum class - (*this).attr(name_) = x; - - dict d = extract<dict>(this->attr("values"))(); - d[value] = x; - - // Set the name field in the new enum instanec - enum_object* p = downcast<enum_object>(x.ptr()); - Py_XDECREF(p->name); - p->name = incref(name.ptr()); - - dict names_dict = extract<dict>(this->attr("names"))(); - names_dict[x.attr("name")] = x; -} - -void enum_base::export_values() -{ - dict d = extract<dict>(this->attr("names"))(); - list items = d.items(); - scope current; - - for (unsigned i = 0, max = len(items); i < max; ++i) - api::setattr(current, items[i][0], items[i][1]); - } - -PyObject* enum_base::to_python(PyTypeObject* type_, long x) -{ - object type((type_handle(borrowed(type_)))); - - dict d = extract<dict>(type.attr("values"))(); - object v = d.get(x, object()); - return incref( - (v == object() ? type(x) : v).ptr()); -} - -}}} // namespace boost::python::object diff --git a/pykd/boost.python/object/function.cpp b/pykd/boost.python/object/function.cpp deleted file mode 100644 index 6184bb8..0000000 --- a/pykd/boost.python/object/function.cpp +++ /dev/null @@ -1,797 +0,0 @@ -// Copyright David Abrahams 2001. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/docstring_options.hpp> -#include <boost/python/object/function_object.hpp> -#include <boost/python/object/function_handle.hpp> -#include <boost/python/object/function_doc_signature.hpp> -#include <boost/python/errors.hpp> -#include <boost/python/str.hpp> -#include <boost/python/object_attributes.hpp> -#include <boost/python/args.hpp> -#include <boost/python/refcount.hpp> -#include <boost/python/extract.hpp> -#include <boost/python/tuple.hpp> -#include <boost/python/list.hpp> -#include <boost/python/ssize_t.hpp> - -#include <boost/python/detail/signature.hpp> -#include <boost/python/detail/none.hpp> -#include <boost/mpl/vector/vector10.hpp> - -#include <boost/bind.hpp> - -#include <algorithm> -#include <cstring> - -#if BOOST_PYTHON_DEBUG_ERROR_MESSAGES -# include <cstdio> -#endif - -namespace boost { namespace python { - volatile bool docstring_options::show_user_defined_ = true; - volatile bool docstring_options::show_cpp_signatures_ = true; -#ifndef BOOST_PYTHON_NO_PY_SIGNATURES - volatile bool docstring_options::show_py_signatures_ = true; -#else - volatile bool docstring_options::show_py_signatures_ = false; -#endif -}} - -namespace boost { namespace python { namespace objects { - -py_function_impl_base::~py_function_impl_base() -{ -} - -unsigned py_function_impl_base::max_arity() const -{ - return this->min_arity(); -} - -extern PyTypeObject function_type; - -function::function( - py_function const& implementation -#if BOOST_WORKAROUND(__EDG_VERSION__, == 245) - , python::detail::keyword const* names_and_defaults -#else - , python::detail::keyword const* const names_and_defaults -#endif - , unsigned num_keywords - ) - : m_fn(implementation) - , m_nkeyword_values(0) -{ - if (names_and_defaults != 0) - { - unsigned int max_arity = m_fn.max_arity(); - unsigned int keyword_offset - = max_arity > num_keywords ? max_arity - num_keywords : 0; - - - ssize_t tuple_size = num_keywords ? max_arity : 0; - m_arg_names = object(handle<>(PyTuple_New(tuple_size))); - - if (num_keywords != 0) - { - for (unsigned j = 0; j < keyword_offset; ++j) - PyTuple_SET_ITEM(m_arg_names.ptr(), j, incref(Py_None)); - } - - for (unsigned i = 0; i < num_keywords; ++i) - { - tuple kv; - - python::detail::keyword const* const p = names_and_defaults + i; - if (p->default_value) - { - kv = make_tuple(p->name, p->default_value); - ++m_nkeyword_values; - } - else - { - kv = make_tuple(p->name); - } - - PyTuple_SET_ITEM( - m_arg_names.ptr() - , i + keyword_offset - , incref(kv.ptr()) - ); - } - } - - PyObject* p = this; - if (Py_TYPE(&function_type) == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&function_type, &PyType_Type); -#else - Py_TYPE(&function_type) = &PyType_Type; -#endif - ::PyType_Ready(&function_type); - } - - (void)( // warning suppression for GCC - PyObject_INIT(p, &function_type) - ); -} - -function::~function() -{ -} - -PyObject* function::call(PyObject* args, PyObject* keywords) const -{ - std::size_t n_unnamed_actual = PyTuple_GET_SIZE(args); - std::size_t n_keyword_actual = keywords ? PyDict_Size(keywords) : 0; - std::size_t n_actual = n_unnamed_actual + n_keyword_actual; - - function const* f = this; - - // Try overloads looking for a match - do - { - // Check for a plausible number of arguments - unsigned min_arity = f->m_fn.min_arity(); - unsigned max_arity = f->m_fn.max_arity(); - - if (n_actual + f->m_nkeyword_values >= min_arity - && n_actual <= max_arity) - { - // This will be the args that actually get passed - handle<>inner_args(allow_null(borrowed(args))); - - if (n_keyword_actual > 0 // Keyword arguments were supplied - || n_actual < min_arity) // or default keyword values are needed - { - if (f->m_arg_names.is_none()) - { - // this overload doesn't accept keywords - inner_args = handle<>(); - } - else - { - // "all keywords are none" is a special case - // indicating we will accept any number of keyword - // arguments - if (PyTuple_Size(f->m_arg_names.ptr()) == 0) - { - // no argument preprocessing - } - else if (n_actual > max_arity) - { - // too many arguments - inner_args = handle<>(); - } - else - { - // build a new arg tuple, will adjust its size later - assert(max_arity <= static_cast<std::size_t>(ssize_t_max)); - inner_args = handle<>( - PyTuple_New(static_cast<ssize_t>(max_arity))); - - // Fill in the positional arguments - for (std::size_t i = 0; i < n_unnamed_actual; ++i) - PyTuple_SET_ITEM(inner_args.get(), i, incref(PyTuple_GET_ITEM(args, i))); - - // Grab remaining arguments by name from the keyword dictionary - std::size_t n_actual_processed = n_unnamed_actual; - - for (std::size_t arg_pos = n_unnamed_actual; arg_pos < max_arity ; ++arg_pos) - { - // Get the keyword[, value pair] corresponding - PyObject* kv = PyTuple_GET_ITEM(f->m_arg_names.ptr(), arg_pos); - - // If there were any keyword arguments, - // look up the one we need for this - // argument position - PyObject* value = n_keyword_actual - ? PyDict_GetItem(keywords, PyTuple_GET_ITEM(kv, 0)) - : 0; - - if (!value) - { - // Not found; check if there's a default value - if (PyTuple_GET_SIZE(kv) > 1) - value = PyTuple_GET_ITEM(kv, 1); - - if (!value) - { - // still not found; matching fails - PyErr_Clear(); - inner_args = handle<>(); - break; - } - } - else - { - ++n_actual_processed; - } - - PyTuple_SET_ITEM(inner_args.get(), arg_pos, incref(value)); - } - - if (inner_args.get()) - { - //check if we proccessed all the arguments - if(n_actual_processed < n_actual) - inner_args = handle<>(); - } - } - } - } - - // Call the function. Pass keywords in case it's a - // function accepting any number of keywords - PyObject* result = inner_args ? f->m_fn(inner_args.get(), keywords) : 0; - - // If the result is NULL but no error was set, m_fn failed - // the argument-matching test. - - // This assumes that all other error-reporters are - // well-behaved and never return NULL to python without - // setting an error. - if (result != 0 || PyErr_Occurred()) - return result; - } - f = f->m_overloads.get(); - } - while (f); - // None of the overloads matched; time to generate the error message - argument_error(args, keywords); - return 0; -} - -object function::signature(bool show_return_type) const -{ - py_function const& impl = m_fn; - - python::detail::signature_element const* return_type = impl.signature(); - python::detail::signature_element const* s = return_type + 1; - - list formal_params; - if (impl.max_arity() == 0) - formal_params.append("void"); - - for (unsigned n = 0; n < impl.max_arity(); ++n) - { - if (s[n].basename == 0) - { - formal_params.append("..."); - break; - } - - str param(s[n].basename); - if (s[n].lvalue) - param += " {lvalue}"; - - if (m_arg_names) // None or empty tuple will test false - { - object kv(m_arg_names[n]); - if (kv) - { - char const* const fmt = len(kv) > 1 ? " %s=%r" : " %s"; - param += fmt % kv; - } - } - - formal_params.append(param); - } - - if (show_return_type) - return "%s(%s) -> %s" % make_tuple( - m_name, str(", ").join(formal_params), return_type->basename); - return "%s(%s)" % make_tuple( - m_name, str(", ").join(formal_params)); -} - -object function::signatures(bool show_return_type) const -{ - list result; - for (function const* f = this; f; f = f->m_overloads.get()) { - result.append(f->signature(show_return_type)); - } - return result; -} - -void function::argument_error(PyObject* args, PyObject* /*keywords*/) const -{ - static handle<> exception( - PyErr_NewException(const_cast<char*>("Boost.Python.ArgumentError"), PyExc_TypeError, 0)); - - object message = "Python argument types in\n %s.%s(" - % make_tuple(this->m_namespace, this->m_name); - - list actual_args; - for (ssize_t i = 0; i < PyTuple_Size(args); ++i) - { - char const* name = PyTuple_GetItem(args, i)->ob_type->tp_name; - actual_args.append(str(name)); - } - message += str(", ").join(actual_args); - message += ")\ndid not match C++ signature:\n "; - message += str("\n ").join(signatures()); - -#if BOOST_PYTHON_DEBUG_ERROR_MESSAGES - std::printf("\n--------\n%s\n--------\n", extract<const char*>(message)()); -#endif - PyErr_SetObject(exception.get(), message.ptr()); - throw_error_already_set(); -} - -void function::add_overload(handle<function> const& overload_) -{ - function* parent = this; - - while (parent->m_overloads) - parent = parent->m_overloads.get(); - - parent->m_overloads = overload_; - - // If we have no documentation, get the docs from the overload - if (!m_doc) - m_doc = overload_->m_doc; -} - -namespace -{ - char const* const binary_operator_names[] = - { - "add__", - "and__", - "div__", - "divmod__", - "eq__", - "floordiv__", - "ge__", - "gt__", - "le__", - "lshift__", - "lt__", - "mod__", - "mul__", - "ne__", - "or__", - "pow__", - "radd__", - "rand__", - "rdiv__", - "rdivmod__", - "rfloordiv__", - "rlshift__", - "rmod__", - "rmul__", - "ror__", - "rpow__", - "rrshift__", - "rshift__", - "rsub__", - "rtruediv__", - "rxor__", - "sub__", - "truediv__", - "xor__" - }; - - struct less_cstring - { - bool operator()(char const* x, char const* y) const - { - return BOOST_CSTD_::strcmp(x,y) < 0; - } - }; - - inline bool is_binary_operator(char const* name) - { - return name[0] == '_' - && name[1] == '_' - && std::binary_search( - &binary_operator_names[0] - , binary_operator_names + sizeof(binary_operator_names)/sizeof(*binary_operator_names) - , name + 2 - , less_cstring() - ); - } - - // Something for the end of the chain of binary operators - PyObject* not_implemented(PyObject*, PyObject*) - { - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; - } - - handle<function> not_implemented_function() - { - - static object keeper( - function_object( - py_function(¬_implemented, mpl::vector1<void>(), 2) - , python::detail::keyword_range()) - ); - return handle<function>(borrowed(downcast<function>(keeper.ptr()))); - } -} - -void function::add_to_namespace( - object const& name_space, char const* name_, object const& attribute) -{ - add_to_namespace(name_space, name_, attribute, 0); -} - -namespace detail -{ - extern char py_signature_tag[]; - extern char cpp_signature_tag[]; -} - -void function::add_to_namespace( - object const& name_space, char const* name_, object const& attribute, char const* doc) -{ - str const name(name_); - PyObject* const ns = name_space.ptr(); - - if (attribute.ptr()->ob_type == &function_type) - { - function* new_func = downcast<function>(attribute.ptr()); - handle<> dict; - -#if PY_VERSION_HEX < 0x03000000 - // Old-style class gone in Python 3 - if (PyClass_Check(ns)) - dict = handle<>(borrowed(((PyClassObject*)ns)->cl_dict)); - else -#endif - if (PyType_Check(ns)) - dict = handle<>(borrowed(((PyTypeObject*)ns)->tp_dict)); - else - dict = handle<>(PyObject_GetAttrString(ns, const_cast<char*>("__dict__"))); - - if (dict == 0) - throw_error_already_set(); - - handle<> existing(allow_null(::PyObject_GetItem(dict.get(), name.ptr()))); - - if (existing) - { - if (existing->ob_type == &function_type) - { - new_func->add_overload( - handle<function>( - borrowed( - downcast<function>(existing.get()) - ) - ) - ); - } - else if (existing->ob_type == &PyStaticMethod_Type) - { - char const* name_space_name = extract<char const*>(name_space.attr("__name__")); - - ::PyErr_Format( - PyExc_RuntimeError - , "Boost.Python - All overloads must be exported " - "before calling \'class_<...>(\"%s\").staticmethod(\"%s\")\'" - , name_space_name - , name_ - ); - throw_error_already_set(); - } - } - else if (is_binary_operator(name_)) - { - // Binary operators need an additional overload which - // returns NotImplemented, so that Python will try the - // __rxxx__ functions on the other operand. We add this - // when no overloads for the operator already exist. - new_func->add_overload(not_implemented_function()); - } - - // A function is named the first time it is added to a namespace. - if (new_func->name().is_none()) - new_func->m_name = name; - - handle<> name_space_name( - allow_null(::PyObject_GetAttrString(name_space.ptr(), const_cast<char*>("__name__")))); - - if (name_space_name) - new_func->m_namespace = object(name_space_name); - } - - // The PyObject_GetAttrString() or PyObject_GetItem calls above may - // have left an active error - PyErr_Clear(); - if (PyObject_SetAttr(ns, name.ptr(), attribute.ptr()) < 0) - throw_error_already_set(); - - object mutable_attribute(attribute); -/* - if (doc != 0 && docstring_options::show_user_defined_) - { - // Accumulate documentation - - if ( - PyObject_HasAttrString(mutable_attribute.ptr(), "__doc__") - && mutable_attribute.attr("__doc__")) - { - mutable_attribute.attr("__doc__") += "\n\n"; - mutable_attribute.attr("__doc__") += doc; - } - else { - mutable_attribute.attr("__doc__") = doc; - } - } - - if (docstring_options::show_signatures_) - { - if ( PyObject_HasAttrString(mutable_attribute.ptr(), "__doc__") - && mutable_attribute.attr("__doc__")) { - mutable_attribute.attr("__doc__") += ( - mutable_attribute.attr("__doc__")[-1] != "\n" ? "\n\n" : "\n"); - } - else { - mutable_attribute.attr("__doc__") = ""; - } - function* f = downcast<function>(attribute.ptr()); - mutable_attribute.attr("__doc__") += str("\n ").join(make_tuple( - "C++ signature:", f->signature(true))); - } - */ - str _doc; - - if (docstring_options::show_py_signatures_) - { - _doc += str(const_cast<const char*>(detail::py_signature_tag)); - } - if (doc != 0 && docstring_options::show_user_defined_) - _doc += doc; - - if (docstring_options::show_cpp_signatures_) - { - _doc += str(const_cast<const char*>(detail::cpp_signature_tag)); - } - if(_doc) - { - object mutable_attribute(attribute); - mutable_attribute.attr("__doc__")= _doc; - } -} - -BOOST_PYTHON_DECL void add_to_namespace( - object const& name_space, char const* name, object const& attribute) -{ - function::add_to_namespace(name_space, name, attribute, 0); -} - -BOOST_PYTHON_DECL void add_to_namespace( - object const& name_space, char const* name, object const& attribute, char const* doc) -{ - function::add_to_namespace(name_space, name, attribute, doc); -} - - -namespace -{ - struct bind_return - { - bind_return(PyObject*& result, function const* f, PyObject* args, PyObject* keywords) - : m_result(result) - , m_f(f) - , m_args(args) - , m_keywords(keywords) - {} - - void operator()() const - { - m_result = m_f->call(m_args, m_keywords); - } - - private: - PyObject*& m_result; - function const* m_f; - PyObject* m_args; - PyObject* m_keywords; - }; -} - -extern "C" -{ - // Stolen from Python's funcobject.c - static PyObject * - function_descr_get(PyObject *func, PyObject *obj, PyObject *type_) - { -#if PY_VERSION_HEX >= 0x03000000 - // The implement is different in Python 3 because of the removal of unbound method - if (obj == Py_None || obj == NULL) { - Py_INCREF(func); - return func; - } - return PyMethod_New(func, obj); -#else - if (obj == Py_None) - obj = NULL; - return PyMethod_New(func, obj, type_); -#endif - } - - static void - function_dealloc(PyObject* p) - { - delete static_cast<function*>(p); - } - - static PyObject * - function_call(PyObject *func, PyObject *args, PyObject *kw) - { - PyObject* result = 0; - handle_exception(bind_return(result, static_cast<function*>(func), args, kw)); - return result; - } - - // - // Here we're using the function's tp_getset rather than its - // tp_members to set up __doc__ and __name__, because tp_members - // really depends on having a POD object type (it relies on - // offsets). It might make sense to reformulate function as a POD - // at some point, but this is much more expedient. - // - static PyObject* function_get_doc(PyObject* op, void*) - { - function* f = downcast<function>(op); - list signatures = function_doc_signature_generator::function_doc_signatures(f); - if(!signatures) return python::detail::none(); - signatures.reverse(); - return python::incref( str("\n").join(signatures).ptr()); - } - - static int function_set_doc(PyObject* op, PyObject* doc, void*) - { - function* f = downcast<function>(op); - f->doc(doc ? object(python::detail::borrowed_reference(doc)) : object()); - return 0; - } - - static PyObject* function_get_name(PyObject* op, void*) - { - function* f = downcast<function>(op); - if (f->name().is_none()) -#if PY_VERSION_HEX >= 0x03000000 - return PyUnicode_InternFromString("<unnamed Boost.Python function>"); -#else - return PyString_InternFromString("<unnamed Boost.Python function>"); -#endif - else - return python::incref(f->name().ptr()); - } - - // We add a dummy __class__ attribute in order to fool PyDoc into - // treating these as built-in functions and scanning their - // documentation - static PyObject* function_get_class(PyObject* /*op*/, void*) - { - return python::incref(upcast<PyObject>(&PyCFunction_Type)); - } - - static PyObject* function_get_module(PyObject* op, void*) - { - function* f = downcast<function>(op); - object const& ns = f->get_namespace(); - if (!ns.is_none()) { - return python::incref(ns.ptr()); - } - PyErr_SetString( - PyExc_AttributeError, const_cast<char*>( - "Boost.Python function __module__ unknown.")); - return 0; - } -} - -static PyGetSetDef function_getsetlist[] = { - {const_cast<char*>("__name__"), (getter)function_get_name, 0, 0, 0 }, - {const_cast<char*>("func_name"), (getter)function_get_name, 0, 0, 0 }, - {const_cast<char*>("__module__"), (getter)function_get_module, 0, 0, 0 }, - {const_cast<char*>("func_module"), (getter)function_get_module, 0, 0, 0 }, - {const_cast<char*>("__class__"), (getter)function_get_class, 0, 0, 0 }, // see note above - {const_cast<char*>("__doc__"), (getter)function_get_doc, (setter)function_set_doc, 0, 0}, - {const_cast<char*>("func_doc"), (getter)function_get_doc, (setter)function_set_doc, 0, 0}, - {NULL, 0, 0, 0, 0} /* Sentinel */ -}; - -PyTypeObject function_type = { - PyVarObject_HEAD_INIT(NULL, 0) - const_cast<char*>("Boost.Python.function"), - sizeof(function), - 0, - (destructor)function_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, //(reprfunc)func_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - function_call, /* tp_call */ - 0, /* tp_str */ - 0, // PyObject_GenericGetAttr, /* tp_getattro */ - 0, // PyObject_GenericSetAttr, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT /* | Py_TPFLAGS_HAVE_GC */,/* tp_flags */ - 0, /* tp_doc */ - 0, // (traverseproc)func_traverse, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, //offsetof(PyFunctionObject, func_weakreflist), /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, // func_memberlist, /* tp_members */ - function_getsetlist, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - function_descr_get, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, //offsetof(PyFunctionObject, func_dict), /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ - 0, /* tp_free */ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif -}; - -object function_object( - py_function const& f - , python::detail::keyword_range const& keywords) -{ - return python::object( - python::detail::new_non_null_reference( - new function( - f, keywords.first, keywords.second - keywords.first))); -} - -object function_object(py_function const& f) -{ - return function_object(f, python::detail::keyword_range()); -} - - -handle<> function_handle_impl(py_function const& f) -{ - return python::handle<>( - allow_null( - new function(f, 0, 0))); -} - -} // namespace objects - -namespace detail -{ - object BOOST_PYTHON_DECL make_raw_function(objects::py_function f) - { - static keyword k; - - return objects::function_object( - f - , keyword_range(&k,&k)); - } - void BOOST_PYTHON_DECL pure_virtual_called() - { - PyErr_SetString( - PyExc_RuntimeError, const_cast<char*>("Pure virtual function called")); - throw_error_already_set(); - } -} - -}} // namespace boost::python diff --git a/pykd/boost.python/object/function_doc_signature.cpp b/pykd/boost.python/object/function_doc_signature.cpp deleted file mode 100644 index 4169528..0000000 --- a/pykd/boost.python/object/function_doc_signature.cpp +++ /dev/null @@ -1,344 +0,0 @@ -// Copyright Nikolay Mladenov 2007. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -// boost::python::make_tuple below are for gcc 4.4 -std=c++0x compatibility -// (Intel C++ 10 and 11 with -std=c++0x don't need the full qualification). - -#include <boost/python/converter/registrations.hpp> -#include <boost/python/object/function_doc_signature.hpp> -#include <boost/python/errors.hpp> -#include <boost/python/str.hpp> -#include <boost/python/args.hpp> -#include <boost/python/tuple.hpp> - -#include <boost/python/detail/signature.hpp> - -#include <vector> - -namespace boost { namespace python { namespace objects { - - bool function_doc_signature_generator::arity_cmp( function const *f1, function const *f2 ) - { - return f1->m_fn.max_arity() < f2->m_fn.max_arity(); - } - - bool function_doc_signature_generator::are_seq_overloads( function const *f1, function const *f2 , bool check_docs) - { - py_function const & impl1 = f1->m_fn; - py_function const & impl2 = f2->m_fn; - - //the number of parameters differs by 1 - if (impl2.max_arity()-impl1.max_arity() != 1) - return false; - - // if check docs then f1 shold not have docstring or have the same docstring as f2 - if (check_docs && f2->doc() != f1->doc() && f1->doc()) - return false; - - python::detail::signature_element const* s1 = impl1.signature(); - python::detail::signature_element const* s2 = impl2.signature(); - - unsigned size = impl1.max_arity()+1; - - for (unsigned i = 0; i != size; ++i) - { - //check if the argument types are the same - if (s1[i].basename != s2[i].basename) - return false; - - //return type - if (!i) continue; - - //check if the argument default values are the same - bool f1_has_names = bool(f1->m_arg_names); - bool f2_has_names = bool(f2->m_arg_names); - if ( (f1_has_names && f2_has_names && f2->m_arg_names[i-1]!=f1->m_arg_names[i-1]) - || (f1_has_names && !f2_has_names) - || (!f1_has_names && f2_has_names && f2->m_arg_names[i-1]!=python::object()) - ) - return false; - } - return true; - } - - std::vector<function const*> function_doc_signature_generator::flatten(function const *f) - { - object name = f->name(); - - std::vector<function const*> res; - - while (f) { - - //this if takes out the not_implemented_function - if (f->name() == name) - res.push_back(f); - - f=f->m_overloads.get(); - } - - //std::sort(res.begin(),res.end(), &arity_cmp); - - return res; - } - std::vector<function const*> function_doc_signature_generator::split_seq_overloads( const std::vector<function const *> &funcs, bool split_on_doc_change) - { - std::vector<function const*> res; - - std::vector<function const*>::const_iterator fi = funcs.begin(); - - function const * last = *fi; - - while (++fi != funcs.end()){ - - //check if fi starts a new chain of overloads - if (!are_seq_overloads( last, *fi, split_on_doc_change )) - res.push_back(last); - - last = *fi; - } - - if (last) - res.push_back(last); - - return res; - } - - str function_doc_signature_generator::raw_function_pretty_signature(function const *f, size_t n_overloads, bool cpp_types ) - { - str res("object"); - - res = str("%s %s(%s)" % make_tuple( res, f->m_name, str("tuple args, dict kwds")) ); - - return res; - } - - const char * function_doc_signature_generator::py_type_str(const python::detail::signature_element &s) - { - if (s.basename==std::string("void")){ - static const char * none = "None"; - return none; - } - - PyTypeObject const * py_type = s.pytype_f?s.pytype_f():0; - if ( py_type ) - return py_type->tp_name; - else{ - static const char * object = "object"; - return object; - } - } - - str function_doc_signature_generator::parameter_string(py_function const &f, size_t n, object arg_names, bool cpp_types) - { - str param; - - python::detail::signature_element const * s = f.signature(); - if (cpp_types) - { - if(!n) - s = &f.get_return_type(); - if (s[n].basename == 0) - { - return str("..."); - } - - param = str(s[n].basename); - - if (s[n].lvalue) - param += " {lvalue}"; - - } - else - { - if (n) //we are processing an argument and trying to come up with a name for it - { - object kv; - if ( arg_names && (kv = arg_names[n-1]) ) - param = str( " (%s)%s" % make_tuple(py_type_str(s[n]),kv[0]) ); - else - param = str(" (%s)%s%d" % make_tuple(py_type_str(s[n]),"arg", n) ); - } - else //we are processing the return type - param = py_type_str(f.get_return_type()); - } - - //an argument - check for default value and append it - if(n && arg_names) - { - object kv(arg_names[n-1]); - if (kv && len(kv) == 2) - { - param = str("%s=%r" % make_tuple(param, kv[1])); - } - } - return param; - } - - str function_doc_signature_generator::pretty_signature(function const *f, size_t n_overloads, bool cpp_types ) - { - py_function - const& impl = f->m_fn; - ; - - - unsigned arity = impl.max_arity(); - - if(arity == unsigned(-1))// is this the proper raw function test? - { - return raw_function_pretty_signature(f,n_overloads,cpp_types); - } - - list formal_params; - - size_t n_extra_default_args=0; - - for (unsigned n = 0; n <= arity; ++n) - { - str param; - - formal_params.append( - parameter_string(impl, n, f->m_arg_names, cpp_types) - ); - - // find all the arguments with default values preceeding the arity-n_overloads - if (n && f->m_arg_names) - { - object kv(f->m_arg_names[n-1]); - - if (kv && len(kv) == 2) - { - //default argument preceeding the arity-n_overloads - if( n <= arity-n_overloads) - ++n_extra_default_args; - } - else - //argument without default, preceeding the arity-n_overloads - if( n <= arity-n_overloads) - n_extra_default_args = 0; - } - } - - n_overloads+=n_extra_default_args; - - if (!arity && cpp_types) - formal_params.append("void"); - - str ret_type (formal_params.pop(0)); - if (cpp_types ) - { - return str( - "%s %s(%s%s%s%s)" - % boost::python::make_tuple // workaround, see top - ( ret_type - , f->m_name - , str(",").join(formal_params.slice(0,arity-n_overloads)) - , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() - , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) - , std::string(n_overloads,']') - )); - }else{ - return str( - "%s(%s%s%s%s) -> %s" - % boost::python::make_tuple // workaround, see top - ( f->m_name - , str(",").join(formal_params.slice(0,arity-n_overloads)) - , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() - , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) - , std::string(n_overloads,']') - , ret_type - )); - } - - return str( - "%s %s(%s%s%s%s) %s" - % boost::python::make_tuple // workaround, see top - ( cpp_types?ret_type:str("") - , f->m_name - , str(",").join(formal_params.slice(0,arity-n_overloads)) - , n_overloads ? (n_overloads!=arity?str(" [,"):str("[ ")) : str() - , str(" [,").join(formal_params.slice(arity-n_overloads,arity)) - , std::string(n_overloads,']') - , cpp_types?str(""):ret_type - )); - - } - - namespace detail { - char py_signature_tag[] = "PY signature :"; - char cpp_signature_tag[] = "C++ signature :"; - } - - list function_doc_signature_generator::function_doc_signatures( function const * f) - { - list signatures; - std::vector<function const*> funcs = flatten( f); - std::vector<function const*> split_funcs = split_seq_overloads( funcs, true); - std::vector<function const*>::const_iterator sfi=split_funcs.begin(), fi; - size_t n_overloads=0; - for (fi=funcs.begin(); fi!=funcs.end(); ++fi) - { - if(*sfi == *fi){ - if((*fi)->doc()) - { - str func_doc = str((*fi)->doc()); - - int doc_len = len(func_doc); - - bool show_py_signature = doc_len >= int(sizeof(detail::py_signature_tag)/sizeof(char)-1) - && str(detail::py_signature_tag) == func_doc.slice(0, int(sizeof(detail::py_signature_tag)/sizeof(char))-1); - if(show_py_signature) - { - func_doc = str(func_doc.slice(int(sizeof(detail::py_signature_tag)/sizeof(char))-1, _)); - doc_len = len(func_doc); - } - - bool show_cpp_signature = doc_len >= int(sizeof(detail::cpp_signature_tag)/sizeof(char)-1) - && str(detail::cpp_signature_tag) == func_doc.slice( 1-int(sizeof(detail::cpp_signature_tag)/sizeof(char)), _); - - if(show_cpp_signature) - { - func_doc = str(func_doc.slice(_, 1-int(sizeof(detail::cpp_signature_tag)/sizeof(char)))); - doc_len = len(func_doc); - } - - str res="\n"; - str pad = "\n"; - - if(show_py_signature) - { - str sig = pretty_signature(*fi, n_overloads,false); - res+=sig; - if(doc_len || show_cpp_signature )res+=" :"; - pad+= str(" "); - } - - if(doc_len) - { - if(show_py_signature) - res+=pad; - res+= pad.join(func_doc.split("\n")); - } - - if( show_cpp_signature) - { - if(len(res)>1) - res+="\n"+pad; - res+=detail::cpp_signature_tag+pad+" "+pretty_signature(*fi, n_overloads,true); - } - - signatures.append(res); - } - ++sfi; - n_overloads = 0; - }else - ++n_overloads ; - } - - return signatures; - } - - -}}} - diff --git a/pykd/boost.python/object/inheritance.cpp b/pykd/boost.python/object/inheritance.cpp deleted file mode 100644 index 7dc9db1..0000000 --- a/pykd/boost.python/object/inheritance.cpp +++ /dev/null @@ -1,495 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/object/inheritance.hpp> -#include <boost/python/type_id.hpp> -#include <boost/graph/breadth_first_search.hpp> -#if _MSC_FULL_VER >= 13102171 && _MSC_FULL_VER <= 13102179 -# include <boost/graph/reverse_graph.hpp> -#endif -#include <boost/graph/adjacency_list.hpp> -#include <boost/graph/reverse_graph.hpp> -#include <boost/property_map/property_map.hpp> -#include <boost/bind.hpp> -#include <boost/integer_traits.hpp> -#include <boost/tuple/tuple.hpp> -#include <boost/tuple/tuple_comparison.hpp> -#include <queue> -#include <vector> -#include <functional> - -// -// Procedure: -// -// The search is a BFS over the space of (type,address) pairs -// guided by the edges of the casting graph whose nodes -// correspond to classes, and whose edges are traversed by -// applying associated cast functions to an address. We use -// vertex distance to the goal node in the cast_graph to rate the -// paths. The vertex distance to any goal node is calculated on -// demand and outdated by the addition of edges to the graph. - -namespace boost { -namespace -{ - enum edge_cast_t { edge_cast = 8010 }; - template <class T> inline void unused_variable(const T&) { } -} - -// Install properties -BOOST_INSTALL_PROPERTY(edge, cast); - -namespace -{ - typedef void*(*cast_function)(void*); - - // - // Here we put together the low-level data structures of the - // casting graph representation. - // - typedef python::type_info class_id; - - // represents a graph of available casts - -#if 0 - struct cast_graph - : -#else - typedef -#endif - adjacency_list<vecS,vecS, bidirectionalS, no_property - - // edge index property allows us to look up edges in the connectivity matrix - , property<edge_index_t,std::size_t - - // The function which casts a void* from the edge's source type - // to its destination type. - , property<edge_cast_t,cast_function> > > -#if 0 - {}; -#else - cast_graph; -#endif - - typedef cast_graph::vertex_descriptor vertex_t; - typedef cast_graph::edge_descriptor edge_t; - - struct smart_graph - { - typedef std::vector<std::size_t>::const_iterator node_distance_map; - - typedef std::pair<cast_graph::out_edge_iterator - , cast_graph::out_edge_iterator> out_edges_t; - - // Return a map of the distances from any node to the given - // target node - node_distance_map distances_to(vertex_t target) const - { - std::size_t n = num_vertices(m_topology); - if (m_distances.size() != n * n) - { - m_distances.clear(); - m_distances.resize(n * n, (std::numeric_limits<std::size_t>::max)()); - m_known_vertices = n; - } - - std::vector<std::size_t>::iterator to_target = m_distances.begin() + n * target; - - // this node hasn't been used as a target yet - if (to_target[target] != 0) - { - typedef reverse_graph<cast_graph> reverse_cast_graph; - reverse_cast_graph reverse_topology(m_topology); - - to_target[target] = 0; - - breadth_first_search( - reverse_topology, target - , visitor( - make_bfs_visitor( - record_distances( - make_iterator_property_map( - to_target - , get(vertex_index, reverse_topology) -# ifdef BOOST_NO_STD_ITERATOR_TRAITS - , *to_target -# endif - ) - , on_tree_edge() - )))); - } - - return to_target; - } - - cast_graph& topology() { return m_topology; } - cast_graph const& topology() const { return m_topology; } - - smart_graph() - : m_known_vertices(0) - {} - - private: - cast_graph m_topology; - mutable std::vector<std::size_t> m_distances; - mutable std::size_t m_known_vertices; - }; - - smart_graph& full_graph() - { - static smart_graph x; - return x; - } - - smart_graph& up_graph() - { - static smart_graph x; - return x; - } - - // - // Our index of class types - // - using boost::python::objects::dynamic_id_function; - typedef tuples::tuple< - class_id // static type - , vertex_t // corresponding vertex - , dynamic_id_function // dynamic_id if polymorphic, or 0 - > - index_entry_interface; - typedef index_entry_interface::inherited index_entry; - enum { ksrc_static_t, kvertex, kdynamic_id }; - - typedef std::vector<index_entry> type_index_t; - - - type_index_t& type_index() - { - static type_index_t x; - return x; - } - - template <class Tuple> - struct select1st - { - typedef typename tuples::element<0, Tuple>::type result_type; - - result_type const& operator()(Tuple const& x) const - { - return tuples::get<0>(x); - } - }; - - // map a type to a position in the index - inline type_index_t::iterator type_position(class_id type) - { - typedef index_entry entry; - - return std::lower_bound( - type_index().begin(), type_index().end() - , boost::make_tuple(type, vertex_t(), dynamic_id_function(0)) - , boost::bind<bool>(std::less<class_id>() - , boost::bind<class_id>(select1st<entry>(), _1) - , boost::bind<class_id>(select1st<entry>(), _2))); - } - - inline index_entry* seek_type(class_id type) - { - type_index_t::iterator p = type_position(type); - if (p == type_index().end() || tuples::get<ksrc_static_t>(*p) != type) - return 0; - else - return &*p; - } - - // Get the entry for a type, inserting if necessary - inline type_index_t::iterator demand_type(class_id type) - { - type_index_t::iterator p = type_position(type); - - if (p != type_index().end() && tuples::get<ksrc_static_t>(*p) == type) - return p; - - vertex_t v = add_vertex(full_graph().topology()); - vertex_t v2 = add_vertex(up_graph().topology()); - unused_variable(v2); - assert(v == v2); - return type_index().insert(p, boost::make_tuple(type, v, dynamic_id_function(0))); - } - - // Map a two types to a vertex in the graph, inserting if necessary - typedef std::pair<type_index_t::iterator, type_index_t::iterator> - type_index_iterator_pair; - - inline type_index_iterator_pair - demand_types(class_id t1, class_id t2) - { - // be sure there will be no reallocation - type_index().reserve(type_index().size() + 2); - type_index_t::iterator first = demand_type(t1); - type_index_t::iterator second = demand_type(t2); - if (first == second) - ++first; - return std::make_pair(first, second); - } - - struct q_elt - { - q_elt(std::size_t distance - , void* src_address - , vertex_t target - , cast_function cast - ) - : distance(distance) - , src_address(src_address) - , target(target) - , cast(cast) - {} - - std::size_t distance; - void* src_address; - vertex_t target; - cast_function cast; - - bool operator<(q_elt const& rhs) const - { - return distance < rhs.distance; - } - }; - - // Optimization: - // - // Given p, src_t, dst_t - // - // Get a pointer pd to the most-derived object - // if it's polymorphic, dynamic_cast to void* - // otherwise pd = p - // - // Get the most-derived typeid src_td - // - // ptrdiff_t offset = p - pd - // - // Now we can keep a cache, for [src_t, offset, src_td, dst_t] of - // the cast transformation function to use on p and the next src_t - // in the chain. src_td, dst_t don't change throughout this - // process. In order to represent unreachability, when a pair is - // found to be unreachable, we stick a 0-returning "dead-cast" - // function in the cache. - - // This is needed in a few places below - inline void* identity_cast(void* p) - { - return p; - } - - void* search(smart_graph const& g, void* p, vertex_t src, vertex_t dst) - { - // I think this test was thoroughly bogus -- dwa - // If we know there's no path; bail now. - // if (src > g.known_vertices() || dst > g.known_vertices()) - // return 0; - - smart_graph::node_distance_map d(g.distances_to(dst)); - - if (d[src] == (std::numeric_limits<std::size_t>::max)()) - return 0; - - typedef property_map<cast_graph,edge_cast_t>::const_type cast_map; - cast_map casts = get(edge_cast, g.topology()); - - typedef std::pair<vertex_t,void*> search_state; - typedef std::vector<search_state> visited_t; - visited_t visited; - std::priority_queue<q_elt> q; - - q.push(q_elt(d[src], p, src, identity_cast)); - while (!q.empty()) - { - q_elt top = q.top(); - q.pop(); - - // Check to see if we have a real state - void* dst_address = top.cast(top.src_address); - if (dst_address == 0) - continue; - - if (top.target == dst) - return dst_address; - - search_state s(top.target,dst_address); - - visited_t::iterator pos = std::lower_bound( - visited.begin(), visited.end(), s); - - // If already visited, continue - if (pos != visited.end() && *pos == s) - continue; - - visited.insert(pos, s); // mark it - - // expand it: - smart_graph::out_edges_t edges = out_edges(s.first, g.topology()); - for (cast_graph::out_edge_iterator p = edges.first - , finish = edges.second - ; p != finish - ; ++p - ) - { - edge_t e = *p; - q.push(q_elt( - d[target(e, g.topology())] - , dst_address - , target(e, g.topology()) - , boost::get(casts, e))); - } - } - return 0; - } - - struct cache_element - { - typedef tuples::tuple< - class_id // source static type - , class_id // target type - , std::ptrdiff_t // offset within source object - , class_id // source dynamic type - >::inherited key_type; - - cache_element(key_type const& k) - : key(k) - , offset(0) - {} - - key_type key; - std::ptrdiff_t offset; - - BOOST_STATIC_CONSTANT( - std::ptrdiff_t, not_found = integer_traits<std::ptrdiff_t>::const_min); - - bool operator<(cache_element const& rhs) const - { - return this->key < rhs.key; - } - - bool unreachable() const - { - return offset == not_found; - } - }; - - enum { kdst_t = ksrc_static_t + 1, koffset, ksrc_dynamic_t }; - typedef std::vector<cache_element> cache_t; - - cache_t& cache() - { - static cache_t x; - return x; - } - - inline void* convert_type(void* const p, class_id src_t, class_id dst_t, bool polymorphic) - { - // Quickly rule out unregistered types - index_entry* src_p = seek_type(src_t); - if (src_p == 0) - return 0; - - index_entry* dst_p = seek_type(dst_t); - if (dst_p == 0) - return 0; - - // Look up the dynamic_id function and call it to get the dynamic - // info - boost::python::objects::dynamic_id_t dynamic_id = polymorphic - ? tuples::get<kdynamic_id>(*src_p)(p) - : std::make_pair(p, src_t); - - // Look in the cache first for a quickie address translation - std::ptrdiff_t offset = (char*)p - (char*)dynamic_id.first; - - cache_element seek(boost::make_tuple(src_t, dst_t, offset, dynamic_id.second)); - cache_t& c = cache(); - cache_t::iterator const cache_pos - = std::lower_bound(c.begin(), c.end(), seek); - - - // if found in the cache, we're done - if (cache_pos != c.end() && cache_pos->key == seek.key) - { - return cache_pos->offset == cache_element::not_found - ? 0 : (char*)p + cache_pos->offset; - } - - // If we are starting at the most-derived type, only look in the up graph - smart_graph const& g = polymorphic && dynamic_id.second != src_t - ? full_graph() : up_graph(); - - void* result = search( - g, p, tuples::get<kvertex>(*src_p) - , tuples::get<kvertex>(*dst_p)); - - // update the cache - c.insert(cache_pos, seek)->offset - = (result == 0) ? cache_element::not_found : (char*)result - (char*)p; - - return result; - } -} - -namespace python { namespace objects { - -BOOST_PYTHON_DECL void* find_dynamic_type(void* p, class_id src_t, class_id dst_t) -{ - return convert_type(p, src_t, dst_t, true); -} - -BOOST_PYTHON_DECL void* find_static_type(void* p, class_id src_t, class_id dst_t) -{ - return convert_type(p, src_t, dst_t, false); -} - -BOOST_PYTHON_DECL void add_cast( - class_id src_t, class_id dst_t, cast_function cast, bool is_downcast) -{ - // adding an edge will invalidate any record of unreachability in - // the cache. - static std::size_t expected_cache_len = 0; - cache_t& c = cache(); - if (c.size() > expected_cache_len) - { - c.erase(std::remove_if( - c.begin(), c.end(), - mem_fn(&cache_element::unreachable)) - , c.end()); - - // If any new cache entries get added, we'll have to do this - // again when the next edge is added - expected_cache_len = c.size(); - } - - type_index_iterator_pair types = demand_types(src_t, dst_t); - vertex_t src = tuples::get<kvertex>(*types.first); - vertex_t dst = tuples::get<kvertex>(*types.second); - - cast_graph* const g[2] = { &up_graph().topology(), &full_graph().topology() }; - - for (cast_graph*const* p = g + (is_downcast ? 1 : 0); p < g + 2; ++p) - { - edge_t e; - bool added; - - tie(e, added) = add_edge(src, dst, **p); - assert(added); - - put(get(edge_cast, **p), e, cast); - put(get(edge_index, **p), e, num_edges(full_graph().topology()) - 1); - } -} - -BOOST_PYTHON_DECL void register_dynamic_id_aux( - class_id static_id, dynamic_id_function get_dynamic_id) -{ - tuples::get<kdynamic_id>(*demand_type(static_id)) = get_dynamic_id; -} - -}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/iterator.cpp b/pykd/boost.python/object/iterator.cpp deleted file mode 100644 index 3f6c4ad..0000000 --- a/pykd/boost.python/object/iterator.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/object/iterator_core.hpp> -#include <boost/python/object/function_object.hpp> -#include <boost/bind.hpp> -#include <boost/mpl/vector/vector10.hpp> - -namespace boost { namespace python { namespace objects { - -namespace -{ - PyObject* identity(PyObject* args_, PyObject*) - { - PyObject* x = PyTuple_GET_ITEM(args_,0); - Py_INCREF(x); - return x; - } -} - -BOOST_PYTHON_DECL object const& identity_function() -{ - static object result( - function_object( - py_function(&identity, mpl::vector2<PyObject*,PyObject*>()) - ) - ); - return result; -} - -void stop_iteration_error() -{ - PyErr_SetObject(PyExc_StopIteration, Py_None); - throw_error_already_set(); -} - -}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/life_support.cpp b/pykd/boost.python/object/life_support.cpp deleted file mode 100644 index 98cd9d0..0000000 --- a/pykd/boost.python/object/life_support.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/object/life_support.hpp> -#include <boost/python/detail/none.hpp> -#include <boost/python/refcount.hpp> - -namespace boost { namespace python { namespace objects { - -struct life_support -{ - PyObject_HEAD - PyObject* patient; -}; - -extern "C" -{ - static void - life_support_dealloc(PyObject* self) - { - Py_XDECREF(((life_support*)self)->patient); - self->ob_type->tp_free(self); - } - - static PyObject * - life_support_call(PyObject *self, PyObject *arg, PyObject * /*kw*/) - { - // Let the patient die now - Py_XDECREF(((life_support*)self)->patient); - ((life_support*)self)->patient = 0; - // Let the weak reference die. This probably kills us. - Py_XDECREF(PyTuple_GET_ITEM(arg, 0)); - return ::boost::python::detail::none(); - } -} - -PyTypeObject life_support_type = { - PyVarObject_HEAD_INIT(NULL, 0)//(&PyType_Type) - const_cast<char*>("Boost.Python.life_support"), - sizeof(life_support), - 0, - life_support_dealloc, /* tp_dealloc */ - 0, /* tp_print */ - 0, /* tp_getattr */ - 0, /* tp_setattr */ - 0, /* tp_compare */ - 0, //(reprfunc)func_repr, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - 0, /* tp_hash */ - life_support_call, /* tp_call */ - 0, /* tp_str */ - 0, // PyObject_GenericGetAttr, /* tp_getattro */ - 0, // PyObject_GenericSetAttr, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT /* | Py_TPFLAGS_HAVE_GC */,/* tp_flags */ - 0, /* tp_doc */ - 0, // (traverseproc)func_traverse, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, //offsetof(PyLife_SupportObject, func_weakreflist), /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, // func_memberlist, /* tp_members */ - 0, //func_getsetlist, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, //offsetof(PyLife_SupportObject, func_dict), /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ - 0, /* tp_free */ - 0, /* tp_is_gc */ - 0, /* tp_bases */ - 0, /* tp_mro */ - 0, /* tp_cache */ - 0, /* tp_subclasses */ - 0, /* tp_weaklist */ -#if PYTHON_API_VERSION >= 1012 - 0 /* tp_del */ -#endif -}; - -PyObject* make_nurse_and_patient(PyObject* nurse, PyObject* patient) -{ - if (nurse == Py_None || nurse == patient) - return nurse; - - if (Py_TYPE(&life_support_type) == 0) - { -#if PY_VERSION_HEX >= 0x030b0000 - Py_SET_TYPE(&life_support_type, &PyType_Type); -#else - Py_TYPE(&life_support_type) = &PyType_Type; -#endif - PyType_Ready(&life_support_type); - } - - life_support* system = PyObject_New(life_support, &life_support_type); - if (!system) - return 0; - - system->patient = 0; - - // We're going to leak this reference, but don't worry; the - // life_support system decrements it when the nurse dies. - PyObject* weakref = PyWeakref_NewRef(nurse, (PyObject*)system); - - // weakref has either taken ownership, or we have to release it - // anyway - Py_DECREF(system); - if (!weakref) - return 0; - - system->patient = patient; - Py_XINCREF(patient); // hang on to the patient until death - return weakref; -} - -}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object/pickle_support.cpp b/pykd/boost.python/object/pickle_support.cpp deleted file mode 100644 index 428c07b..0000000 --- a/pykd/boost.python/object/pickle_support.cpp +++ /dev/null @@ -1,78 +0,0 @@ -// (C) Copyright R.W. Grosse-Kunstleve 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/make_function.hpp> -#include <boost/python/object/class.hpp> -#include <boost/python/tuple.hpp> -#include <boost/python/list.hpp> -#include <boost/python/dict.hpp> -#include <boost/python/str.hpp> - -namespace boost { namespace python { - -namespace { - - tuple instance_reduce(object instance_obj) - { - list result; - object instance_class(instance_obj.attr("__class__")); - result.append(instance_class); - object none; - if (!getattr(instance_obj, "__safe_for_unpickling__", none)) - { - str type_name(getattr(instance_class, "__name__")); - str module_name(getattr(instance_class, "__module__", object(""))); - if (module_name) - module_name += "."; - - PyErr_SetObject( - PyExc_RuntimeError, - ( "Pickling of \"%s\" instances is not enabled" - " (http://www.boost.org/libs/python/doc/v2/pickle.html)" - % (module_name+type_name)).ptr() - ); - - throw_error_already_set(); - } - object getinitargs = getattr(instance_obj, "__getinitargs__", none); - tuple initargs; - if (!getinitargs.is_none()) { - initargs = tuple(getinitargs()); - } - result.append(initargs); - object getstate = getattr(instance_obj, "__getstate__", none); - object instance_dict = getattr(instance_obj, "__dict__", none); - long len_instance_dict = 0; - if (!instance_dict.is_none()) { - len_instance_dict = len(instance_dict); - } - if (!getstate.is_none()) { - if (len_instance_dict > 0) { - object getstate_manages_dict = getattr( - instance_obj, "__getstate_manages_dict__", none); - if (getstate_manages_dict.is_none()) { - PyErr_SetString(PyExc_RuntimeError, - "Incomplete pickle support" - " (__getstate_manages_dict__ not set)"); - throw_error_already_set(); - } - } - result.append(getstate()); - } - else if (len_instance_dict > 0) { - result.append(instance_dict); - } - return tuple(result); - } - -} // namespace - -object const& make_instance_reduce_function() -{ - static object result(&instance_reduce); - return result; -} - -}} // namespace boost::python diff --git a/pykd/boost.python/object/stl_iterator.cpp b/pykd/boost.python/object/stl_iterator.cpp deleted file mode 100644 index e32d321..0000000 --- a/pykd/boost.python/object/stl_iterator.cpp +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright Eric Niebler 2005. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// -// Credits: -// Andreas Kl\:ockner for fixing increment() to handle -// error conditions. - -#include <boost/python/object.hpp> -#include <boost/python/handle.hpp> -#include <boost/python/object/stl_iterator_core.hpp> - -namespace boost { namespace python { namespace objects -{ - -stl_input_iterator_impl::stl_input_iterator_impl() - : it_() - , ob_() -{ -} - -stl_input_iterator_impl::stl_input_iterator_impl(boost::python::object const &ob) - : it_(ob.attr("__iter__")()) - , ob_() -{ - this->increment(); -} - -void stl_input_iterator_impl::increment() -{ - this->ob_ = boost::python::handle<>( - boost::python::allow_null(PyIter_Next(this->it_.ptr()))); - if (PyErr_Occurred()) - throw boost::python::error_already_set(); -} - -bool stl_input_iterator_impl::equal(stl_input_iterator_impl const &that) const -{ - return !this->ob_ == !that.ob_; -} - -boost::python::handle<> const &stl_input_iterator_impl::current() const -{ - return this->ob_; -} - -}}} // namespace boost::python::objects diff --git a/pykd/boost.python/object_operators.cpp b/pykd/boost.python/object_operators.cpp deleted file mode 100644 index b993245..0000000 --- a/pykd/boost.python/object_operators.cpp +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/object_operators.hpp> -#include <boost/python/detail/raw_pyobject.hpp> - -namespace boost { namespace python { namespace api { - -# define BOOST_PYTHON_COMPARE_OP(op, opid) \ -BOOST_PYTHON_DECL object operator op(object const& l, object const& r) \ -{ \ - return object( \ - detail::new_reference( \ - PyObject_RichCompare( \ - l.ptr(), r.ptr(), opid)) \ - ); \ -} -BOOST_PYTHON_COMPARE_OP(>, Py_GT) -BOOST_PYTHON_COMPARE_OP(>=, Py_GE) -BOOST_PYTHON_COMPARE_OP(<, Py_LT) -BOOST_PYTHON_COMPARE_OP(<=, Py_LE) -BOOST_PYTHON_COMPARE_OP(==, Py_EQ) -BOOST_PYTHON_COMPARE_OP(!=, Py_NE) -# undef BOOST_PYTHON_COMPARE_OP - - -#define BOOST_PYTHON_BINARY_OPERATOR(op, name) \ -BOOST_PYTHON_DECL object operator op(object const& l, object const& r) \ -{ \ - return object( \ - detail::new_reference( \ - PyNumber_##name(l.ptr(), r.ptr())) \ - ); \ -} - -BOOST_PYTHON_BINARY_OPERATOR(+, Add) -BOOST_PYTHON_BINARY_OPERATOR(-, Subtract) -BOOST_PYTHON_BINARY_OPERATOR(*, Multiply) -#if PY_VERSION_HEX >= 0x03000000 -// We choose FloorDivide instead of TrueDivide to keep the semantic -// conform with C/C++'s '/' operator -BOOST_PYTHON_BINARY_OPERATOR(/, FloorDivide) -#else -BOOST_PYTHON_BINARY_OPERATOR(/, Divide) -#endif -BOOST_PYTHON_BINARY_OPERATOR(%, Remainder) -BOOST_PYTHON_BINARY_OPERATOR(<<, Lshift) -BOOST_PYTHON_BINARY_OPERATOR(>>, Rshift) -BOOST_PYTHON_BINARY_OPERATOR(&, And) -BOOST_PYTHON_BINARY_OPERATOR(^, Xor) -BOOST_PYTHON_BINARY_OPERATOR(|, Or) -#undef BOOST_PYTHON_BINARY_OPERATOR - -#define BOOST_PYTHON_INPLACE_OPERATOR(op, name) \ -BOOST_PYTHON_DECL object& operator op##=(object& l, object const& r) \ -{ \ - return l = object( \ - (detail::new_reference) \ - PyNumber_InPlace##name(l.ptr(), r.ptr())); \ -} - -BOOST_PYTHON_INPLACE_OPERATOR(+, Add) -BOOST_PYTHON_INPLACE_OPERATOR(-, Subtract) -BOOST_PYTHON_INPLACE_OPERATOR(*, Multiply) -#if PY_VERSION_HEX >= 0x03000000 -// Same reason as above for choosing FloorDivide instead of TrueDivide -BOOST_PYTHON_INPLACE_OPERATOR(/, FloorDivide) -#else -BOOST_PYTHON_INPLACE_OPERATOR(/, Divide) -#endif -BOOST_PYTHON_INPLACE_OPERATOR(%, Remainder) -BOOST_PYTHON_INPLACE_OPERATOR(<<, Lshift) -BOOST_PYTHON_INPLACE_OPERATOR(>>, Rshift) -BOOST_PYTHON_INPLACE_OPERATOR(&, And) -BOOST_PYTHON_INPLACE_OPERATOR(^, Xor) -BOOST_PYTHON_INPLACE_OPERATOR(|, Or) -#undef BOOST_PYTHON_INPLACE_OPERATOR - -object::object(handle<> const& x) - : object_base(python::incref(python::expect_non_null(x.get()))) -{} - -}}} // namespace boost::python diff --git a/pykd/boost.python/object_protocol.cpp b/pykd/boost.python/object_protocol.cpp deleted file mode 100644 index 95c8c73..0000000 --- a/pykd/boost.python/object_protocol.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright David Abrahams 2002. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/object_protocol.hpp> -#include <boost/python/errors.hpp> -#include <boost/python/object.hpp> -#include <boost/python/ssize_t.hpp> - -namespace boost { namespace python { namespace api { - -BOOST_PYTHON_DECL object getattr(object const& target, object const& key) -{ - return object(detail::new_reference(PyObject_GetAttr(target.ptr(), key.ptr()))); -} - -BOOST_PYTHON_DECL object getattr(object const& target, object const& key, object const& default_) -{ - PyObject* result = PyObject_GetAttr(target.ptr(), key.ptr()); - if (result == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) - { - PyErr_Clear(); - return default_; - } - return object(detail::new_reference(result)); -} - -BOOST_PYTHON_DECL void setattr(object const& target, object const& key, object const& value) -{ - if (PyObject_SetAttr(target.ptr(), key.ptr(), value.ptr()) == -1) - throw_error_already_set(); -} - -BOOST_PYTHON_DECL void delattr(object const& target, object const& key) -{ - if (PyObject_DelAttr(target.ptr(), key.ptr()) == -1) - throw_error_already_set(); -} - -BOOST_PYTHON_DECL object getattr(object const& target, char const* key) -{ - return object( - detail::new_reference( - PyObject_GetAttrString(target.ptr(), const_cast<char*>(key)) - )); -} - -BOOST_PYTHON_DECL object getattr(object const& target, char const* key, object const& default_) -{ - PyObject* result = PyObject_GetAttrString(target.ptr(), const_cast<char*>(key)); - if (result == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) - { - PyErr_Clear(); - return default_; - } - return object(detail::new_reference(result)); - -} -BOOST_PYTHON_DECL void setattr(object const& target, char const* key, object const& value) -{ - if (PyObject_SetAttrString( - target.ptr(), const_cast<char*>(key), value.ptr()) == -1 - ) - { - throw_error_already_set(); - } -} - -BOOST_PYTHON_DECL void delattr(object const& target, char const* key) -{ - if (PyObject_DelAttrString( - target.ptr(), const_cast<char*>(key)) == -1 - ) - { - throw_error_already_set(); - } -} - -BOOST_PYTHON_DECL object getitem(object const& target, object const& key) -{ - return object(detail::new_reference( - PyObject_GetItem(target.ptr(), key.ptr()))); -} - -BOOST_PYTHON_DECL void setitem(object const& target, object const& key, object const& value) -{ - if (PyObject_SetItem(target.ptr(), key.ptr(), value.ptr()) == -1) - throw_error_already_set(); -} - -BOOST_PYTHON_DECL void delitem(object const& target, object const& key) -{ - if (PyObject_DelItem(target.ptr(), key.ptr()) == -1) - throw_error_already_set(); -} - -namespace // slicing code copied directly out of the Python implementation -{ - #undef ISINT - #define ISINT(x) ((x) == NULL || PyInt_Check(x) || PyLong_Check(x)) - - static PyObject * - apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */ - { -#if PY_VERSION_HEX < 0x03000000 - PyTypeObject *tp = u->ob_type; - PySequenceMethods *sq = tp->tp_as_sequence; - - if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { - ssize_t ilow = 0, ihigh = ssize_t_max; - if (!_PyEval_SliceIndex(v, &ilow)) - return NULL; - if (!_PyEval_SliceIndex(w, &ihigh)) - return NULL; - return PySequence_GetSlice(u, ilow, ihigh); - } - else -#endif - { - PyObject *slice = PySlice_New(v, w, NULL); - if (slice != NULL) { - PyObject *res = PyObject_GetItem(u, slice); - Py_DECREF(slice); - return res; - } - else - return NULL; - } - } - - static int - assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x) - /* u[v:w] = x */ - { -#if PY_VERSION_HEX < 0x03000000 - PyTypeObject *tp = u->ob_type; - PySequenceMethods *sq = tp->tp_as_sequence; - - if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) { - ssize_t ilow = 0, ihigh = ssize_t_max; - if (!_PyEval_SliceIndex(v, &ilow)) - return -1; - if (!_PyEval_SliceIndex(w, &ihigh)) - return -1; - if (x == NULL) - return PySequence_DelSlice(u, ilow, ihigh); - else - return PySequence_SetSlice(u, ilow, ihigh, x); - } - else -#endif - { - PyObject *slice = PySlice_New(v, w, NULL); - if (slice != NULL) { - int res; - if (x != NULL) - res = PyObject_SetItem(u, slice, x); - else - res = PyObject_DelItem(u, slice); - Py_DECREF(slice); - return res; - } - else - return -1; - } - } -} - -BOOST_PYTHON_DECL object getslice(object const& target, handle<> const& begin, handle<> const& end) -{ - return object( - detail::new_reference( - apply_slice(target.ptr(), begin.get(), end.get()))); -} - -BOOST_PYTHON_DECL void setslice(object const& target, handle<> const& begin, handle<> const& end, object const& value) -{ - if (assign_slice( - target.ptr(), begin.get(), end.get(), value.ptr()) == -1 - ) - { - throw_error_already_set(); - } -} - -BOOST_PYTHON_DECL void delslice(object const& target, handle<> const& begin, handle<> const& end) -{ - if (assign_slice( - target.ptr(), begin.get(), end.get(), 0) == -1 - ) - { - throw_error_already_set(); - } -} - -}}} // namespace boost::python::api diff --git a/pykd/boost.python/slice.cpp b/pykd/boost.python/slice.cpp deleted file mode 100644 index ee55f94..0000000 --- a/pykd/boost.python/slice.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "boost/python/slice.hpp" - -// Copyright (c) 2004 Jonathan Brandmeyer -// Use, modification and distribution are subject to the -// Boost Software License, Version 1.0. (See accompanying file -// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - - -namespace boost { namespace python { namespace detail { - -slice_base::slice_base(PyObject* start, PyObject* stop, PyObject* step) - : object(detail::new_reference( PySlice_New(start, stop, step))) -{ -} - -object -slice_base::start() const -{ - return object( detail::borrowed_reference( - ((PySliceObject*)this->ptr())->start)); -} - -object -slice_base::stop() const -{ - return object( detail::borrowed_reference( - ((PySliceObject*)this->ptr())->stop)); -} - -object -slice_base::step() const -{ - return object( detail::borrowed_reference( - ((PySliceObject*)this->ptr())->step)); -} - -} } } // !namespace boost::python::detail diff --git a/pykd/boost.python/str.cpp b/pykd/boost.python/str.cpp deleted file mode 100644 index 5122f7f..0000000 --- a/pykd/boost.python/str.cpp +++ /dev/null @@ -1,419 +0,0 @@ -// Copyright David Abrahams 2004. Distributed under the Boost -// Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/str.hpp> -#include <boost/python/extract.hpp> -#include <boost/python/ssize_t.hpp> - -namespace boost { namespace python { namespace detail { - -detail::new_reference str_base::call(object const& arg_) -{ - return (detail::new_reference)PyObject_CallFunction( -#if PY_VERSION_HEX >= 0x03000000 - (PyObject*)&PyUnicode_Type, -#else - (PyObject*)&PyString_Type, -#endif - const_cast<char*>("(O)"), - arg_.ptr()); -} - -str_base::str_base() - : object(detail::new_reference( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromString("") -#else - ::PyString_FromString("") -#endif - )) -{} - -str_base::str_base(const char* s) - : object(detail::new_reference( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromString(s) -#else - ::PyString_FromString(s) -#endif - )) -{} - -namespace { - - ssize_t str_size_as_py_ssize_t(std::size_t n) - { - if (n > static_cast<std::size_t>(ssize_t_max)) - { - throw std::range_error("str size > ssize_t_max"); - } - return static_cast<ssize_t>(n); - } - -} // namespace <anonymous> - -str_base::str_base(char const* start, char const* finish) - : object( - detail::new_reference( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - (start, str_size_as_py_ssize_t(finish - start)) - ) - ) -{} - -str_base::str_base(char const* start, std::size_t length) // new str - : object( - detail::new_reference( -#if PY_VERSION_HEX >= 0x03000000 - ::PyUnicode_FromStringAndSize -#else - ::PyString_FromStringAndSize -#endif - ( start, str_size_as_py_ssize_t(length) ) - ) - ) -{} - -str_base::str_base(object_cref other) - : object(str_base::call(other)) -{} - -#define BOOST_PYTHON_FORMAT_OBJECT(z, n, data) "O" -#define BOOST_PYTHON_OBJECT_PTR(z, n, data) , x##n .ptr() - -#define BOOST_PYTHON_DEFINE_STR_METHOD(name, arity) \ -str str_base:: name ( BOOST_PP_ENUM_PARAMS(arity, object_cref x) ) const \ -{ \ - return str(new_reference( \ - expect_non_null( \ - PyObject_CallMethod( \ - this->ptr(), const_cast<char*>( #name ), \ - const_cast<char*>( \ - "(" BOOST_PP_REPEAT(arity, BOOST_PYTHON_FORMAT_OBJECT, _) ")") \ - BOOST_PP_REPEAT_1(arity, BOOST_PYTHON_OBJECT_PTR, _))))); \ -} - -BOOST_PYTHON_DEFINE_STR_METHOD(capitalize, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(center, 1) - -long str_base::count(object_cref sub) const -{ - return extract<long>(this->attr("count")(sub)); -} - -long str_base::count(object_cref sub, object_cref start) const -{ - return extract<long>(this->attr("count")(sub,start)); -} - -long str_base::count(object_cref sub, object_cref start, object_cref end) const -{ - return extract<long>(this->attr("count")(sub,start,end)); -} - -#if PY_VERSION_HEX < 0x03000000 -object str_base::decode() const -{ - return this->attr("decode")(); -} - -object str_base::decode(object_cref encoding) const -{ - return this->attr("decode")(encoding); -} - -object str_base::decode(object_cref encoding, object_cref errors) const -{ - return this->attr("decode")(encoding,errors); -} -#endif - -object str_base::encode() const -{ - return this->attr("encode")(); -} - -object str_base::encode(object_cref encoding) const -{ - return this->attr("encode")(encoding); -} - -object str_base::encode(object_cref encoding, object_cref errors) const -{ - return this->attr("encode")(encoding,errors); -} - - -#if PY_VERSION_HEX >= 0x03000000 - #define _BOOST_PYTHON_ASLONG PyLong_AsLong -#else - #define _BOOST_PYTHON_ASLONG PyInt_AsLong -#endif - -bool str_base::endswith(object_cref suffix) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::endswith(object_cref suffix, object_cref start) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::endswith(object_cref suffix, object_cref start, object_cref end) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("endswith")(suffix,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -BOOST_PYTHON_DEFINE_STR_METHOD(expandtabs, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(expandtabs, 1) - -long str_base::find(object_cref sub) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::find(object_cref sub, object_cref start) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::find(object_cref sub, object_cref start, object_cref end) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("find")(sub,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::index(object_cref sub) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::index(object_cref sub, object_cref start) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::index(object_cref sub, object_cref start, object_cref end) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("index")(sub,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::isalnum() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("isalnum")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::isalpha() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("isalpha")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::isdigit() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("isdigit")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::islower() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("islower")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::isspace() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("isspace")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::istitle() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("istitle")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::isupper() const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("isupper")().ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -BOOST_PYTHON_DEFINE_STR_METHOD(join, 1) -BOOST_PYTHON_DEFINE_STR_METHOD(ljust, 1) -BOOST_PYTHON_DEFINE_STR_METHOD(lower, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(lstrip, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(replace, 2) -BOOST_PYTHON_DEFINE_STR_METHOD(replace, 3) - -long str_base::rfind(object_cref sub) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::rfind(object_cref sub, object_cref start) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::rfind(object_cref sub, object_cref start, object_cref end) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rfind")(sub,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::rindex(object_cref sub) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::rindex(object_cref sub, object_cref start) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -long str_base::rindex(object_cref sub, object_cref start, object_cref end) const -{ - long result = _BOOST_PYTHON_ASLONG(this->attr("rindex")(sub,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -BOOST_PYTHON_DEFINE_STR_METHOD(rjust, 1) -BOOST_PYTHON_DEFINE_STR_METHOD(rstrip, 0) - -list str_base::split() const -{ - return list(this->attr("split")()); -} - -list str_base::split(object_cref sep) const -{ - return list(this->attr("split")(sep)); -} - -list str_base::split(object_cref sep, object_cref maxsplit) const -{ - return list(this->attr("split")(sep,maxsplit)); -} - -list str_base::splitlines() const -{ - return list(this->attr("splitlines")()); -} - -list str_base::splitlines(object_cref keepends) const -{ - return list(this->attr("splitlines")(keepends)); -} - -bool str_base::startswith(object_cref prefix) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::startswith(object_cref prefix, object_cref start) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix,start).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -bool str_base::startswith(object_cref prefix, object_cref start, object_cref end) const -{ - bool result = _BOOST_PYTHON_ASLONG(this->attr("startswith")(prefix,start,end).ptr()); - if (PyErr_Occurred()) - throw_error_already_set(); - return result; -} - -#undef _BOOST_PYTHON_ASLONG - -BOOST_PYTHON_DEFINE_STR_METHOD(strip, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(swapcase, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(title, 0) -BOOST_PYTHON_DEFINE_STR_METHOD(translate, 1) -BOOST_PYTHON_DEFINE_STR_METHOD(translate, 2) -BOOST_PYTHON_DEFINE_STR_METHOD(upper, 0) - -static struct register_str_pytype_ptr -{ - register_str_pytype_ptr() - { - const_cast<converter::registration &>( - converter::registry::lookup(boost::python::type_id<boost::python::str>()) - ) -#if PY_VERSION_HEX >= 0x03000000 - .m_class_object = &PyUnicode_Type; -#else - .m_class_object = &PyString_Type; -#endif - } -}register_str_pytype_ptr_; - -}}} // namespace boost::python diff --git a/pykd/boost.python/tuple.cpp b/pykd/boost.python/tuple.cpp deleted file mode 100644 index 6719713..0000000 --- a/pykd/boost.python/tuple.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright David Abrahams 2004. -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -#include <boost/python/tuple.hpp> - -namespace boost { namespace python { namespace detail { - -detail::new_reference tuple_base::call(object const& arg_) -{ - return (detail::new_reference)PyObject_CallFunction( - (PyObject*)&PyTuple_Type, const_cast<char*>("(O)"), - arg_.ptr()); -} - -tuple_base::tuple_base() - : object(detail::new_reference(PyTuple_New(0))) -{} - -tuple_base::tuple_base(object_cref sequence) - : object(call(sequence)) -{} - -static struct register_tuple_pytype_ptr -{ - register_tuple_pytype_ptr() - { - const_cast<converter::registration &>( - converter::registry::lookup(boost::python::type_id<boost::python::tuple>()) - ).m_class_object = &PyTuple_Type; - } -}register_tuple_pytype_ptr_; - - -}}} // namespace boost::python diff --git a/pykd/boost.python/wrapper.cpp b/pykd/boost.python/wrapper.cpp deleted file mode 100644 index f8feaef..0000000 --- a/pykd/boost.python/wrapper.cpp +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright David Abrahams 2004. Distributed under the Boost -// Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - -#include <boost/python/wrapper.hpp> - -namespace boost { namespace python { - -namespace detail -{ - override wrapper_base::get_override( - char const* name - , PyTypeObject* class_object - ) const - { - if (this->m_self) - { - if (handle<> m = handle<>( - python::allow_null( - ::PyObject_GetAttrString( - this->m_self, const_cast<char*>(name)))) - ) - { - PyObject* borrowed_f = 0; - - if ( - PyMethod_Check(m.get()) - && ((PyMethodObject*)m.get())->im_self == this->m_self - && class_object->tp_dict != 0 - ) - { - borrowed_f = ::PyDict_GetItemString( - class_object->tp_dict, const_cast<char*>(name)); - - - } - if (borrowed_f != ((PyMethodObject*)m.get())->im_func) - return override(m); - } - } - return override(handle<>(detail::none())); - } -} - -#if 0 -namespace converter -{ - PyObject* BOOST_PYTHON_DECL do_polymorphic_ref_to_python( - python::detail::wrapper_base const volatile* x, type_info src - ) - { - if (x == 0) - { - ::PyErr_Format( - PyExc_TypeError - , "Attempting to returning pointer or reference to instance of %s\n" - "for which no corresponding Python object exists. Wrap this function" - "with a return return value policy" - ) - } - } - -} -#endif - -}} // namespace boost::python::detail diff --git a/pykd/packages.config b/pykd/packages.config index 631f694..f9ff2a0 100644 --- a/pykd/packages.config +++ b/pykd/packages.config @@ -1,12 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <packages> - <package id="boost" version="1.67.0.0" targetFramework="native" /> - <package id="boost_atomic-src" version="1.67.0.0" targetFramework="native" /> - <package id="boost_chrono-src" version="1.67.0.0" targetFramework="native" /> - <package id="boost_date_time-src" version="1.67.0.0" targetFramework="native" /> - <package id="boost_regex-src" version="1.67.0.0" targetFramework="native" /> - <package id="boost_system-src" version="1.67.0.0" targetFramework="native" /> - <package id="boost_thread-src" version="1.67.0.0" targetFramework="native" /> <package id="python2" version="2.7.18" allowedVersions="[2.7.12,3.8.0)" targetFramework="native" /> <package id="python2x86" version="2.7.18" allowedVersions="[2.7.12,3.8.0)" targetFramework="native" /> <package id="python" version="3.11.2" allowedVersions="[3.5.2,3.12.0)" targetFramework="native" /> diff --git a/pykd/pykd.vcxproj b/pykd/pykd.vcxproj index 429eb8f..ecd1ee1 100644 --- a/pykd/pykd.vcxproj +++ b/pykd/pykd.vcxproj @@ -516,9 +516,7 @@ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> - <PropertyGroup Label="UserMacros"> - <NuGetPackageImportStamp>bb9fbdf7</NuGetPackageImportStamp> - </PropertyGroup> + <PropertyGroup Label="UserMacros" /> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.11|Win32'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> @@ -543,9 +541,7 @@ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> - <PropertyGroup Label="UserMacros"> - <NuGetPackageImportStamp>bb9fbdf7</NuGetPackageImportStamp> - </PropertyGroup> + <PropertyGroup Label="UserMacros" /> <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.11|x64'" Label="PropertySheets"> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> </ImportGroup> @@ -796,14 +792,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> - <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python27-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -813,7 +810,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python2x86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python2x86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python2x86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.5|Win32'"> @@ -822,13 +833,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python35-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -838,7 +851,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.6|Win32'"> @@ -847,13 +874,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python36-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -863,7 +892,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|Win32'"> @@ -872,13 +915,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python37-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -888,7 +933,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|Win32'"> @@ -897,13 +956,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python38-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -913,7 +974,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|Win32'"> @@ -922,13 +997,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python39-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -938,7 +1015,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|Win32'"> @@ -947,13 +1038,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python310-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -963,7 +1056,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.11|Win32'"> @@ -972,13 +1079,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python311-vc$(PlatformToolsetVersion)-mt-sgd-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -988,7 +1097,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_2.7|x64'"> @@ -997,13 +1120,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python2.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python2.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python27-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1013,7 +1138,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python2 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python2 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python2.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.5|x64'"> @@ -1022,13 +1161,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python35-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1038,7 +1179,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.6|x64'"> @@ -1047,13 +1202,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python36-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1063,7 +1220,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.7|x64'"> @@ -1072,13 +1243,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python37-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1088,7 +1261,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.8|x64'"> @@ -1097,13 +1284,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python38-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1113,7 +1302,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.9|x64'"> @@ -1122,13 +1325,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python39-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1138,7 +1343,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.10|x64'"> @@ -1147,13 +1366,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python310-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1163,7 +1384,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_3.11|x64'"> @@ -1172,13 +1407,15 @@ <WarningLevel>Level3</WarningLevel> <Optimization>Disabled</Optimization> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;_DEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> </ClCompile> <Link> <SubSystem>Windows</SubSystem> <GenerateDebugInformation>DebugFull</GenerateDebugInformation> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python311-vc$(PlatformToolsetVersion)-mt-sgd-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Debug\targetapp.exe $(OutDir)</Command> @@ -1188,7 +1425,21 @@ </Command> </CustomBuildStep> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=on variant=debug +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|Win32'"> @@ -1199,7 +1450,7 @@ <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1208,14 +1459,29 @@ <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python2x86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python27-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python2x86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python2x86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python2x86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|Win32'"> @@ -1226,7 +1492,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1235,14 +1501,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python35-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|Win32'"> @@ -1253,7 +1534,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1262,14 +1543,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python36-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|Win32'"> @@ -1280,7 +1576,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1289,14 +1585,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python37-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|Win32'"> @@ -1307,7 +1618,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1316,14 +1627,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python38-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|Win32'"> @@ -1334,7 +1660,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1343,14 +1669,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python39-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|Win32'"> @@ -1361,7 +1702,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1370,14 +1711,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python310-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.11|Win32'"> @@ -1388,7 +1744,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1397,14 +1753,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python311-vc$(PlatformToolsetVersion)-mt-s-x32-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install pythonx86 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\pythonx86.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=32 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_2.7|x64'"> @@ -1415,7 +1786,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python2.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1424,14 +1795,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python2.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python2.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python27-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python2 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python2 -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python2.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.5|x64'"> @@ -1442,7 +1828,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);BOOST_PYTHON_NUMPY_INTERNAL</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1451,14 +1837,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python35-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.6|x64'"> @@ -1469,7 +1870,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1478,14 +1879,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python36-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.7|x64'"> @@ -1496,7 +1912,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1505,14 +1921,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python37-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.8|x64'"> @@ -1523,7 +1954,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1532,14 +1963,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python38-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.9|x64'"> @@ -1550,7 +1996,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1559,14 +2005,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python39-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.10|x64'"> @@ -1577,7 +2038,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1586,14 +2047,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python310-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_3.11|x64'"> @@ -1604,7 +2080,7 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <FunctionLevelLinking>true</FunctionLevelLinking> <IntrinsicFunctions>true</IntrinsicFunctions> <PreprocessorDefinitions>WIN32;BOOST_PYTHON_STATIC_LIB;BOOST_PYTHON_NO_LIB;NDEBUG;_WINDOWS;_USRDLL;PYKD_EXPORTS;%(PreprocessorDefinitions);</PreprocessorDefinitions> - <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(SolutionDir)\kdlibcpp\kdlib\include;$(SolutionDir)\numpy\include;$(SolutionDir)packages\python.$(PythonVersion)\tools\include;$(SolutionDir)\kdlibcpp\boost</AdditionalIncludeDirectories> <RuntimeLibrary>MultiThreaded</RuntimeLibrary> </ClCompile> <Link> @@ -1613,14 +2089,29 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <EnableCOMDATFolding>true</EnableCOMDATFolding> <OptimizeReferences>true</OptimizeReferences> <ModuleDefinitionFile>pykd.def</ModuleDefinitionFile> - <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs</AdditionalLibraryDirectories> + <AdditionalLibraryDirectories>$(SolutionDir)packages\python.$(PythonVersion)\tools\libs;$(SolutionDir)\kdlibcpp\boost\stage\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>libboost_python311-vc$(PlatformToolsetVersion)-mt-s-x64-1_87.lib;%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDir)..\Release\targetapp.exe $(OutDir) $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_wheel --plat-name=$(Platform) --build-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools --dist-dir=$(SolutionDir)Out\$(Platform)\$(Configuration) --egg-base=$(SolutionDir)Obj\Wheel\$(Platform)\$(Configuration)\setuptools bdist_zip</Command> </PostBuildEvent> <PreBuildEvent> - <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion)</Command> + <Command>$(SolutionDir).nuget\nuget.exe install python -OutputDirectory $(SolutionDir)packages -Version $(PythonVersion) +echo.> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo import python ; >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +setlocal ENABLEDELAYEDEXPANSION +set str=using python : $(PythonVersionLight) : "$(SolutionDir)packages\python.$(PythonVersion)\tools" ; +set str=%str:\=\\% +echo %str% >> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +set str= +setlocal DISABLEDELAYEDEXPANSION +echo.>> $(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam +pushd $(SolutionDir)\kdlibcpp\boost\ +call $(SolutionDir)\kdlibcpp\boost\bootstrap.bat +$(SolutionDir)\kdlibcpp\boost\b2.exe --user-config="$(IntDir)\boost-user-config-$(Platform)-$(Configuration).jam" --with-python python=$(PythonVersionLight) link=static runtime-link=static,shared address-model=64 runtime-debugging=off variant=release +popd</Command> </PreBuildEvent> </ItemDefinitionGroup> <ItemGroup> @@ -1649,87 +2140,6 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <ClInclude Include="windbgext.h" /> </ItemGroup> <ItemGroup> - <ClCompile Include="boost.python\boost_python-src.dict.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.errors.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.exec.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.import.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.list.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.long.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.module.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.object_operators.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.object_protocol.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.slice.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.str.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.tuple.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.wrapper.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.arg_to_python_base.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.builtin_converters.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.from_python.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.registry.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.type_id.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.class.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.enum.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.function.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.function_doc_signature.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.inheritance.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.iterator.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.life_support.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.pickle_support.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.stl_iterator.cpp"> - <PrecompiledHeader>NotUsing</PrecompiledHeader> - </ClCompile> <ClCompile Include="dbgexcept.cpp" /> <ClCompile Include="dllmain.cpp" /> <ClCompile Include="pycpucontext.cpp" /> @@ -1765,13 +2175,6 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w <ImportGroup Label="ExtensionTargets"> <Import Project="$(SolutionDir)\packages\llvm-cmake.6.0.0.1\build\native\llvm-cmake.targets" Condition="Exists('$(SolutionDir)\packages\llvm-cmake.6.0.0.1\build\native\llvm-cmake.targets')" /> <Import Project="$(SolutionDir)\packages\clang-cmake.6.0.0.1\build\native\clang-cmake.targets" Condition="Exists('$(SolutionDir)\packages\clang-cmake.6.0.0.1\build\native\clang-cmake.targets')" /> - <Import Project="$(SolutionDir)\packages\boost.1.67.0.0\build\boost.targets" Condition="Exists('$(SolutionDir)\packages\boost.1.67.0.0\build\boost.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_atomic-src.1.67.0.0\build\boost_atomic-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_atomic-src.1.67.0.0\build\boost_atomic-src.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_chrono-src.1.67.0.0\build\boost_chrono-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_chrono-src.1.67.0.0\build\boost_chrono-src.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_date_time-src.1.67.0.0\build\boost_date_time-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_date_time-src.1.67.0.0\build\boost_date_time-src.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_regex-src.1.67.0.0\build\boost_regex-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_regex-src.1.67.0.0\build\boost_regex-src.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_system-src.1.67.0.0\build\boost_system-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_system-src.1.67.0.0\build\boost_system-src.targets')" /> - <Import Project="$(SolutionDir)\packages\boost_thread-src.1.67.0.0\build\boost_thread-src.targets" Condition="Exists('$(SolutionDir)\packages\boost_thread-src.1.67.0.0\build\boost_thread-src.targets')" /> </ImportGroup> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> @@ -1779,12 +2182,5 @@ $(SystemRoot)\py.exe -$(PythonVersionLight) $(SolutionDir)setup\setup.py bdist_w </PropertyGroup> <Error Condition="!Exists('$(SolutionDir)\packages\llvm-cmake.6.0.0.1\build\native\llvm-cmake.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\llvm-cmake.6.0.0.1\build\native\llvm-cmake.targets'))" /> <Error Condition="!Exists('$(SolutionDir)\packages\clang-cmake.6.0.0.1\build\native\clang-cmake.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\clang-cmake.6.0.0.1\build\native\clang-cmake.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost.1.67.0.0\build\boost.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost.1.67.0.0\build\boost.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_atomic-src.1.67.0.0\build\boost_atomic-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_atomic-src.1.67.0.0\build\boost_atomic-src.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_chrono-src.1.67.0.0\build\boost_chrono-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_chrono-src.1.67.0.0\build\boost_chrono-src.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_date_time-src.1.67.0.0\build\boost_date_time-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_date_time-src.1.67.0.0\build\boost_date_time-src.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_regex-src.1.67.0.0\build\boost_regex-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_regex-src.1.67.0.0\build\boost_regex-src.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_system-src.1.67.0.0\build\boost_system-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_system-src.1.67.0.0\build\boost_system-src.targets'))" /> - <Error Condition="!Exists('$(SolutionDir)\packages\boost_thread-src.1.67.0.0\build\boost_thread-src.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\boost_thread-src.1.67.0.0\build\boost_thread-src.targets'))" /> </Target> </Project> \ No newline at end of file diff --git a/pykd/pykd.vcxproj.filters b/pykd/pykd.vcxproj.filters index 80f1916..f190662 100644 --- a/pykd/pykd.vcxproj.filters +++ b/pykd/pykd.vcxproj.filters @@ -131,186 +131,6 @@ <ClCompile Include="pytagged.cpp"> <Filter>Source Files</Filter> </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_atomic-src.lockpool.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_chrono-src.chrono.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_chrono-src.process_cpu_clocks.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_chrono-src.thread_clock.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\gregorian\boost_date_time-src.gregorian.date_generators.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\gregorian\boost_date_time-src.gregorian.gregorian_types.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\gregorian\boost_date_time-src.gregorian.greg_month.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\gregorian\boost_date_time-src.gregorian.greg_weekday.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\posix_time\boost_date_time-src.posix_time.posix_time_types.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.cpp_regex_traits.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.cregex.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.c_regex_traits.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.fileiter.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.icu.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.instances.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.posix_api.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.regex.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.regex_debug.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.regex_raw_buffer.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.regex_traits_defaults.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.static_mutex.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.w32_regex_traits.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.wc_regex_traits.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.wide_posix_api.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.winstances.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_system-src.error_code.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\win32\boost_thread-src.win32.thread.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\win32\boost_thread-src.win32.thread_primitives.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\win32\boost_thread-src.win32.tss_dll.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\win32\boost_thread-src.win32.tss_pe.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_thread-src.future.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_thread-src.tss_null.cpp"> - <Filter>Source Files</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.dict.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.errors.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.exec.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.import.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.list.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.long.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.module.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.object_operators.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.object_protocol.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.slice.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.str.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.tuple.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\boost_python-src.wrapper.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.arg_to_python_base.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.builtin_converters.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.from_python.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.registry.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\converter\boost_python-src.converter.type_id.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.class.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.enum.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.function.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.function_doc_signature.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.inheritance.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.iterator.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.life_support.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.pickle_support.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="boost.python\object\boost_python-src.object.stl_iterator.cpp"> - <Filter>boost.python</Filter> - </ClCompile> - <ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.usinstances.cpp"> - <Filter>Source Files</Filter> - </ClCompile> </ItemGroup> <ItemGroup> <None Include="pykd.def">