LCOV - code coverage report
Current view: top level - algs/AdvFront - AF2Polygon2D.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 41 41 100.0 %
Date: 2020-07-01 15:24:36 Functions: 6 6 100.0 %
Branches: 29 46 63.0 %

           Branch data     Line data    Source code
       1                 :            : #include "meshkit/AF2Polygon2D.hpp"
       2                 :            : #include "meshkit/Error.hpp"
       3                 :            : 
       4                 :      31594 : AF2Polygon2D::AF2Polygon2D(
       5                 :            :     std::list<const AF2Point2D*> const & polygonVertices) :
       6                 :      31594 :     numVertices(polygonVertices.size())
       7                 :            : {
       8                 :            :   typedef std::list<const AF2Point2D*>::const_iterator ItrType;
       9                 :            : 
      10                 :            :   // check for the exceptional case of a null pointer in the list of vertices
      11   [ +  -  +  - ]:     252770 :   for (ItrType itr = polygonVertices.begin();
                 [ +  + ]
      12                 :     126386 :       itr != polygonVertices.end(); ++itr)
      13                 :            :   {
      14 [ +  - ][ +  + ]:      94792 :     if (*itr == NULL)
      15                 :            :     {
      16         [ +  - ]:          1 :       MeshKit::Error badArg(MeshKit::MK_BAD_INPUT);
      17                 :            :       badArg.set_string(
      18         [ +  - ]:          1 :           "polygonVertices may not contain a null pointer in AF2Polygon2D.");
      19         [ +  - ]:          1 :       throw badArg;
      20                 :            :     }
      21                 :            :   }
      22                 :            : 
      23                 :            :   // allocate memory and copy the vertex pointers
      24         [ +  - ]:      31593 :   vertices = new const AF2Point2D*[numVertices];
      25                 :      31593 :   int indx = 0;
      26   [ +  -  +  - ]:     252766 :   for (ItrType itr = polygonVertices.begin();
                 [ +  + ]
      27                 :     126383 :       itr != polygonVertices.end(); ++itr)
      28                 :            :   {
      29         [ +  - ]:      94790 :     vertices[indx] = *itr;
      30                 :      94790 :     ++indx;
      31                 :            :   }
      32                 :      31593 : }
      33                 :            : 
      34                 :      31594 : AF2Polygon2D::~AF2Polygon2D()
      35                 :            : {
      36         [ +  - ]:      31594 :   delete[] vertices;
      37                 :      31594 : }
      38                 :            : 
      39                 :          2 : AF2Polygon2D::AF2Polygon2D(const AF2Polygon2D & toCopy) :
      40                 :          2 :     numVertices(toCopy.numVertices)
      41                 :            : {
      42         [ +  - ]:          2 :   vertices = new const AF2Point2D*[numVertices];
      43         [ +  + ]:          8 :   for (unsigned int indx = 0; indx < numVertices; ++indx)
      44                 :            :   {
      45                 :          6 :     vertices[indx] = toCopy.vertices[indx];
      46                 :            :   }
      47                 :          2 : }
      48                 :            : 
      49                 :          1 : AF2Polygon2D& AF2Polygon2D::operator=(const AF2Polygon2D & rhs)
      50                 :            : {
      51                 :            :   // directly copy the number of vertices
      52                 :          1 :   numVertices = rhs.numVertices;
      53                 :            : 
      54                 :            :   // allocate new array in temporary location
      55                 :            :   // and copy the pointers into the temporary array
      56         [ +  - ]:          1 :   const AF2Point2D** tempVertices = new const AF2Point2D*[numVertices];
      57         [ +  + ]:          4 :   for (unsigned int indx = 0; indx < numVertices; ++indx)
      58                 :            :   {
      59                 :          3 :     tempVertices[indx] = rhs.vertices[indx];
      60                 :            :   }
      61                 :            : 
      62                 :            :   // delete what used to be held by the array of vertices
      63                 :            :   // (may be null if default constructor was used)
      64         [ +  - ]:          1 :   delete[] vertices;
      65                 :            : 
      66                 :            :   // transfer ownership from the temporary array to a member of this object
      67                 :          1 :   vertices = tempVertices;
      68                 :          1 :   tempVertices = NULL; // not necessary, but to be explicit
      69                 :            : 
      70                 :          1 :   return *this;
      71                 :            : }
      72                 :            : 
      73                 :     130167 : unsigned int AF2Polygon2D::getNumVertices() const
      74                 :            : {
      75                 :     130167 :   return numVertices;
      76                 :            : }
      77                 :            : 
      78                 :     122498 : const AF2Point2D* AF2Polygon2D::getVertex(unsigned int vtxNum) const
      79                 :            : {
      80         [ +  + ]:     122498 :   if (vtxNum >= numVertices)
      81                 :            :   {
      82         [ +  - ]:          1 :     MeshKit::Error badArg(MeshKit::MK_BAD_INPUT);
      83         [ +  - ]:          1 :     badArg.set_string("The vertex index is too large.");
      84         [ +  - ]:          1 :     throw badArg;
      85                 :            :   }
      86                 :     122497 :   return vertices[vtxNum];
      87                 :            : }

Generated by: LCOV version 1.11