Writing a wrapper - any tips?

T

Temia Eszteri

I'm going to be looking into writing a wrapper for the Allegro 5 game
development libraries, either with ctypes or Cython. They technically
have a basic 1:1 ctypes wrapper currently, but I wanted to make
something more pythonic, because it'd be next to impossible to deal
with the memory management cleanly in the script itself.

Anything I should keep in mind? Any tips to pass on to a first-time
module writer, pitfalls to watch out for, etc.?

~Temia

P.S. I know another game development library, SDL, was wrapped for
Python in the form of Pygame, but I *really* don't like SDL.
 
M

Martin P. Hellwig

I'm going to be looking into writing a wrapper for the Allegro 5 game
development libraries, either with ctypes or Cython. They technically
have a basic 1:1 ctypes wrapper currently, but I wanted to make
something more pythonic, because it'd be next to impossible to deal
with the memory management cleanly in the script itself.

Anything I should keep in mind? Any tips to pass on to a first-time
module writer, pitfalls to watch out for, etc.?
<cut>
I would split the wrapping in layers, the lowest layer is a one on one exposure of the library with your wrapper, I would rather avoid ctypes for performance reasons, however if performance is not a concern ctypes is excellent and broadly available.

The next layer is purely there to make the lower layer pythonic, i.e. apply namespaces, automatic handling of memory, PEP8 naming convetions, etc. etc.
just what you would expect from a modern pure python module

The next layer, if you want to, contains tools that are often used in that concept, think in the line of design patterns.

hth
 
S

Stefan Behnel

Martin P. Hellwig, 13.07.2012 09:39:
<cut>
I would split the wrapping in layers, the lowest layer is a one on one
exposure of the library with your wrapper, I would rather avoid ctypes
for performance reasons, however if performance is not a concern ctypes
is excellent and broadly available.

The next layer is purely there to make the lower layer pythonic, i.e.
apply namespaces, automatic handling of memory, PEP8 naming convetions,
etc. etc. just what you would expect from a modern pure python module

The next layer, if you want to, contains tools that are often used in
that concept, think in the line of design patterns.

And the good thing about Cython in this context is that even if performance
*is* a concern, you can move code around between all three layers freely in
order to adjust it to your performance requirements and even drop the
lowest layer entirely. In fact, my advice is to really skip that lowest
layer in a Cython wrapper, because if it's really just a 1:1 mapping, it's
going to end up with a lot of boring and redundant code and you won't gain
anything from it.

Stefan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,008
Latest member
HaroldDark

Latest Threads

Top