LCOV - code coverage report
Current view: top level - algs/AdvFront - AF2Polygon3D.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 18 41 43.9 %
Date: 2020-07-01 15:24:36 Functions: 3 6 50.0 %
Branches: 14 46 30.4 %

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

Generated by: LCOV version 1.11