2008-07-23 07:56:08 +00:00
# include "BPy_Interface1D.h"
2008-07-12 04:02:08 +00:00
2008-07-23 07:56:08 +00:00
# include "BPy_Convert.h"
2008-08-01 02:15:25 +00:00
# include "Interface1D/BPy_FrsCurve.h"
2008-07-26 02:33:21 +00:00
# include "Interface1D/Curve/BPy_Chain.h"
2008-07-23 07:56:08 +00:00
# include "Interface1D/BPy_FEdge.h"
2008-07-26 02:33:21 +00:00
# include "Interface1D/FEdge/BPy_FEdgeSharp.h"
# include "Interface1D/FEdge/BPy_FEdgeSmooth.h"
2008-07-23 07:56:08 +00:00
# include "Interface1D/BPy_Stroke.h"
2008-07-24 08:29:48 +00:00
# include "Interface1D/BPy_ViewEdge.h"
2008-07-26 02:33:21 +00:00
2008-07-23 07:56:08 +00:00
# include "BPy_MediumType.h"
2008-07-12 04:02:08 +00:00
# ifdef __cplusplus
extern " C " {
# endif
///////////////////////////////////////////////////////////////////////////////////////////
2008-07-15 01:07:19 +00:00
/*--------------- Python API function prototypes for Interface1D instance -----------*/
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
static int Interface1D___init__ ( BPy_Interface1D * self , PyObject * args , PyObject * kwds ) ;
2008-07-15 01:07:19 +00:00
static void Interface1D___dealloc__ ( BPy_Interface1D * self ) ;
static PyObject * Interface1D___repr__ ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getExactTypeName ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getVertices ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getPoints ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getLength2D ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getId ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getNature ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_getTimeStamp ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_setTimeStamp ( BPy_Interface1D * self , PyObject * args ) ;
2008-08-01 21:55:58 +00:00
static PyObject * Interface1D_verticesBegin ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_verticesEnd ( BPy_Interface1D * self ) ;
static PyObject * Interface1D_pointsBegin ( BPy_Interface1D * self , PyObject * args ) ;
static PyObject * Interface1D_pointsEnd ( BPy_Interface1D * self , PyObject * args ) ;
2008-07-15 01:07:19 +00:00
/*----------------------Interface1D instance definitions ----------------------------*/
static PyMethodDef BPy_Interface1D_methods [ ] = {
{ " getExactTypeName " , ( PyCFunction ) Interface1D_getExactTypeName , METH_NOARGS , " ( ) Returns the string of the name of the interface." } ,
{ " getVertices " , ( PyCFunction ) Interface1D_getVertices , METH_NOARGS , " Returns the vertices " } ,
{ " getPoints " , ( PyCFunction ) Interface1D_getPoints , METH_NOARGS , " Returns the points. The difference with getVertices() is that here we can iterate over points of the 1D element at any given sampling. At each call, a virtual point is created. " } ,
{ " getLength2D " , ( PyCFunction ) Interface1D_getLength2D , METH_NOARGS , " Returns the 2D length of the 1D element " } ,
{ " getId " , ( PyCFunction ) Interface1D_getId , METH_NOARGS , " Returns the Id of the 1D element " } ,
{ " getNature " , ( PyCFunction ) Interface1D_getNature , METH_NOARGS , " Returns the nature of the 1D element " } ,
{ " getTimeStamp " , ( PyCFunction ) Interface1D_getTimeStamp , METH_NOARGS , " Returns the time stamp of the 1D element. Mainly used for selection " } ,
{ " setTimeStamp " , ( PyCFunction ) Interface1D_setTimeStamp , METH_VARARGS , " Sets the time stamp for the 1D element " } ,
2008-08-01 21:55:58 +00:00
{ " verticesBegin " , ( PyCFunction ) Interface1D_verticesBegin , METH_NOARGS , " " } ,
{ " verticesEnd " , ( PyCFunction ) Interface1D_verticesEnd , METH_NOARGS , " " } ,
{ " pointsBegin " , ( PyCFunction ) Interface1D_pointsBegin , METH_VARARGS , " " } ,
{ " pointsEnd " , ( PyCFunction ) Interface1D_pointsEnd , METH_VARARGS , " " } ,
2008-07-12 04:02:08 +00:00
{ NULL , NULL , 0 , NULL }
} ;
2008-07-15 01:07:19 +00:00
/*-----------------------BPy_Interface1D type definition ------------------------------*/
2008-07-12 04:02:08 +00:00
PyTypeObject Interface1D_Type = {
PyObject_HEAD_INIT ( NULL )
0 , /* ob_size */
" Interface1D " , /* tp_name */
sizeof ( BPy_Interface1D ) , /* tp_basicsize */
0 , /* tp_itemsize */
/* methods */
2008-07-15 01:07:19 +00:00
( destructor ) Interface1D___dealloc__ , /* tp_dealloc */
NULL , /* printfunc tp_print; */
NULL , /* getattrfunc tp_getattr; */
NULL , /* setattrfunc tp_setattr; */
NULL , /* tp_compare */
( reprfunc ) Interface1D___repr__ , /* tp_repr */
2008-07-12 04:02:08 +00:00
/* Method suites for standard classes */
NULL , /* PyNumberMethods *tp_as_number; */
NULL , /* PySequenceMethods *tp_as_sequence; */
NULL , /* PyMappingMethods *tp_as_mapping; */
/* More standard operations (here for binary compatibility) */
NULL , /* hashfunc tp_hash; */
NULL , /* ternaryfunc tp_call; */
NULL , /* reprfunc tp_str; */
NULL , /* getattrofunc tp_getattro; */
NULL , /* setattrofunc tp_setattro; */
/* Functions to access object as input/output buffer */
NULL , /* PyBufferProcs *tp_as_buffer; */
/*** Flags to define presence of optional/expanded features ***/
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE , /* long tp_flags; */
2008-07-12 04:02:08 +00:00
NULL , /* char *tp_doc; Documentation string */
/*** Assigned meaning in release 2.0 ***/
/* call function for all accessible objects */
NULL , /* traverseproc tp_traverse; */
/* delete references to contained objects */
NULL , /* inquiry tp_clear; */
/*** Assigned meaning in release 2.1 ***/
/*** rich comparisons ***/
NULL , /* richcmpfunc tp_richcompare; */
/*** weak reference enabler ***/
0 , /* long tp_weaklistoffset; */
/*** Added in release 2.2 ***/
/* Iterators */
NULL , /* getiterfunc tp_iter; */
NULL , /* iternextfunc tp_iternext; */
/*** Attribute descriptor and subclassing stuff ***/
2008-07-15 01:07:19 +00:00
BPy_Interface1D_methods , /* struct PyMethodDef *tp_methods; */
NULL , /* struct PyMemberDef *tp_members; */
NULL , /* struct PyGetSetDef *tp_getset; */
NULL , /* struct _typeobject *tp_base; */
NULL , /* PyObject *tp_dict; */
NULL , /* descrgetfunc tp_descr_get; */
NULL , /* descrsetfunc tp_descr_set; */
0 , /* long tp_dictoffset; */
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
( initproc ) Interface1D___init__ , /* initproc tp_init; */
2008-07-15 01:07:19 +00:00
NULL , /* allocfunc tp_alloc; */
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
PyType_GenericNew , /* newfunc tp_new; */
2008-07-12 04:02:08 +00:00
/* Low-level free-memory routine */
NULL , /* freefunc tp_free; */
/* For PyObject_IS_GC */
NULL , /* inquiry tp_is_gc; */
NULL , /* PyObject *tp_bases; */
/* method resolution order */
NULL , /* PyObject *tp_mro; */
NULL , /* PyObject *tp_cache; */
NULL , /* PyObject *tp_subclasses; */
NULL , /* PyObject *tp_weaklist; */
NULL
} ;
//-------------------MODULE INITIALIZATION--------------------------------
2008-07-15 01:07:19 +00:00
PyMODINIT_FUNC Interface1D_Init ( PyObject * module )
2008-07-12 04:02:08 +00:00
{
2008-07-23 05:54:34 +00:00
PyObject * tmp ;
2008-07-15 01:07:19 +00:00
if ( module = = NULL )
return ;
2008-07-12 04:02:08 +00:00
if ( PyType_Ready ( & Interface1D_Type ) < 0 )
2008-07-15 01:07:19 +00:00
return ;
Py_INCREF ( & Interface1D_Type ) ;
PyModule_AddObject ( module , " Interface1D " , ( PyObject * ) & Interface1D_Type ) ;
2008-07-18 02:55:23 +00:00
2008-08-01 02:15:25 +00:00
if ( PyType_Ready ( & FrsCurve_Type ) < 0 )
2008-07-25 02:18:02 +00:00
return ;
2008-08-01 02:15:25 +00:00
Py_INCREF ( & FrsCurve_Type ) ;
PyModule_AddObject ( module , " FrsCurve " , ( PyObject * ) & FrsCurve_Type ) ;
2008-07-26 02:33:21 +00:00
if ( PyType_Ready ( & Chain_Type ) < 0 )
return ;
Py_INCREF ( & Chain_Type ) ;
PyModule_AddObject ( module , " Chain " , ( PyObject * ) & Chain_Type ) ;
2008-07-25 02:18:02 +00:00
2008-07-18 02:55:23 +00:00
if ( PyType_Ready ( & FEdge_Type ) < 0 )
return ;
Py_INCREF ( & FEdge_Type ) ;
PyModule_AddObject ( module , " FEdge " , ( PyObject * ) & FEdge_Type ) ;
2008-07-23 05:54:34 +00:00
2008-07-26 02:33:21 +00:00
if ( PyType_Ready ( & FEdgeSharp_Type ) < 0 )
return ;
Py_INCREF ( & FEdgeSharp_Type ) ;
PyModule_AddObject ( module , " FEdgeSharp " , ( PyObject * ) & FEdgeSharp_Type ) ;
if ( PyType_Ready ( & FEdgeSmooth_Type ) < 0 )
return ;
Py_INCREF ( & FEdgeSmooth_Type ) ;
PyModule_AddObject ( module , " FEdgeSmooth " , ( PyObject * ) & FEdgeSmooth_Type ) ;
2008-07-23 05:54:34 +00:00
if ( PyType_Ready ( & Stroke_Type ) < 0 )
return ;
Py_INCREF ( & Stroke_Type ) ;
PyModule_AddObject ( module , " Stroke " , ( PyObject * ) & Stroke_Type ) ;
tmp = BPy_MediumType_from_MediumType ( Stroke : : DRY_MEDIUM ) ; PyDict_SetItemString ( Stroke_Type . tp_dict , " DRY_MEDIUM " , tmp ) ; Py_DECREF ( tmp ) ;
tmp = BPy_MediumType_from_MediumType ( Stroke : : HUMID_MEDIUM ) ; PyDict_SetItemString ( Stroke_Type . tp_dict , " HUMID_MEDIUM " , tmp ) ; Py_DECREF ( tmp ) ;
tmp = BPy_MediumType_from_MediumType ( Stroke : : OPAQUE_MEDIUM ) ; PyDict_SetItemString ( Stroke_Type . tp_dict , " OPAQUE_MEDIUM " , tmp ) ; Py_DECREF ( tmp ) ;
2008-07-24 08:29:48 +00:00
if ( PyType_Ready ( & ViewEdge_Type ) < 0 )
return ;
Py_INCREF ( & ViewEdge_Type ) ;
PyModule_AddObject ( module , " ViewEdge " , ( PyObject * ) & ViewEdge_Type ) ;
2008-07-18 02:55:23 +00:00
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
//------------------------INSTANCE METHODS ----------------------------------
2008-07-09 08:24:13 +00:00
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
int Interface1D___init__ ( BPy_Interface1D * self , PyObject * args , PyObject * kwds )
2008-07-15 01:07:19 +00:00
{
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
self - > if1D = new Interface1D ( ) ;
2008-08-01 21:55:58 +00:00
self - > if1D - > py_if1D = ( PyObject * ) self ;
soc-2008-mxcurioni: reimplemented the initialization/allocation for base classes. The Python object type tp_new slot is now set to PyType_GenericNew, instead of the former custom functions. As a note, by default, Python does not set this slot: it is therefore mandatory for the base classes. For children classes, only __init__ is needed.
To make our base classes subclasses, the Py_TPFLAGS_BASETYPE flag was added to the object type tp_flags slot.
Finally, I began to implement CurvePoint, descendant of Interface0D. This commit allowed me to verify that my SWIG replacement method works: interfaces are well taken into account by children. For a test, use the following code:
================================
import Blender
from Blender import Freestyle
from Blender.Freestyle import *
print Interface0D()
print CurvePoint()
================================
The __repr__ method is only implemented in Interface0D:
PyObject * Interface0D___repr__(BPy_Interface0D* self)
{
return PyString_FromFormat("type: %s - address: %p", self->if0D->getExactTypeName().c_str(), self->if0D );}
and the result is of the form:
type: Interface0D - address: 0x18e5ccc0
type: CurvePoint - address: 0x18e473f0
As you can see, the correct getExactTypeName of the class is called.
2008-07-15 05:33:12 +00:00
return 0 ;
2008-07-15 01:07:19 +00:00
}
void Interface1D___dealloc__ ( BPy_Interface1D * self )
{
delete self - > if1D ;
self - > ob_type - > tp_free ( ( PyObject * ) self ) ;
}
PyObject * Interface1D___repr__ ( BPy_Interface1D * self )
{
return PyString_FromFormat ( " type: %s - address: %p " , self - > if1D - > getExactTypeName ( ) . c_str ( ) , self - > if1D ) ;
}
2008-07-09 08:24:13 +00:00
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getExactTypeName ( BPy_Interface1D * self ) {
return PyString_FromString ( self - > if1D - > getExactTypeName ( ) . c_str ( ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getVertices ( BPy_Interface1D * self ) {
2008-07-15 01:07:19 +00:00
return PyList_New ( 0 ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getPoints ( BPy_Interface1D * self ) {
2008-07-15 01:07:19 +00:00
return PyList_New ( 0 ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getLength2D ( BPy_Interface1D * self ) {
return PyFloat_FromDouble ( ( double ) self - > if1D - > getLength2D ( ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getId ( BPy_Interface1D * self ) {
2008-07-18 02:55:23 +00:00
Id id ( self - > if1D - > getId ( ) ) ;
return BPy_Id_from_Id ( id ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getNature ( BPy_Interface1D * self ) {
2008-07-20 05:01:29 +00:00
return BPy_Nature_from_Nature ( self - > if1D - > getNature ( ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_getTimeStamp ( BPy_Interface1D * self ) {
return PyInt_FromLong ( self - > if1D - > getTimeStamp ( ) ) ;
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
PyObject * Interface1D_setTimeStamp ( BPy_Interface1D * self , PyObject * args ) {
2008-07-15 01:07:19 +00:00
int timestamp = 0 ;
2008-07-17 06:35:30 +00:00
if ( ! PyArg_ParseTuple ( args , ( char * ) " i " , & timestamp ) ) {
2008-07-12 04:02:08 +00:00
cout < < " ERROR: Interface1D_setTimeStamp " < < endl ;
2008-07-15 01:07:19 +00:00
Py_RETURN_NONE ;
}
2008-07-12 04:02:08 +00:00
self - > if1D - > setTimeStamp ( timestamp ) ;
Py_RETURN_NONE ;
2008-07-09 08:24:13 +00:00
}
2008-08-01 21:55:58 +00:00
PyObject * Interface1D_verticesBegin ( BPy_Interface1D * self ) {
Interface0DIterator if0D_it ( self - > if1D - > verticesBegin ( ) ) ;
return BPy_Interface0DIterator_from_Interface0DIterator ( if0D_it ) ;
}
PyObject * Interface1D_verticesEnd ( BPy_Interface1D * self ) {
Interface0DIterator if0D_it ( self - > if1D - > verticesEnd ( ) ) ;
return BPy_Interface0DIterator_from_Interface0DIterator ( if0D_it ) ;
}
PyObject * Interface1D_pointsBegin ( BPy_Interface1D * self , PyObject * args ) {
float f = 0 ;
if ( ! ( PyArg_ParseTuple ( args , " |f " , & f ) ) ) {
cout < < " ERROR: Interface1D_pointsBegin " < < endl ;
Py_RETURN_NONE ;
}
Interface0DIterator if0D_it ( self - > if1D - > pointsBegin ( f ) ) ;
return BPy_Interface0DIterator_from_Interface0DIterator ( if0D_it ) ;
}
PyObject * Interface1D_pointsEnd ( BPy_Interface1D * self , PyObject * args ) {
float f = 0 ;
if ( ! ( PyArg_ParseTuple ( args , " |f " , & f ) ) ) {
cout < < " ERROR: Interface1D_pointsEnd " < < endl ;
Py_RETURN_NONE ;
}
Interface0DIterator if0D_it ( self - > if1D - > pointsEnd ( f ) ) ;
return BPy_Interface0DIterator_from_Interface0DIterator ( if0D_it ) ;
}
2008-07-12 04:02:08 +00:00
///////////////////////////////////////////////////////////////////////////////////////////
2008-07-09 08:24:13 +00:00
2008-07-12 04:02:08 +00:00
# ifdef __cplusplus
2008-07-09 08:24:13 +00:00
}
2008-07-12 04:02:08 +00:00
# endif
2008-07-09 08:24:13 +00:00