/trunk/Lib/python/carrays.i
Swig | 53 lines | 38 code | 15 blank | 0 comment | 0 complexity | fb907954506446a48a82754d3e58be9f MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- %define %array_class(TYPE,NAME)
- #if defined(SWIGPYTHON_BUILTIN)
- %feature("python:slot", "sq_item", functype="ssizeargfunc") NAME::__getitem__;
- %feature("python:slot", "sq_ass_item", functype="ssizeobjargproc") NAME::__setitem__;
- %inline %{
- typedef struct {
- TYPE *el;
- } NAME;
- %}
- %extend NAME {
- NAME(size_t nelements) {
- NAME *arr = %new_instance(NAME);
- arr->el = %new_array(nelements, TYPE);
- return arr;
- }
- ~NAME() {
- %delete_array(self->el);
- %delete(self);
- }
-
- TYPE __getitem__(size_t index) {
- return self->el[index];
- }
- void __setitem__(size_t index, TYPE value) {
- self->el[index] = value;
- }
- TYPE * cast() {
- return self->el;
- }
- static NAME *frompointer(TYPE *t) {
- return %reinterpret_cast(t, NAME *);
- }
- };
- %types(NAME = TYPE);
- #else
- %array_class_wrap(TYPE,NAME,__getitem__,__setitem__)
- #endif
- %enddef
- %include <typemaps/carrays.swg>