Argh! Name collision!
Alf P. Steinbach /Usenet
alf.p.steinbach+usenet at gmail.com
Wed Jul 7 19:47:01 EDT 2010
* rantingrick, on 07.07.2010 07:42:
> On Jul 6, 9:11 pm, "Alf P. Steinbach /Usenet"<alf.p.steinbach
> +use... at 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>
More information about the Python-list
mailing list