LCOV - code coverage report
Current view: top level - port - cpl_noncopyablevector.h (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 4 4 100.0 %
Date: 2024-11-21 22:18:42 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  CPL
       4             :  * Purpose:  Implementation of a std::vector<> without copy capabilities
       5             :  * Author:   Even Rouault <even dot rouault at spatialys.com>
       6             :  *
       7             :  ******************************************************************************
       8             :  * Copyright (c) 2022, Even Rouault <even dot rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #ifndef CPL_NONCOPYABLEVECOTR_H_INCLUDED
      14             : #define CPL_NONCOPYABLEVECOTR_H_INCLUDED
      15             : 
      16             : #include <vector>
      17             : 
      18             : namespace cpl
      19             : {
      20             : 
      21             : /** Derived class of std::vector<> without copy capabilities */
      22         133 : template <class T> struct NonCopyableVector : public std::vector<T>
      23             : {
      24             :     /** Constructor
      25             :      * @param siz Initial size of vector.
      26             :      */
      27        1555 :     explicit inline NonCopyableVector(size_t siz = 0) : std::vector<T>(siz)
      28             :     {
      29        1555 :     }
      30             : 
      31             :     /** Move constructor */
      32        1548 :     NonCopyableVector(NonCopyableVector &&) = default;
      33             : 
      34             :     /** Move assignment operator */
      35             :     NonCopyableVector &operator=(NonCopyableVector &&) = default;
      36             : 
      37             :   private:
      38             :     NonCopyableVector(const NonCopyableVector &) = delete;
      39             :     NonCopyableVector &operator=(const NonCopyableVector &) = delete;
      40             : };
      41             : 
      42             : }  // namespace cpl
      43             : 
      44             : #endif  // CPL_NONCOPYABLEVECOTR_H_INCLUDED

Generated by: LCOV version 1.14