2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-23 17:52:17 +00:00

Modified Files:

boost/python/detail:
    base_object.hpp - Changed template parameter to MixedCase
    cast.hpp -        Killed off unused downcast_traits<>
    functions.hpp -   Added commentary

  libs/python/src
    functions.cpp, types.cpp -   Added comments

  tools/build
    TODO.txt - updated
    allyourbase.jam -           fixed a nasty typo which caused all kinds of bugs
    boost-base.jam -            changes to support the use of command files
    intel-win32-tools.jam -
         A feeble attempt at allowing intel to work without prior tool setup. More work needed
    msvc-tools.jam -            A first cut at command file support

  tools/build/jam_src
    jam.h -                     Fixed MAXLINE for NT


[SVN r11489]
This commit is contained in:
Dave Abrahams
2001-10-31 19:14:07 +00:00
parent e63451a9e7
commit a245bdbc2a
5 changed files with 34 additions and 21 deletions

View File

@@ -21,10 +21,10 @@ namespace boost { namespace python { namespace detail {
// base_object - adds a constructor and non-virtual destructor to a
// base Python type (e.g. PyObject, PyTypeObject).
template <class python_type>
struct base_object : python_type
template <class PythonType>
struct base_object : PythonType
{
typedef python_type base_python_type;
typedef PythonType base_python_type;
// Initializes type and reference count. All other fields of base_python_type are 0
base_object(PyTypeObject* type_obj);
@@ -41,8 +41,8 @@ typedef base_object<PyTypeObject> python_type;
//
// base_object member function implementations
//
template <class python_type>
base_object<python_type>::base_object(PyTypeObject* type_obj)
template <class PythonType>
base_object<PythonType>::base_object(PyTypeObject* type_obj)
{
base_python_type* bp = this;
#if !defined(_MSC_VER) || defined(__STLPORT)
@@ -53,8 +53,8 @@ base_object<python_type>::base_object(PyTypeObject* type_obj)
PyObject_INIT(bp, type_obj);
}
template <class python_type>
inline base_object<python_type>::~base_object()
template <class PythonType>
inline base_object<PythonType>::~base_object()
{
Py_DECREF(ob_type);
}

View File

@@ -15,14 +15,6 @@
namespace boost { namespace python {
namespace detail {
// The default way of converting a PyObject* or PyTypeObject* to a T*
template <class T>
struct downcast_traits
{
template <class U>
static T* cast(U* p) { return static_cast<T*>(p); }
};
inline PyTypeObject* as_base_object(const PyTypeObject*, PyObject* p)
{
return reinterpret_cast<PyTypeObject*>(p);
@@ -54,19 +46,19 @@ template <class T>
struct downcast
{
downcast(PyObject* p)
: m_p(detail::downcast_traits<T>::cast(detail::as_base_object((T*)0, p)))
: m_p(static_cast<T*>(detail::as_base_object((T*)0, p)))
{}
downcast(const PyObject* p)
: m_p(detail::downcast_traits<T>::cast(detail::as_base_object((const T*)0, p)))
: m_p(static_cast<T*>(detail::as_base_object((const T*)0, p)))
{}
downcast(PyTypeObject* p)
: m_p(detail::downcast_traits<T>::cast(p))
: m_p(static_cast<T*>(p))
{}
downcast(const PyTypeObject* p)
: m_p(detail::downcast_traits<T>::cast(p))
: m_p(static_cast<T*>(p))
{}
operator T*() const { return m_p; }

View File

@@ -46,7 +46,7 @@ class function : public python_object
private:
struct type_object;
private:
reference<function> m_overloads;
reference<function> m_overloads; // A linked list of the function overloads
};
// wrapped_function_pointer<> --
@@ -66,7 +66,12 @@ struct wrapped_function_pointer : function
private:
PyObject* do_call(PyObject* args, PyObject* keywords) const
{ return caller<R>::call(m_pf, args, keywords); }
{
// This is where the boundary between the uniform Python function
// interface and the statically-checked C++ function interface is
// crossed.
return caller<R>::call(m_pf, args, keywords);
}
const char* description() const
{ return typeid(F).name(); }