LCOV - code coverage report
Current view: top level - geom/virtual/cgm - VGArray.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 0 96 0.0 %
Date: 2020-06-30 00:58:45 Functions: 0 29 0.0 %
Branches: 0 100 0.0 %

           Branch data     Line data    Source code
       1                 :            : 
       2                 :            : #include <algorithm>
       3                 :            : #include "VGArray.hpp"
       4                 :            : #include "CubitDefines.h"
       5                 :            : 
       6                 :            : template <class T>
       7                 :          0 : VGArray<T>::VGArray( int init_size )
       8                 :            : {
       9         [ #  # ]:          0 :   if( init_size <= 0 )
      10                 :            :   {
      11                 :          0 :     storage_ = 0;
      12                 :          0 :     size_ = 0;
      13                 :          0 :     data_ = 0;
      14                 :            :   }
      15                 :            :   else
      16                 :            :   {
      17                 :          0 :     size_ = init_size;
      18                 :          0 :     storage_ = storage( init_size );
      19 [ #  # ][ #  # ]:          0 :     data_ = new T[storage_];
         [ #  # ][ #  # ]
      20                 :            :   }
      21         [ #  # ]:          0 : }
      22                 :            : 
      23                 :            : template <class T>
      24                 :          0 : VGArray<T>::~VGArray( )
      25                 :            : {
      26 [ #  # ][ #  # ]:          0 :   delete [] data_;
      27                 :          0 :   storage_ = size_ = 0;
      28                 :          0 :   data_ = 0;
      29                 :          0 : }
      30                 :            : 
      31                 :            : template <class T>
      32                 :          0 : void VGArray<T>::size( int new_size )
      33                 :            : {
      34         [ #  # ]:          0 :   if( new_size <= 0 ) 
      35                 :            :   {
      36                 :          0 :     new_size = 0;
      37                 :            :   }
      38         [ #  # ]:          0 :   else if( new_size > storage_ )
      39                 :            :   {
      40                 :          0 :     int new_stor = storage(new_size);
      41         [ #  # ]:          0 :     assert( new_stor > storage_ );
      42 [ #  # ][ #  # ]:          0 :     T* new_array = new T[new_stor];
           [ #  #  #  # ]
      43 [ #  # ][ #  # ]:          0 :     if( data_ )
      44                 :            :     {
      45                 :          0 :       memcpy( new_array, data_, size_ * sizeof(T) );
      46 [ #  # ][ #  # ]:          0 :       delete [] data_;
      47                 :            :     }
      48                 :          0 :     data_ = new_array;
      49                 :          0 :     storage_ = new_stor;
      50                 :            :   }
      51                 :          0 :   size_ = new_size;
      52         [ #  # ]:          0 : }
      53                 :            : 
      54                 :            : template <class T>
      55                 :          0 : void VGArray<T>::size_end( int new_size )
      56                 :            : {
      57         [ #  # ]:          0 :   if( new_size <= 0 ) 
      58                 :            :   {
      59                 :          0 :     new_size = 0;
      60                 :            :   }
      61         [ #  # ]:          0 :   else if( new_size > storage_ )
      62                 :            :   {
      63                 :          0 :     int new_stor = storage(new_size);
      64         [ #  # ]:          0 :     assert( new_stor > storage_ );
      65 [ #  # ][ #  # ]:          0 :     T* new_array = new T[new_stor];
           [ #  #  #  # ]
      66 [ #  # ][ #  # ]:          0 :     if( data_ )
      67                 :            :     {
      68                 :          0 :       memcpy( new_array + new_size - size_, data_, size_ * sizeof(T) );
      69 [ #  # ][ #  # ]:          0 :       delete [] data_;
      70                 :            :     }
      71                 :          0 :     data_ = new_array;
      72                 :          0 :     storage_ = new_stor;
      73                 :            :   }
      74         [ #  # ]:          0 :   else if (new_size > size_)
      75                 :            :   {
      76                 :          0 :     T* read = data_ + size_;
      77                 :          0 :     T* write = data_ + new_size;
      78         [ #  # ]:          0 :     while ( read > data_ )
      79                 :          0 :       *(--write) = *(--read);
      80                 :            :   }
      81         [ #  # ]:          0 :   else if (new_size < size_)
      82                 :            :   {
      83                 :          0 :     T* read = data_ + size_ - new_size;
      84                 :          0 :     T* write = data_;
      85                 :          0 :     T* end = data_ + size_;
      86         [ #  # ]:          0 :     while ( read < end )
      87                 :          0 :       *(write--) = *(read--);
      88                 :            :   }
      89                 :          0 :   size_ = new_size;
      90         [ #  # ]:          0 : }
      91                 :            : 
      92                 :            : template <class T>
      93                 :          0 : int VGArray<T>::storage( int size )
      94                 :            : {
      95         [ #  # ]:          0 :   assert( size <= 0x40000000 ); //no power of 2 greater than size (overflow)
      96                 :            : 
      97                 :            :   int result;
      98         [ #  # ]:          0 :   for( result = 1; result < size; result = result << 1 );
      99         [ #  # ]:          0 :   assert(result>=size);
     100                 :          0 :   return result;
     101                 :            : }
     102                 :            : 
     103                 :            : template <class T>
     104                 :          0 : void VGArray<T>::remove( int index )
     105                 :            : {
     106 [ #  # ][ #  # ]:          0 :   assert( index >= 0 && index < size_ );
     107                 :          0 :   size_--;
     108                 :          0 :   T* ptr = data_ + index;
     109                 :          0 :   T* end = data_ + size_;
     110         [ #  # ]:          0 :   while( ptr < end )
     111                 :            :   {
     112                 :          0 :     T* next = ptr + 1;
     113                 :          0 :     *ptr = *next;
     114                 :          0 :     ptr = next;
     115                 :            :   }
     116                 :          0 : }
     117                 :            : 
     118                 :            : template <class T>
     119                 :          0 : void VGArray<T>::insert( const T& entry, int index )
     120                 :            : {
     121 [ #  # ][ #  # ]:          0 :   assert( index >= 0 && index <= size_ );
     122                 :            : 
     123                 :          0 :   size( size_ + 1 );
     124                 :          0 :   T* ptr = data_ + size_ - 1;
     125                 :          0 :   T* end = data_ + index;
     126                 :            : 
     127         [ #  # ]:          0 :   while( ptr > end )
     128                 :            :   {
     129                 :          0 :     T* next = ptr - 1;
     130                 :          0 :     *ptr = *next;
     131                 :          0 :     ptr = next;
     132                 :            :   }
     133                 :            : 
     134                 :          0 :   data_[index] = entry;
     135                 :          0 : }
     136                 :            : 
     137                 :            : template <class T>
     138                 :          0 : int VGArray<T>::find( const T& entry, int search_from ) const
     139                 :            : {
     140         [ #  # ]:          0 :   assert( search_from >= 0 );
     141                 :            :   
     142         [ #  # ]:          0 :   if( data_ )
     143                 :            :   {
     144                 :          0 :     T* ptr = data_ + search_from;
     145                 :          0 :     T* end = data_ + size_;
     146         [ #  # ]:          0 :     for(; ptr < end; ptr++ )
     147                 :            :     {
     148         [ #  # ]:          0 :       if( *ptr == entry )
     149                 :          0 :         return ptr - data_;
     150                 :            :     }
     151                 :            :   }
     152                 :          0 :   return -1;
     153                 :            : }
     154                 :            : 
     155                 :            : template <class T>
     156                 :          0 : void VGArray<T>::reverse()
     157                 :            : {
     158                 :          0 :   T* start = data_;
     159                 :          0 :   T* end   = data_ + size_ - 1;
     160         [ #  # ]:          0 :   while (start < end)
     161                 :            :   {
     162                 :          0 :     std::swap(*start,*end);
     163                 :          0 :     start++;
     164                 :          0 :     end--;
     165                 :            :   }
     166                 :          0 : }
     167                 :            : 

Generated by: LCOV version 1.11