There is just one more class remaining to port (and probably the most important): Operators. After that, I'll be able to test whether Freestyle functions well without SWIG.
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "BPy_ShapeUP1D.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
/*---------------  Python API function prototypes for ShapeUP1D instance  -----------*/
 | 
						|
	static int ShapeUP1D___init__(BPy_ShapeUP1D* self, PyObject *args );
 | 
						|
 | 
						|
/*-----------------------BPy_ShapeUP1D type definition ------------------------------*/
 | 
						|
 | 
						|
PyTypeObject ShapeUP1D_Type = {
 | 
						|
	PyObject_HEAD_INIT( NULL ) 
 | 
						|
	0,							/* ob_size */
 | 
						|
	"ShapeUP1D",				/* tp_name */
 | 
						|
	sizeof( BPy_ShapeUP1D ),	/* tp_basicsize */
 | 
						|
	0,							/* tp_itemsize */
 | 
						|
	
 | 
						|
	/* methods */
 | 
						|
	NULL,	/* tp_dealloc */
 | 
						|
	NULL,                       				/* printfunc tp_print; */
 | 
						|
	NULL,                       				/* getattrfunc tp_getattr; */
 | 
						|
	NULL,                       				/* setattrfunc tp_setattr; */
 | 
						|
	NULL,										/* tp_compare */
 | 
						|
	NULL,										/* tp_repr */
 | 
						|
 | 
						|
	/* 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 ***/
 | 
						|
	Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, 		/* long tp_flags; */
 | 
						|
 | 
						|
	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 ***/
 | 
						|
	NULL,	/* struct PyMethodDef *tp_methods; */
 | 
						|
	NULL,                       	/* struct PyMemberDef *tp_members; */
 | 
						|
	NULL,         					/* struct PyGetSetDef *tp_getset; */
 | 
						|
	&UnaryPredicate1D_Type,							/* struct _typeobject *tp_base; */
 | 
						|
	NULL,							/* PyObject *tp_dict; */
 | 
						|
	NULL,							/* descrgetfunc tp_descr_get; */
 | 
						|
	NULL,							/* descrsetfunc tp_descr_set; */
 | 
						|
	0,                          	/* long tp_dictoffset; */
 | 
						|
	(initproc)ShapeUP1D___init__, /* initproc tp_init; */
 | 
						|
	NULL,							/* allocfunc tp_alloc; */
 | 
						|
	NULL,				/* newfunc tp_new; */
 | 
						|
	
 | 
						|
	/*  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
 | 
						|
};
 | 
						|
 | 
						|
//------------------------INSTANCE METHODS ----------------------------------
 | 
						|
 | 
						|
int ShapeUP1D___init__( BPy_ShapeUP1D* self, PyObject *args )
 | 
						|
{
 | 
						|
	unsigned u1, u2 = 0;
 | 
						|
 | 
						|
	if( !PyArg_ParseTuple(args, "II", &u1, &u2) ) {
 | 
						|
		cout << "ERROR: ShapeUP1D___init__" << endl;		
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	self->py_up1D.up1D = new Predicates1D::ShapeUP1D(u1,u2);
 | 
						|
	return 0;
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 |