LCOV - code coverage report
Current view: top level - geom/facet - FacetAttribSet.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 57 59 96.6 %
Date: 2020-06-30 00:58:45 Functions: 8 8 100.0 %
Branches: 40 58 69.0 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : FacetAttribSet.cpp
       3                 :            : //
       4                 :            : // Purpose       : Common attribute functionality for MBG
       5                 :            : //
       6                 :            : // Special Notes : 
       7                 :            : //
       8                 :            : // Creator       : Jason Kraftcheck
       9                 :            : //
      10                 :            : // Creation Date : 03/01/03
      11                 :            : //-------------------------------------------------------------------------
      12                 :            : 
      13                 :            : #include "FacetAttribSet.hpp"
      14                 :            : #include "FacetAttrib.hpp"
      15                 :            : #include "CubitSimpleAttrib.hpp"
      16                 :            : #include "CubitFileIOWrapper.hpp"
      17                 :            : 
      18                 :       1606 : void FacetAttribSet::append_attribute( const CubitSimpleAttrib& csa )
      19                 :            : {
      20         [ +  - ]:       1606 :   FacetAttrib* new_attrib = new FacetAttrib(csa);
      21                 :       1606 :   new_attrib->listNext = listHead;
      22                 :       1606 :   listHead = new_attrib;
      23                 :       1606 : }
      24                 :            : 
      25                 :      10780 : void FacetAttribSet::remove_attribute( const CubitSimpleAttrib& csa )
      26                 :            : {
      27         [ +  + ]:      10780 :   if( !listHead )
      28                 :       8877 :     return;
      29                 :            :     
      30                 :       1903 :   FacetAttrib* attrib = 0;
      31         [ +  + ]:       1903 :   if ( listHead->equals(csa) )
      32                 :            :   {
      33                 :        726 :     attrib = listHead;
      34                 :        726 :     listHead = listHead->listNext;
      35         [ +  - ]:        726 :     delete attrib;
      36                 :        726 :     return;
      37                 :            :   }
      38                 :            :   
      39         [ +  + ]:       2266 :   for ( FacetAttrib* prev = listHead; prev->listNext; prev = prev->listNext )
      40                 :            :   {
      41         [ +  + ]:       1969 :     if( prev->listNext->equals(csa) )
      42                 :            :     {
      43                 :        880 :       attrib = prev->listNext;
      44                 :        880 :       prev->listNext = attrib->listNext;
      45         [ +  - ]:        880 :       delete attrib;
      46                 :        880 :       return;
      47                 :            :     }
      48                 :            :   }
      49                 :            : }
      50                 :            : 
      51                 :       3652 : void FacetAttribSet::remove_all_attributes()
      52                 :            : {
      53         [ +  + ]:       4664 :   while( listHead )
      54                 :            :   {
      55                 :       1012 :     FacetAttrib* dead = listHead;
      56                 :       1012 :     listHead = dead->listNext;
      57         [ +  - ]:       1012 :     delete dead;
      58                 :            :   }
      59                 :       3652 : }
      60                 :            : 
      61                 :       2024 : CubitStatus FacetAttribSet::get_attributes( DLIList<CubitSimpleAttrib>& list ) const
      62                 :            : {
      63         [ +  + ]:       2739 :   for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
      64         [ +  - ]:        715 :     list.append( attrib->get_CSA() );
      65                 :       2024 :   return CUBIT_SUCCESS;
      66                 :            : }
      67                 :            : 
      68                 :      10648 : CubitStatus FacetAttribSet::get_attributes( const CubitString& name,
      69                 :            :                                     DLIList<CubitSimpleAttrib>& list ) const
      70                 :            : {
      71         [ +  + ]:      26774 :   for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
      72 [ +  - ][ +  + ]:      16126 :     if( attrib->name() == name )
      73         [ +  - ]:        792 :       list.append( attrib->get_CSA() );
      74                 :      10648 :   return CUBIT_SUCCESS;
      75                 :            : }
      76                 :            : 
      77                 :       1199 : CubitStatus FacetAttribSet::save_attributes( FILE* file_ptr ) const
      78                 :            : {
      79                 :            :   FacetAttrib *curr_attrib;
      80                 :       1199 :   CubitStatus status = CUBIT_SUCCESS;
      81                 :            :   
      82                 :            :   //save # attribs
      83         [ +  - ]:       1199 :   unsigned int size = attribute_count();
      84         [ +  - ]:       1199 :   NCubitFile::CIOWrapper wrapper( file_ptr );
      85         [ +  - ]:       1199 :   wrapper.Write( &size, 1 ); 
      86                 :            : 
      87                 :            :   //save each attrib
      88         [ +  + ]:       2211 :   for( curr_attrib = listHead; curr_attrib; curr_attrib = curr_attrib->listNext )
      89 [ +  - ][ -  + ]:       1012 :     if( !curr_attrib->save(file_ptr) )
      90                 :          0 :       status = CUBIT_FAILURE;
      91                 :            : 
      92         [ +  - ]:       1199 :   return status;
      93                 :            : }
      94                 :            :   
      95                 :        616 : CubitStatus FacetAttribSet::restore_attributes( FILE* file_ptr, unsigned endian )
      96                 :            : {
      97                 :            :   FacetAttrib *curr_attrib;
      98                 :            :   
      99                 :            :   //Read # attribs
     100                 :            :   unsigned int size;
     101         [ +  - ]:        616 :   NCubitFile::CIOWrapper wrapper( endian, file_ptr );
     102         [ +  - ]:        616 :   wrapper.Read( &size, 1 ); 
     103                 :            : 
     104         [ +  + ]:       1628 :   for (unsigned i = 0; i < size; i++)
     105                 :            :   {
     106         [ +  - ]:       1012 :     curr_attrib = FacetAttrib::restore( file_ptr, endian);  
     107         [ -  + ]:       1012 :     if (!curr_attrib)
     108                 :            :     {
     109                 :            :         // file corrupt?  don't try to read any more
     110                 :          0 :       return CUBIT_FAILURE;
     111                 :            :     }
     112                 :            :     
     113                 :       1012 :     curr_attrib->listNext = listHead;
     114                 :       1012 :     listHead = curr_attrib;
     115                 :            :   }
     116                 :            : 
     117         [ +  - ]:        616 :   return CUBIT_SUCCESS;
     118                 :            : }
     119                 :            : 
     120                 :            : 
     121                 :       1199 : int FacetAttribSet::attribute_count() const
     122                 :            : {
     123                 :       1199 :   int count = 0;
     124         [ +  + ]:       2211 :   for( FacetAttrib* attrib = listHead; attrib; attrib = attrib->listNext )
     125                 :       1012 :     count++;
     126                 :       1199 :   return count;
     127                 :            : }
     128                 :            : 

Generated by: LCOV version 1.11