Revision: 5939
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5939&view=rev
Author:   mdboom
Date:     2008-07-31 18:39:37 +0000 (Thu, 31 Jul 2008)

Log Message:
-----------
Remove warnings in _delaunay.cpp and consolidate duplicate cleanup code (so it 
doesn't have to be manually kept in sync).

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/delaunay/_delaunay.cpp

Modified: trunk/matplotlib/lib/matplotlib/delaunay/_delaunay.cpp
===================================================================
--- trunk/matplotlib/lib/matplotlib/delaunay/_delaunay.cpp      2008-07-31 
18:38:56 UTC (rev 5938)
+++ trunk/matplotlib/lib/matplotlib/delaunay/_delaunay.cpp      2008-07-31 
18:39:37 UTC (rev 5939)
@@ -12,8 +12,8 @@
 
 extern "C" {
 
-static void reorder_edges(int npoints, int ntriangles, 
-    double *x, double *y, 
+static void reorder_edges(int npoints, int ntriangles,
+    double *x, double *y,
     int *edge_db, int *tri_edges, int *tri_nbrs)
 {
     int neighbors[3], nodes[3];
@@ -69,7 +69,7 @@
 
         // Not trusting me? Okay, let's go through it:
         // We have three edges to deal with and three nodes. Without loss
-        // of generality, let's label the nodes A, B, and C with (A, B) 
+        // of generality, let's label the nodes A, B, and C with (A, B)
         // forming the first edge in the order they arrive on input.
         // Then there are eight possibilities as to how the other edge-tuples
         // may be labeled, but only two variations that are going to affect the
@@ -85,7 +85,7 @@
         // The second test we need to perform is for counter-clockwiseness.
         // Again, there are only two variations that will affect the outcome:
         // either ABC is counter-clockwise, or it isn't. In the former case,
-        // we're done setting the node order, we just need to associate the 
+        // we're done setting the node order, we just need to associate the
         // appropriate neighbor triangles with their opposite nodes, something
         // which can be done by inspection. In the latter case, to order the
         // nodes counter-clockwise, we only have to switch B and C to get
@@ -113,8 +113,8 @@
 
 static PyObject* getMesh(int npoints, double *x, double *y)
 {
-    PyObject *vertices, *edge_db, *tri_edges, *tri_nbrs;
-    PyObject *temp;
+    PyObject *vertices = NULL, *edge_db = NULL, *tri_edges = NULL, *tri_nbrs = 
NULL;
+    PyObject *temp = NULL;
     int tri0, tri1, reg0, reg1;
     double tri0x, tri0y, tri1x, tri1y;
     int length, numtri, i, j;
@@ -136,21 +136,21 @@
     dim[0] = length;
     dim[1] = 2;
     edge_db = PyArray_SimpleNew(2, dim, PyArray_INT);
-    if (!edge_db) goto fail;
+    if (!edge_db) goto exit;
     edge_db_ptr = (int*)PyArray_DATA(edge_db);
-    
+
     dim[0] = numtri;
     vertices = PyArray_SimpleNew(2, dim, PyArray_DOUBLE);
-    if (!vertices) goto fail;
+    if (!vertices) goto exit;
     vertices_ptr = (double*)PyArray_DATA(vertices);
 
     dim[1] = 3;
     tri_edges = PyArray_SimpleNew(2, dim, PyArray_INT);
-    if (!tri_edges) goto fail;
+    if (!tri_edges) goto exit;
     tri_edges_ptr = (int*)PyArray_DATA(tri_edges);
 
     tri_nbrs = PyArray_SimpleNew(2, dim, PyArray_INT);
-    if (!tri_nbrs) goto fail;
+    if (!tri_nbrs) goto exit;
     tri_nbrs_ptr = (int*)PyArray_DATA(tri_nbrs);
 
     for (i=0; i<(3*numtri); i++) {
@@ -192,25 +192,17 @@
     // tri_edges contains lists of edges; convert to lists of nodes in
     // counterclockwise order and reorder tri_nbrs to match. Each node
     // corresponds to the edge opposite it in the triangle.
-    reorder_edges(npoints, numtri, x, y, edge_db_ptr, tri_edges_ptr, 
+    reorder_edges(npoints, numtri, x, y, edge_db_ptr, tri_edges_ptr,
         tri_nbrs_ptr);
 
     temp = Py_BuildValue("(OOOO)", vertices, edge_db, tri_edges, tri_nbrs);
-    if (!temp) goto fail;
 
-    Py_DECREF(vertices);
-    Py_DECREF(edge_db);
-    Py_DECREF(tri_edges);
-    Py_DECREF(tri_nbrs);
-
-    return temp;
-
-fail:
+ exit:
     Py_XDECREF(vertices);
     Py_XDECREF(edge_db);
     Py_XDECREF(tri_edges);
     Py_XDECREF(tri_nbrs);
-    return NULL;
+    return temp;
 }
 
 static PyObject *linear_planes(int ntriangles, double *x, double *y, double *z,
@@ -221,7 +213,7 @@
     int i;
     double *planes_ptr;
     double x02, y02, z02, x12, y12, z12, xy0212;
-    
+
     dims[0] = ntriangles;
     dims[1] = 3;
     planes = PyArray_SimpleNew(2, dims, PyArray_DOUBLE);
@@ -240,15 +232,15 @@
             xy0212 = y02/y12;
             INDEX3(planes_ptr,i,0) = (z02 - z12 * xy0212) / (x02 - x12 * 
xy0212);
             INDEX3(planes_ptr,i,1) = (z12 - INDEX3(planes_ptr,i,0)*x12) / y12;
-            INDEX3(planes_ptr,i,2) = (z[INDEX3(nodes,i,2)] - 
-                                      
INDEX3(planes_ptr,i,0)*x[INDEX3(nodes,i,2)] - 
+            INDEX3(planes_ptr,i,2) = (z[INDEX3(nodes,i,2)] -
+                                      
INDEX3(planes_ptr,i,0)*x[INDEX3(nodes,i,2)] -
                                       
INDEX3(planes_ptr,i,1)*y[INDEX3(nodes,i,2)]);
         } else {
             xy0212 = x02/x12;
             INDEX3(planes_ptr,i,1) = (z02 - z12 * xy0212) / (y02 - y12 * 
xy0212);
             INDEX3(planes_ptr,i,0) = (z12 - INDEX3(planes_ptr,i,1)*y12) / x12;
-            INDEX3(planes_ptr,i,2) = (z[INDEX3(nodes,i,2)] - 
-                                      
INDEX3(planes_ptr,i,0)*x[INDEX3(nodes,i,2)] - 
+            INDEX3(planes_ptr,i,2) = (z[INDEX3(nodes,i,2)] -
+                                      
INDEX3(planes_ptr,i,0)*x[INDEX3(nodes,i,2)] -
                                       
INDEX3(planes_ptr,i,1)*y[INDEX3(nodes,i,2)]);
         }
     }
@@ -256,24 +248,24 @@
     return (PyObject*)planes;
 }
 
-static double linear_interpolate_single(double targetx, double targety, 
+static double linear_interpolate_single(double targetx, double targety,
     double *x, double *y, int *nodes, int *neighbors,
     PyObject *planes, double defvalue, int start_triangle, int *end_triangle)
 {
     double *planes_ptr;
     planes_ptr = (double*)PyArray_DATA(planes);
     if (start_triangle == -1) start_triangle = 0;
-    *end_triangle = walking_triangles(start_triangle, targetx, targety, 
+    *end_triangle = walking_triangles(start_triangle, targetx, targety,
         x, y, nodes, neighbors);
     if (*end_triangle == -1) return defvalue;
-    return (targetx*INDEX3(planes_ptr,*end_triangle,0) + 
+    return (targetx*INDEX3(planes_ptr,*end_triangle,0) +
             targety*INDEX3(planes_ptr,*end_triangle,1) +
                     INDEX3(planes_ptr,*end_triangle,2));
 }
 
-static PyObject *linear_interpolate_grid(double x0, double x1, int xsteps, 
+static PyObject *linear_interpolate_grid(double x0, double x1, int xsteps,
     double y0, double y1, int ysteps,
-    PyObject *planes, double defvalue, 
+    PyObject *planes, double defvalue,
     int npoints, double *x, double *y, int *nodes, int *neighbors)
 {
     int ix, iy;
@@ -312,10 +304,10 @@
 static PyObject *compute_planes_method(PyObject *self, PyObject *args)
 {
     PyObject *pyx, *pyy, *pyz, *pynodes;
-    PyObject *x, *y, *z, *nodes;
+    PyObject *x = NULL, *y = NULL, *z = NULL, *nodes = NULL;
     int npoints, ntriangles;
 
-    PyObject *planes;
+    PyObject *planes = NULL;
 
     if (!PyArg_ParseTuple(args, "OOOO", &pyx, &pyy, &pyz, &pynodes)) {
         return NULL;
@@ -323,58 +315,52 @@
     x = PyArray_FROMANY(pyx, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!x) {
         PyErr_SetString(PyExc_ValueError, "x must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     y = PyArray_FROMANY(pyy, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!y) {
         PyErr_SetString(PyExc_ValueError, "y must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     z = PyArray_FROMANY(pyz, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!z) {
         PyErr_SetString(PyExc_ValueError, "z must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     npoints = PyArray_DIM(x, 0);
     if ((PyArray_DIM(y, 0) != npoints) || (PyArray_DIM(z, 0) != npoints)) {
         PyErr_SetString(PyExc_ValueError, "x,y,z arrays must be of equal 
length");
-        goto fail;
+        goto exit;
     }
     nodes = PyArray_FROMANY(pynodes, PyArray_INT, 2, 2, NPY_IN_ARRAY);
     if (!nodes) {
         PyErr_SetString(PyExc_ValueError, "nodes must be a 2-D array of ints");
-        goto fail;
+        goto exit;
     }
     ntriangles = PyArray_DIM(nodes, 0);
     if (PyArray_DIM(nodes, 1) != 3) {
         PyErr_SetString(PyExc_ValueError, "nodes must have shape (ntriangles, 
3)");
-        goto fail;
+        goto exit;
     }
 
-    planes = linear_planes(ntriangles, (double*)PyArray_DATA(x), 
+    planes = linear_planes(ntriangles, (double*)PyArray_DATA(x),
         (double*)PyArray_DATA(y), (double*)PyArray_DATA(z), 
(int*)PyArray_DATA(nodes));
 
-    Py_DECREF(x);
-    Py_DECREF(y);
-    Py_DECREF(z);
-    Py_DECREF(nodes);
-
-    return planes;
-
-fail:
+exit:
     Py_XDECREF(x);
     Py_XDECREF(y);
     Py_XDECREF(z);
     Py_XDECREF(nodes);
-    return NULL;
+
+    return planes;
 }
 
 static PyObject *linear_interpolate_method(PyObject *self, PyObject *args)
 {
     double x0, x1, y0, y1, defvalue;
     int xsteps, ysteps;
-    PyObject *pyplanes, *pyx, *pyy, *pynodes, *pyneighbors, *grid;
-    PyObject *planes, *x, *y, *nodes, *neighbors;
+    PyObject *pyplanes, *pyx, *pyy, *pynodes, *pyneighbors, *grid = NULL;
+    PyObject *planes = NULL, *x = NULL, *y = NULL, *nodes = NULL, *neighbors = 
NULL;
     int npoints;
 
 
@@ -385,54 +371,47 @@
     x = PyArray_FROMANY(pyx, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!x) {
         PyErr_SetString(PyExc_ValueError, "x must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     y = PyArray_FROMANY(pyy, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!y) {
         PyErr_SetString(PyExc_ValueError, "y must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     npoints = PyArray_DIM(x, 0);
     if (PyArray_DIM(y, 0) != npoints) {
         PyErr_SetString(PyExc_ValueError, "x,y arrays must be of equal 
length");
-        goto fail;
+        goto exit;
     }
     planes = PyArray_FROMANY(pyplanes, PyArray_DOUBLE, 2, 2, NPY_IN_ARRAY);
     if (!planes) {
         PyErr_SetString(PyExc_ValueError, "planes must be a 2-D array of 
floats");
-        goto fail;
+        goto exit;
     }
     nodes = PyArray_FROMANY(pynodes, PyArray_INT, 2, 2, NPY_IN_ARRAY);
     if (!nodes) {
         PyErr_SetString(PyExc_ValueError, "nodes must be a 2-D array of ints");
-        goto fail;
+        goto exit;
     }
     neighbors = PyArray_FROMANY(pyneighbors, PyArray_INT, 2, 2, NPY_IN_ARRAY);
     if (!neighbors) {
         PyErr_SetString(PyExc_ValueError, "neighbors must be a 2-D array of 
ints");
-        goto fail;
+        goto exit;
     }
 
     grid = linear_interpolate_grid(x0, x1, xsteps, y0, y1, ysteps,
         (PyObject*)planes, defvalue, npoints,
         (double*)PyArray_DATA(x), (double*)PyArray_DATA(y),
         (int*)PyArray_DATA(nodes), (int*)PyArray_DATA(neighbors));
-    
-    Py_DECREF(x);
-    Py_DECREF(y);
-    Py_DECREF(planes);
-    Py_DECREF(nodes);
-    Py_DECREF(neighbors);
 
-    return grid;
-
-fail:
+ exit:
     Py_XDECREF(x);
     Py_XDECREF(y);
     Py_XDECREF(planes);
     Py_XDECREF(nodes);
     Py_XDECREF(neighbors);
-    return NULL;
+
+    return grid;
 }
 
 // Thanks to C++'s memory rules, we can't use the usual "goto fail;" method of
@@ -455,7 +434,7 @@
 {
     PyObject *pyx, *pyy, *pyz, *pycenters, *pynodes, *pyneighbors, *pyintx, 
*pyinty;
     PyObject *x = NULL, *y = NULL, *z = NULL, *centers = NULL, *nodes = NULL,
-        *neighbors = NULL, *intx = NULL, *inty = NULL, *intz;
+        *neighbors = NULL, *intx = NULL, *inty = NULL, *intz = NULL;
     double defvalue;
     int size, npoints, ntriangles;
 
@@ -506,7 +485,7 @@
         return NULL;
     }
     ntriangles = PyArray_DIM(neighbors, 0);
-    if ((PyArray_DIM(nodes, 0) != ntriangles)  || 
+    if ((PyArray_DIM(nodes, 0) != ntriangles)  ||
         (PyArray_DIM(centers, 0) != ntriangles)) {
         PyErr_SetString(PyExc_ValueError, "centers,nodes,neighbors must be of 
equal length");
         CLEANUP
@@ -542,13 +521,13 @@
         return NULL;
     }
 
-    NaturalNeighbors nn(npoints, ntriangles, 
+    NaturalNeighbors nn(npoints, ntriangles,
         (double*)PyArray_DATA(x), (double*)PyArray_DATA(y),
-        (double*)PyArray_DATA(centers), (int*)PyArray_DATA(nodes), 
+        (double*)PyArray_DATA(centers), (int*)PyArray_DATA(nodes),
         (int*)PyArray_DATA(neighbors));
     size = PyArray_Size(intx);
-    nn.interpolate_unstructured((double*)PyArray_DATA(z), size, 
-        (double*)PyArray_DATA(intx), (double*)PyArray_DATA(inty), 
+    nn.interpolate_unstructured((double*)PyArray_DATA(z), size,
+        (double*)PyArray_DATA(intx), (double*)PyArray_DATA(inty),
         (double*)PyArray_DATA(intz), defvalue);
 
     Py_XDECREF(x);
@@ -575,13 +554,13 @@
 static PyObject *nn_interpolate_method(PyObject *self, PyObject *args)
 {
     PyObject *pyx, *pyy, *pyz, *pycenters, *pynodes, *pyneighbors, *grid;
-    PyObject *x, *y, *z, *centers, *nodes, *neighbors;
+    PyObject *x = NULL, *y = NULL, *z = NULL, *centers = NULL, *nodes = NULL, 
*neighbors = NULL;
     double x0, x1, y0, y1, defvalue;
     int xsteps, ysteps;
     int npoints, ntriangles;
     intp dims[2];
 
-    if (!PyArg_ParseTuple(args, "ddiddidOOOOOO", &x0, &x1, &xsteps, 
+    if (!PyArg_ParseTuple(args, "ddiddidOOOOOO", &x0, &x1, &xsteps,
         &y0, &y1, &ysteps, &defvalue, &pyx, &pyy, &pyz, &pycenters, &pynodes,
         &pyneighbors)) {
         return NULL;
@@ -629,7 +608,7 @@
         return NULL;
     }
     ntriangles = PyArray_DIM(neighbors, 0);
-    if ((PyArray_DIM(nodes, 0) != ntriangles)  || 
+    if ((PyArray_DIM(nodes, 0) != ntriangles)  ||
         (PyArray_DIM(centers, 0) != ntriangles)) {
         PyErr_SetString(PyExc_ValueError, "centers,nodes,neighbors must be of 
equal length");
         CLEANUP
@@ -644,11 +623,11 @@
         return NULL;
     }
 
-    NaturalNeighbors nn(npoints, ntriangles, 
+    NaturalNeighbors nn(npoints, ntriangles,
         (double*)PyArray_DATA(x), (double*)PyArray_DATA(y),
-        (double*)PyArray_DATA(centers), (int*)PyArray_DATA(nodes), 
+        (double*)PyArray_DATA(centers), (int*)PyArray_DATA(nodes),
         (int*)PyArray_DATA(neighbors));
-    nn.interpolate_grid((double*)PyArray_DATA(z), 
+    nn.interpolate_grid((double*)PyArray_DATA(z),
         x0, x1, xsteps,
         y0, y1, ysteps,
         (double*)PyArray_DATA(grid),
@@ -663,8 +642,8 @@
 
 static PyObject *delaunay_method(PyObject *self, PyObject *args)
 {
-    PyObject *pyx, *pyy, *mesh;
-    PyObject *x, *y;
+    PyObject *pyx, *pyy, *mesh = NULL;
+    PyObject *x = NULL, *y = NULL;
     int npoints;
 
     if (!PyArg_ParseTuple(args, "OO", &pyx, &pyy)) {
@@ -673,37 +652,31 @@
     x = PyArray_FROMANY(pyx, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!x) {
         PyErr_SetString(PyExc_ValueError, "x must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
     y = PyArray_FROMANY(pyy, PyArray_DOUBLE, 1, 1, NPY_IN_ARRAY);
     if (!y) {
         PyErr_SetString(PyExc_ValueError, "y must be a 1-D array of floats");
-        goto fail;
+        goto exit;
     }
 
     npoints = PyArray_DIM(x, 0);
     if (PyArray_DIM(y, 0) != npoints) {
         PyErr_SetString(PyExc_ValueError, "x and y must have the same length");
-        goto fail;
+        goto exit;
     }
 
     mesh = getMesh(npoints, (double*)PyArray_DATA(x), 
(double*)PyArray_DATA(y));
 
-    if (!mesh) goto fail;
-
-    Py_DECREF(x);
-    Py_DECREF(y);
-
-    return mesh;
-
-fail:
+ exit:
     Py_XDECREF(x);
     Py_XDECREF(y);
-    return NULL;
+
+    return mesh;
 }
 
 static PyMethodDef delaunay_methods[] = {
-    {"delaunay", (PyCFunction)delaunay_method, METH_VARARGS, 
+    {"delaunay", (PyCFunction)delaunay_method, METH_VARARGS,
         "Compute the Delaunay triangulation of a cloud of 2-D points.\n\n"
         "circumcenters, edges, tri_points, tri_neighbors = delaunay(x, y)\n\n"
         "x, y -- shape-(npoints,) arrays of floats giving the X and Y 
coordinates of the points\n"
@@ -730,7 +703,7 @@
 PyMODINIT_FUNC init_delaunay(void)
 {
     PyObject* m;
-    m = Py_InitModule3("_delaunay", delaunay_methods, 
+    m = Py_InitModule3("_delaunay", delaunay_methods,
         "Tools for computing the Delaunay triangulation and some operations on 
it.\n"
         );
     if (m == NULL)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to