Writing a wrapper - any tips?

Discussion in 'Python' started by Temia Eszteri, Jul 13, 2012.

  1. 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.
    --
    The amazing programming device: fuelled entirely by coffee, it codes while
    awake and tests while asleep!
    Temia Eszteri, Jul 13, 2012
    #1
    1. Advertising

  2. On Friday, 13 July 2012 05:03:23 UTC+1, Temia Eszteri wrote:
    > 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
    --
    mph
    Martin P. Hellwig, Jul 13, 2012
    #2
    1. Advertising

  3. Martin P. Hellwig, 13.07.2012 09:39:
    > On Friday, 13 July 2012 05:03:23 UTC+1, Temia Eszteri wrote:
    >> 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.


    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
    Stefan Behnel, Jul 13, 2012
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. HNguyen
    Replies:
    4
    Views:
    2,384
    HNguyen
    Dec 21, 2004
  2. Replies:
    0
    Views:
    301
  3. Eric Lilja
    Replies:
    3
    Views:
    622
    kwikius
    Jul 1, 2006
  4. Nit Khair

    Writing an OO wrapper (UI)

    Nit Khair, Oct 10, 2008, in forum: Ruby
    Replies:
    9
    Views:
    126
    Nit Khair
    Oct 12, 2008
  5. Replies:
    1
    Views:
    3,061
    Arne Vajhøj
    Jul 31, 2012
Loading...

Share This Page