Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-08-02 20:23:18 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-08-02 20:23:18 +0400
commitacf97994bc9b5a9be1fc6cdd3907eaa198719b11 (patch)
treefeda501e6f4429e7eb2515bfeafdc4475e66b2b6 /source/blender/freestyle/intern/view_map/Interface0D.h
parent6d1ad351f3d619eb8c6b509292c3517c93afd51b (diff)
SWIG/directors dependency removal (cont'd)
* Added to python/BPy_Convert.{cpp,h} 4 utility converters below for better introspection-based automatic type conversion. PyObject * Any_BPy_Interface0D_from_Interface0D( Interface0D& if0D ); PyObject * Any_BPy_Interface1D_from_Interface1D( Interface1D& if1D ); PyObject * Any_BPy_FEdge_from_FEdge( FEdge& fe ); PyObject * Any_BPy_ViewVertex_from_ViewVertex( ViewVertex& vv ); There are 4 corresponding converters without the "Any_" prefix. All calls of them in the code base were replaced with these new converters so that the introspection-based automatic conversion would take place universally. * python/BPy_Convert.{cpp,h}: Those C++ to Python converters having had a "_ptr" suffix were renamed to a name without the suffix, and their arguments were changed so as to take a reference (e.g., ViewVertex&) instead of a pointer (e.g., ViewVertex *). The changed converters and their new function prototypes are listed below. These converters now return a Python wrapper object that retains the passed reference, instead of retaining a newly created C++ object by the converters. // Interface0D converters PyObject * BPy_Interface0D_from_Interface0D( Interface0D& if0D ); PyObject * BPy_CurvePoint_from_CurvePoint( CurvePoint& cp ); PyObject * BPy_StrokeVertex_from_StrokeVertex( StrokeVertex& sv ); PyObject * BPy_SVertex_from_SVertex( SVertex& sv ); PyObject * BPy_ViewVertex_from_ViewVertex( ViewVertex& vv ); PyObject * BPy_TVertex_from_TVertex( TVertex& tv ); PyObject * BPy_NonTVertex_from_NonTVertex( NonTVertex& ntv ); // Interface1D converters PyObject * BPy_Interface1D_from_Interface1D( Interface1D& if1D ); PyObject * BPy_Chain_from_Chain( Chain& c ); PyObject * BPy_FEdge_from_FEdge( FEdge& fe ); PyObject * BPy_FEdgeSharp_from_FEdgeSharp( FEdgeSharp& fes ); PyObject * BPy_FEdgeSmooth_from_FEdgeSmooth( FEdgeSmooth& fes ); PyObject * BPy_Stroke_from_Stroke( Stroke& s ); PyObject * BPy_ViewEdge_from_ViewEdge( ViewEdge& ve ); PyObject * BPy_directedViewEdge_from_directedViewEdge( ViewVertex::directedViewEdge& dve ); // some other converters PyObject * BPy_ViewShape_from_ViewShape( ViewShape& vs ); PyObject * BPy_SShape_from_SShape( SShape& ss ); PyObject * BPy_FrsMaterial_from_FrsMaterial( FrsMaterial& m ); PyObject * BPy_StrokeAttribute_from_StrokeAttribute( StrokeAttribute& sa ); * Added a "borrowed" flag to the definitions of Python types being used to wrap C++ components of Freestyle's internal data structures. The flag indicates whether or not a Python wrapper object has a reference to a C++ object that comprises the internal data structures. The deallocation routines of the Python types check this flag and release a wrapped C++ object only when it is not part of the internal data structures. The following files were modified: python/BPy_FrsMaterial.{cpp,h} python/BPy_Interface0D.{cpp,h} python/BPy_Interface1D.{cpp,h} python/BPy_SShape.{cpp,h} python/BPy_StrokeAttribute.{cpp,h} python/BPy_ViewShape.{cpp,h} python/Interface0D/BPy_CurvePoint.cpp python/Interface0D/BPy_SVertex.cpp python/Interface0D/BPy_ViewVertex.cpp python/Interface0D/CurvePoint/BPy_StrokeVertex.cpp python/Interface0D/ViewVertex/BPy_NonTVertex.cpp python/Interface0D/ViewVertex/BPy_TVertex.cpp python/Interface1D/BPy_FEdge.cpp python/Interface1D/BPy_FrsCurve.cpp python/Interface1D/BPy_Stroke.cpp python/Interface1D/BPy_ViewEdge.cpp python/Interface1D/Curve/BPy_Chain.cpp python/Interface1D/FEdge/BPy_FEdgeSharp.cpp python/Interface1D/FEdge/BPy_FEdgeSmooth.cpp * view_map/Interface[01]D.h, python/BPy_Interface[01]D.cpp: Removed from the Interface0D and Interface1D C++ classes a back pointer to a Python wrapper object and all "director" calls. These classes (and their subclasses) are used to build Freestyle's main data structures (such as a view map and strokes) and their class hierarchy is static. Python wrappers of these C++ classes are only used to access the data structures from the Python layer, and not intended to extend the data structures by subclassing the Python wrappers. Without the necessity of subclassing in the Python layer, the back pointer to a wrapping Python object and "director" calls would be useless (actually they were not used at all), so they were all removed. * python/Director.{cpp,h}: Removed the definitions of directors that were no longer used. * stroke/Stroke.{cpp,h}: Removed an (unused) back pointer to a Python wrapper object. * python/BPy_ViewMap.cpp: Fixed a possible null pointer reference. * python/Interface1D/BPy_FEdge.cpp: Fixed parameter checking in FEdge___init__().
Diffstat (limited to 'source/blender/freestyle/intern/view_map/Interface0D.h')
-rwxr-xr-xsource/blender/freestyle/intern/view_map/Interface0D.h171
1 files changed, 43 insertions, 128 deletions
diff --git a/source/blender/freestyle/intern/view_map/Interface0D.h b/source/blender/freestyle/intern/view_map/Interface0D.h
index c24fbaf9063..5108524cdd3 100755
--- a/source/blender/freestyle/intern/view_map/Interface0D.h
+++ b/source/blender/freestyle/intern/view_map/Interface0D.h
@@ -40,7 +40,15 @@ using namespace std;
#include "../system/Iterator.h" //soc
-#include "../python/Director.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <Python.h>
+
+#ifdef __cplusplus
+}
+#endif
//
// Interface0D
@@ -56,13 +64,11 @@ class TVertex;
class Interface0D
{
public:
-
- PyObject *py_if0D;
-
- /*! Default constructor */
- Interface0D() { py_if0D = 0; }
- virtual ~Interface0D() {}; //soc
+ /*! Default constructor */
+ Interface0D() {}
+ virtual ~Interface0D() {}; //soc
+
/*! Returns the string "Interface0D".*/
virtual string getExactTypeName() const {
return "Interface0D";
@@ -72,185 +78,94 @@ public:
/*! Returns the 3D x coordinate of the point. */
virtual real getX() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getX") ) {
- return Director_BPy_Interface0D_getX(py_if0D);
- } else {
- cerr << "Warning: " << name << " getX() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getX() not properly overridden");
+ return 0;
}
-
/*! Returns the 3D y coordinate of the point. */
virtual real getY() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getY") ) {
- return Director_BPy_Interface0D_getY(py_if0D);
- } else {
- cerr << "Warning: " << name << " getY() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getY() not properly overridden");
+ return 0;
}
/*! Returns the 3D z coordinate of the point. */
virtual real getZ() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getZ") ) {
- return Director_BPy_Interface0D_getZ(py_if0D);
- } else {
- cerr << "Warning: " << name << " getZ() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getZ() not properly overridden");
+ return 0;
}
/*! Returns the 3D point. */
virtual Geometry::Vec3f getPoint3D() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getPoint3D") ) {
- return Director_BPy_Interface0D_getPoint3D(py_if0D);
- } else {
- cerr << "Warning: " << name << " getPoint3D() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getPoint3D() not properly overridden");
+ return 0;
}
/*! Returns the 2D x coordinate of the point. */
virtual real getProjectedX() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getProjectedX") ) {
- return Director_BPy_Interface0D_getProjectedX(py_if0D);
- } else {
- cerr << "Warning: " << name << " getProjectedX() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getProjectedX() not properly overridden");
+ return 0;
}
/*! Returns the 2D y coordinate of the point. */
virtual real getProjectedY() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getProjectedY") ) {
- return Director_BPy_Interface0D_getProjectedY(py_if0D);
- } else {
- cerr << "Warning: " << name << " getProjectedY() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getProjectedY() not properly overridden");
+ return 0;
}
/*! Returns the 2D z coordinate of the point. */
virtual real getProjectedZ() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getProjectedZ") ) {
- return Director_BPy_Interface0D_getProjectedZ(py_if0D);
- } else {
- cerr << "Warning: " << name << " getProjectedZ() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getProjectedZ() not properly overridden");
+ return 0;
}
/*! Returns the 2D point. */
virtual Geometry::Vec2f getPoint2D() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getPoint2D") ) {
- return Director_BPy_Interface0D_getPoint2D(py_if0D);
- } else {
- cerr << "Warning: " << name << " getPoint2D() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getPoint2D() not properly overridden");
+ return 0;
}
/*! Returns the FEdge that lies between this Interface0D and the
* Interface0D given as argument. */
virtual FEdge* getFEdge(Interface0D&) {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getFEdge") ) {
- return Director_BPy_Interface0D_getFEdge(py_if0D);
- } else {
- cerr << "Warning: " << name << " getFEdge() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getFEdge() not properly overridden");
+ return 0;
}
/*! Returns the Id of the point. */
virtual Id getId() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getId") ) {
- return Director_BPy_Interface0D_getId(py_if0D);
- } else {
- cerr << "Warning: " << name << " getId() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method getId() not properly overridden");
+ return 0;
}
/*! Returns the nature of the point. */
virtual Nature::VertexNature getNature() const {
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "getNature") ) {
- return Director_BPy_Interface0D_getNature(py_if0D);
- } else {
- cerr << "Warning: " << name << " getNature() not implemented" << endl;
- return Nature::POINT;
- }
+ PyErr_SetString(PyExc_TypeError, "method getNature() not properly overridden");
+ return Nature::POINT;
}
/*! Cast the Interface0D in SVertex if it can be. */
virtual SVertex * castToSVertex(){
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "castToSVertex") ) {
- return Director_BPy_Interface0D_castToSVertex(py_if0D);
- } else {
- cerr << "Warning: " << name << " castToSVertex() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method castToSVertex() not properly overridden");
+ return 0;
}
/*! Cast the Interface0D in ViewVertex if it can be. */
virtual ViewVertex * castToViewVertex(){
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "castToViewVertex") ) {
- return Director_BPy_Interface0D_castToViewVertex(py_if0D);
- } else {
- cerr << "Warning: " << name << " castToViewVertex() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method castToViewVertex() not properly overridden");
+ return 0;
}
/*! Cast the Interface0D in NonTVertex if it can be. */
virtual NonTVertex * castToNonTVertex(){
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "castToNonTVertex") ) {
- return Director_BPy_Interface0D_castToNonTVertex(py_if0D);
- } else {
- cerr << "Warning: " << name << " castToNonTVertex() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method castToNonTVertex() not properly overridden");
+ return 0;
}
/*! Cast the Interface0D in TVertex if it can be. */
virtual TVertex * castToTVertex(){
- string name( py_if0D ? PyString_AsString(PyObject_CallMethod(py_if0D, "getExactTypeName", "")) : getExactTypeName() );
-
- if( py_if0D && PyObject_HasAttrString(py_if0D, "castToTVertex") ) {
- return Director_BPy_Interface0D_castToTVertex(py_if0D);
- } else {
- cerr << "Warning: " << name << " castToTVertex() not implemented" << endl;
- return 0;
- }
+ PyErr_SetString(PyExc_TypeError, "method castToTVertex() not properly overridden");
+ return 0;
}
};