* rantingrick, on 07.07.2010 07:42:
On Jul 6, 9:11 pm, "Alf P. Steinbach /Usenet"<alf.p.steinbach
+use...@gmail.com>  wrote:

"pyni"! Pronounced like "tiny"! Yay!

hmm, how's about an alternate spelling... "pyknee", or "pynee", or
"pynie" ... considering those are not taken either?

Hm, for pure shock value I think I'll use the acronym PYthon Native Interface Support.

pynis! :-)

A set of C++ classes to ease the writing of extensions.

Like,


<code file="Ptr.h">
// progrock.pynis  --  "Python Native Interface Support"
// A simple C++ framework for writing Python 3.x extensions.
//
// Copyright (C) Alf P. Steinbach, 2010.

#ifndef PYNIS_PTR_H
#define PYNIS_PTR_H
#include <progrock/cppx/devsupport/better_experience.h>


//----------------------------------------- Dependencies:

#include <Python.h>
#include <assert.h>
#include <algorithm>



//----------------------------------------- Interface:

namespace progrock{ namespace pynis {

    enum DoAddRef { doAddRef };

    class Ptr
    {
    private:
        PyObject*   p_;

    public:
        Ptr( PyObject* p = 0 ): p_( p )
        {}

        Ptr( PyObject* p, DoAddRef ): p_( p )
        {
            assert( p != 0 );
            Py_INCREF( p_ );
        }

        Ptr( Ptr const& other ): p_( other.p_ )
        {
            Py_XINCREF( p_ );
        }

        ~Ptr()
        {
            Py_XDECREF( p_ );
        }

        void swapWith( Ptr& other ) { std::swap( p_, other.p_ ); }
        Ptr& operator=( Ptr other ) { swapWith( other ); return *this; }

        PyObject* get() const       { return p_; }

        PyObject* release()
        {
            PyObject* const result  = p_;
            Py_XDECREF( p_ );
            p_ = 0;
            return result;
        }
    };

} }  // namespace progrock::pynis


#endif
</code>


Cheers,

- Alf (shocked)

PS: Darn, forgot to google it. But I think it's unlikely the name's already in 
use!

--
blog at <url: http://alfps.wordpress.com>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to