LCOV - code coverage report
Current view: top level - src - VertexSequence.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 62 62 100.0 %
Date: 2020-12-16 07:07:30 Functions: 18 18 100.0 %
Branches: 7 14 50.0 %

           Branch data     Line data    Source code
       1                 :            : #ifndef VERTEX_SEQUENCE_HPP
       2                 :            : #define VERTEX_SEQUENCE_HPP
       3                 :            : 
       4                 :            : #include "EntitySequence.hpp"
       5                 :            : #include "SequenceData.hpp"
       6                 :            : 
       7                 :            : namespace moab
       8                 :            : {
       9                 :            : 
      10                 :            : class VertexSequence : public EntitySequence
      11                 :            : {
      12                 :            :   public:
      13                 :        146 :     VertexSequence( EntityHandle start, EntityID count, SequenceData* dat ) : EntitySequence( start, count, dat ) {}
      14                 :            : 
      15                 :        408 :     VertexSequence( EntityHandle start, EntityID count, EntityID data_size )
      16         [ +  - ]:        408 :         : EntitySequence( start, count, new SequenceData( 3, start, start + data_size - 1 ) )
      17                 :            :     {
      18 [ +  - ][ +  - ]:        408 :         data()->create_sequence_data( X, sizeof( double ) );
      19 [ +  - ][ +  - ]:        408 :         data()->create_sequence_data( Y, sizeof( double ) );
      20 [ +  - ][ +  - ]:        408 :         data()->create_sequence_data( Z, sizeof( double ) );
      21                 :        408 :     }
      22                 :            : 
      23                 :            :     virtual ~VertexSequence();
      24                 :            : 
      25                 :            :     inline ErrorCode get_coordinates( EntityHandle handle, double& x, double& y, double& z ) const;
      26                 :            : 
      27                 :            :     inline ErrorCode get_coordinates( EntityHandle handle, double coords[3] ) const;
      28                 :            : 
      29                 :            :     inline ErrorCode get_coordinates_ref( EntityHandle handle, const double*& x, const double*& y,
      30                 :            :                                           const double*& z ) const;
      31                 :            : 
      32                 :            :     inline ErrorCode set_coordinates( EntityHandle entity, double x, double y, double z );
      33                 :            : 
      34                 :            :     inline ErrorCode set_coordinates( EntityHandle entity, const double xyz[3] );
      35                 :            : 
      36                 :            :     inline ErrorCode get_coordinate_arrays( double*& x, double*& y, double*& z );
      37                 :            : 
      38                 :            :     inline ErrorCode get_coordinate_arrays( const double*& x, const double*& y, const double*& z ) const;
      39                 :            : 
      40                 :            :     EntitySequence* split( EntityHandle here );
      41                 :            : 
      42                 :            :     SequenceData* create_data_subset( EntityHandle start, EntityHandle end ) const;
      43                 :            : 
      44                 :            :     ErrorCode push_front( EntityID count );
      45                 :            :     ErrorCode push_back( EntityID count );
      46                 :            : 
      47                 :            :     void get_const_memory_use( unsigned long& bytes_per_entity, unsigned long& size_of_sequence ) const;
      48                 :            : 
      49                 :            :   private:
      50                 :            :     enum Coord
      51                 :            :     {
      52                 :            :         X = 0,
      53                 :            :         Y = 1,
      54                 :            :         Z = 2
      55                 :            :     };
      56                 :            : 
      57                 :    6368880 :     inline double* array( Coord coord )
      58                 :            :     {
      59                 :    6368880 :         return reinterpret_cast< double* >( data()->get_sequence_data( coord ) );
      60                 :            :     }
      61                 :            : 
      62                 :   40283928 :     inline const double* array( Coord coord ) const
      63                 :            :     {
      64                 :   40283928 :         return reinterpret_cast< const double* >( data()->get_sequence_data( coord ) );
      65                 :            :     }
      66                 :            : 
      67                 :    2122960 :     inline double* x_array()
      68                 :            :     {
      69                 :    2122960 :         return array( X );
      70                 :            :     }
      71                 :    2122960 :     inline double* y_array()
      72                 :            :     {
      73                 :    2122960 :         return array( Y );
      74                 :            :     }
      75                 :    2122960 :     inline double* z_array()
      76                 :            :     {
      77                 :    2122960 :         return array( Z );
      78                 :            :     }
      79                 :            : 
      80                 :   13427976 :     inline const double* x_array() const
      81                 :            :     {
      82                 :   13427976 :         return array( X );
      83                 :            :     }
      84                 :   13427976 :     inline const double* y_array() const
      85                 :            :     {
      86                 :   13427976 :         return array( Y );
      87                 :            :     }
      88                 :   13427976 :     inline const double* z_array() const
      89                 :            :     {
      90                 :   13427976 :         return array( Z );
      91                 :            :     }
      92                 :            : 
      93                 :        450 :     VertexSequence( VertexSequence& split_from, EntityHandle here ) : EntitySequence( split_from, here ) {}
      94                 :            : };
      95                 :            : 
      96                 :       2140 : ErrorCode VertexSequence::get_coordinates( EntityHandle handle, double& x, double& y, double& z ) const
      97                 :            : {
      98                 :       2140 :     EntityID offset = handle - data()->start_handle();
      99                 :       2140 :     x               = x_array()[offset];
     100                 :       2140 :     y               = y_array()[offset];
     101                 :       2140 :     z               = z_array()[offset];
     102                 :       2140 :     return MB_SUCCESS;
     103                 :            : }
     104                 :            : 
     105                 :   12184049 : ErrorCode VertexSequence::get_coordinates( EntityHandle handle, double coords[3] ) const
     106                 :            : {
     107                 :   12184049 :     EntityID offset = handle - data()->start_handle();
     108                 :   12184049 :     coords[X]       = x_array()[offset];
     109                 :   12184049 :     coords[Y]       = y_array()[offset];
     110                 :   12184049 :     coords[Z]       = z_array()[offset];
     111                 :   12184049 :     return MB_SUCCESS;
     112                 :            : }
     113                 :            : 
     114                 :    1241787 : ErrorCode VertexSequence::get_coordinates_ref( EntityHandle handle, const double*& x, const double*& y,
     115                 :            :                                                const double*& z ) const
     116                 :            : {
     117                 :    1241787 :     EntityID offset = handle - data()->start_handle();
     118                 :    1241787 :     x               = x_array() + offset;
     119                 :    1241787 :     y               = y_array() + offset;
     120                 :    1241787 :     z               = z_array() + offset;
     121                 :    1241787 :     return MB_SUCCESS;
     122                 :            : }
     123                 :            : 
     124                 :       7428 : ErrorCode VertexSequence::set_coordinates( EntityHandle entity, double x, double y, double z )
     125                 :            : {
     126                 :       7428 :     EntityID offset   = entity - data()->start_handle();
     127                 :       7428 :     x_array()[offset] = x;
     128                 :       7428 :     y_array()[offset] = y;
     129                 :       7428 :     z_array()[offset] = z;
     130                 :       7428 :     return MB_SUCCESS;
     131                 :            : }
     132                 :            : 
     133                 :    2114879 : ErrorCode VertexSequence::set_coordinates( EntityHandle entity, const double* xyz )
     134                 :            : {
     135                 :    2114879 :     EntityID offset   = entity - data()->start_handle();
     136                 :    2114879 :     x_array()[offset] = xyz[0];
     137                 :    2114879 :     y_array()[offset] = xyz[1];
     138                 :    2114879 :     z_array()[offset] = xyz[2];
     139                 :    2114879 :     return MB_SUCCESS;
     140                 :            : }
     141                 :            : 
     142                 :        653 : ErrorCode VertexSequence::get_coordinate_arrays( double*& x, double*& y, double*& z )
     143                 :            : {
     144                 :        653 :     EntityID offset = start_handle() - data()->start_handle();
     145                 :        653 :     x               = x_array() + offset;
     146                 :        653 :     y               = y_array() + offset;
     147                 :        653 :     z               = z_array() + offset;
     148                 :        653 :     return MB_SUCCESS;
     149                 :            : }
     150                 :            : 
     151                 :    1241787 : ErrorCode VertexSequence::get_coordinate_arrays( const double*& x, const double*& y, const double*& z ) const
     152                 :            : {
     153                 :    1241787 :     return get_coordinates_ref( start_handle(), x, y, z );
     154                 :            : }
     155                 :            : 
     156                 :            : }  // namespace moab
     157                 :            : 
     158                 :            : #endif

Generated by: LCOV version 1.11