LCOV - code coverage report
Current view: top level - home/lbartoletti/qgis_coverage_src/external/laz-perf/detail - field_extrabytes.hpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 0 21 0.0 %
Date: 2021-04-10 08:29:14 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            : ===============================================================================
       3                 :            : 
       4                 :            :   FILE:  field_extrabytes.hpp
       5                 :            :   
       6                 :            :   CONTENTS:
       7                 :            :     
       8                 :            : 
       9                 :            :   PROGRAMMERS:
      10                 :            : 
      11                 :            :     martin.isenburg@rapidlasso.com  -  http://rapidlasso.com
      12                 :            :     uday.karan@gmail.com - Hobu, Inc.
      13                 :            :     andrew.bell.ia@gmail.com - Hobu Inc.
      14                 :            :   
      15                 :            :   COPYRIGHT:
      16                 :            :   
      17                 :            :     (c) 2007-2014, martin isenburg, rapidlasso - tools to catch reality
      18                 :            :     (c) 2014, Uday Verma, Hobu, Inc.
      19                 :            : 
      20                 :            :     This is free software; you can redistribute and/or modify it under the
      21                 :            :     terms of the GNU Lesser General Licence as published by the Free Software
      22                 :            :     Foundation. See the COPYING file for more information.
      23                 :            : 
      24                 :            :     This software is distributed WITHOUT ANY WARRANTY and without even the
      25                 :            :     implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      26                 :            :   
      27                 :            :   CHANGE HISTORY:
      28                 :            :   
      29                 :            : ===============================================================================
      30                 :            : */
      31                 :            : 
      32                 :            : #ifndef __las_hpp__
      33                 :            : #error Cannot directly include this file, this is a part of las.hpp
      34                 :            : #endif
      35                 :            : 
      36                 :            : #include <deque>
      37                 :            : 
      38                 :            : namespace laszip {
      39                 :            :         namespace formats {
      40                 :            : 
      41                 :            :                 template<>
      42                 :          0 :                 struct field<las::extrabytes> {
      43                 :            :                         typedef las::extrabytes type;
      44                 :            : 
      45                 :            :             size_t count_;
      46                 :            :             bool have_last_;
      47                 :            :             std::vector<uint8_t> lasts_;
      48                 :            :             std::vector<uint8_t> diffs_;
      49                 :            :             std::deque<models::arithmetic> models_;
      50                 :            : 
      51                 :          0 :                         field(size_t count) :
      52                 :          0 :                 count_(count), have_last_(false), lasts_(count), diffs_(count),
      53                 :          0 :                 models_(count, models::arithmetic(256))
      54                 :          0 :             {}
      55                 :            : 
      56                 :            :                         template<typename TEncoder>
      57                 :            :                         inline const char *compressWith(TEncoder& enc, const char *buf)
      58                 :            :             {
      59                 :            :                 auto li = lasts_.begin();
      60                 :            :                 auto di = diffs_.begin();
      61                 :            :                 while (di != diffs_.end())
      62                 :            :                 {
      63                 :            :                     *di = *buf - *li;
      64                 :            :                     *li = *buf;
      65                 :            :                     di++; buf++; li++;
      66                 :            :                 }
      67                 :            : 
      68                 :            :                 if (!have_last_)
      69                 :            :                 {
      70                 :            :                     enc.getOutStream().putBytes(lasts_.data(), count_);
      71                 :            :                     have_last_ = true;
      72                 :            :                 }
      73                 :            :                 else
      74                 :            :                 {
      75                 :            :                     di = diffs_.begin();
      76                 :            :                     auto mi = models_.begin();
      77                 :            :                     while (di != diffs_.end())
      78                 :            :                         enc.encodeSymbol(*mi++, *di++);
      79                 :            :                 }
      80                 :            :                 return buf;
      81                 :            :             }
      82                 :            : 
      83                 :            :             template<typename TDecoder>
      84                 :          0 :             inline char *decompressWith(TDecoder& dec, char *buf)
      85                 :            :             {
      86                 :          0 :                 if (!have_last_)
      87                 :            :                 {
      88                 :          0 :                     dec.getInStream().getBytes((unsigned char *)buf, count_);
      89                 :          0 :                     std::copy(buf, buf + count_, lasts_.data());
      90                 :          0 :                     have_last_ = true;
      91                 :          0 :                     return buf + count_;
      92                 :            :                 }
      93                 :            :                 // Use the diff vector for our current values.
      94                 :          0 :                 auto& curs = diffs_;
      95                 :          0 :                 auto ci = curs.begin();
      96                 :          0 :                 auto li = lasts_.begin();
      97                 :          0 :                 auto mi = models_.begin();
      98                 :          0 :                 while (li != lasts_.end())
      99                 :            :                 {
     100                 :          0 :                     *ci = u8_fold(*li + dec.decodeSymbol(*mi));
     101                 :          0 :                     *li = *buf = *ci;
     102                 :          0 :                     li++; buf++; ci++; mi++;
     103                 :            :                 }
     104                 :          0 :                 return buf;
     105                 :          0 :             }
     106                 :            :         };
     107                 :            :         }
     108                 :            : }

Generated by: LCOV version 1.14