1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: pyListHelper.h,v 1.1.2.2 2007/03/28 15:43:38 amoll Exp $
//
//
#ifndef BALL_PYTHON_PYLIST_HELPER
#define BALL_PYTHON_PYLIST_HELPER
#include <BALL/DATATYPE/regularData3D.h>
namespace BALL
{
typedef std::list<RegularData3D*> RegularData3DList;
// Convert the list.
#define BALL_CONVERT_LIST_FROM(TYPE)\
PyObject *pl;\
\
if ((pl = PyList_New(0)) == NULL) return NULL;\
\
for (TYPE##List::const_iterator it = sipCpp->begin(); it != sipCpp->end(); ++it)\
{\
PyObject *inst = BALL_CONVERT_FROM_INSTANCE(*it, TYPE, 0);\
\
if (inst == NULL || PyList_Append(pl,inst) < 0)\
{\
Py_DECREF(pl);\
return NULL;\
}\
}\
\
return pl;
// Convert a Python list of TYPE instances to a TYPEList object on the heap.
#define BALL_CONVERT_LIST_TO(TYPE)\
if (sipIsErr == NULL) return PyList_Check(sipPy);\
\
TYPE##List* alist = new TYPE##List;\
\
for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)\
{\
TYPE* a = reinterpret_cast<TYPE*>(BALL_FORCE_CONVERT_TO_TYPE(PyList_GET_ITEM(sipPy,i), TYPE));\
\
if (*sipIsErr)\
{\
delete alist;\
return 0;\
}\
\
alist->push_back(a);\
}\
\
*sipCppPtr = alist;\
\
return 1;
}
#endif
|