LCOV - code coverage report
Current view: top level - utils/meshkit - LocalTag.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 24 24 100.0 %
Date: 2020-07-01 15:24:36 Functions: 5 5 100.0 %
Branches: 10 18 55.6 %

           Branch data     Line data    Source code
       1                 :            : #ifndef MESHKIT_LOCAL_TAG_HPP
       2                 :            : #define MESHKIT_LOCAL_TAG_HPP
       3                 :            : 
       4                 :            : #include "meshkit/iMesh.hpp"
       5                 :            : #include "meshkit/MKCore.hpp"
       6                 :            : #include "meshkit/Error.hpp"
       7                 :            : #include <string>
       8                 :            : #include <sstream>
       9                 :            : 
      10                 :            : namespace MeshKit
      11                 :            : {
      12                 :            :   class LocalTag
      13                 :            :   {
      14                 :            :   public:
      15                 :         10 :     explicit LocalTag(MKCore *mkCore, int size = 1,
      16                 :            :                        iMesh::TagValueType type = iBase_ENTITY_HANDLE)
      17                 :         10 :             : imesh_(mkCore->imesh_instance()->instance())
      18                 :            :     {
      19                 :            : #ifdef MOAB
      20                 :            :       init("", size, type);
      21                 :            : #else
      22 [ +  - ][ +  - ]:         10 :       init("local_tag", size, type);
      23                 :            : #endif
      24                 :         10 :     }
      25                 :            : 
      26                 :         10 :     LocalTag(MKCore *mkCore, const std::string &name, int size = 1,
      27                 :            :              iMesh::TagValueType type = iBase_ENTITY_HANDLE)
      28                 :         10 :       : imesh_(mkCore->imesh_instance()->instance())
      29                 :            :     {
      30         [ +  - ]:         10 :       init(name, size, type);
      31                 :         10 :     }
      32                 :            : 
      33                 :         20 :     ~LocalTag()
      34                 :         20 :     {
      35                 :         20 :       imesh_.destroyTag(tag_handle_, true);
      36                 :         20 :     }
      37                 :            : 
      38                 :         78 :     operator iMesh::TagHandle()
      39                 :            :     {
      40                 :         78 :       return tag_handle_;
      41                 :            :     }
      42                 :            : 
      43                 :            :   private:
      44                 :         20 :     void init(const std::string &name, int size, iMesh::TagValueType type)
      45                 :            :     {
      46                 :            :       iMesh::Error err;
      47                 :         20 :       err = imesh_.createTag(name.c_str(), size, type, tag_handle_);
      48                 :            : 
      49         [ +  + ]:         24 :       for (int i=0; err == iBase_TAG_ALREADY_EXISTS; i++) {
      50         [ +  - ]:          4 :         std::ostringstream os;
      51 [ +  - ][ +  - ]:          4 :         os << name << i;
      52         [ +  - ]:          8 :         std::string tag_name = os.str();
      53         [ +  - ]:          4 :         err = imesh_.createTag(tag_name.c_str(), size, type, tag_handle_);
      54                 :          4 :       }
      55                 :            : 
      56                 :         20 :       IBERRCHK(err, "FIXME");
      57                 :         20 :     }
      58                 :            : 
      59                 :            :     iMesh imesh_;
      60                 :            :     iMesh::TagHandle tag_handle_;
      61                 :            :   };
      62                 :            : }
      63                 :            : 
      64                 :            : #endif

Generated by: LCOV version 1.11