LCOV - code coverage report
Current view: top level - usr/include/c++/6 - initializer_list (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 3 100.0 %
Date: 2018-11-15 08:49:49 Functions: 3 6 50.0 %

          Line data    Source code
       1             : // std::initializer_list support -*- C++ -*-
       2             : 
       3             : // Copyright (C) 2008-2016 Free Software Foundation, Inc.
       4             : //
       5             : // This file is part of GCC.
       6             : //
       7             : // GCC is free software; you can redistribute it and/or modify
       8             : // it under the terms of the GNU General Public License as published by
       9             : // the Free Software Foundation; either version 3, or (at your option)
      10             : // any later version.
      11             : //
      12             : // GCC is distributed in the hope that it will be useful,
      13             : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      14             : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15             : // GNU General Public License for more details.
      16             : //
      17             : // Under Section 7 of GPL version 3, you are granted additional
      18             : // permissions described in the GCC Runtime Library Exception, version
      19             : // 3.1, as published by the Free Software Foundation.
      20             : 
      21             : // You should have received a copy of the GNU General Public License and
      22             : // a copy of the GCC Runtime Library Exception along with this program;
      23             : // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      24             : // <http://www.gnu.org/licenses/>.
      25             : 
      26             : /** @file initializer_list
      27             :  *  This is a Standard C++ Library header.
      28             :  */
      29             : 
      30             : #ifndef _INITIALIZER_LIST
      31             : #define _INITIALIZER_LIST
      32             : 
      33             : #pragma GCC system_header
      34             : 
      35             : #if __cplusplus < 201103L
      36             : # include <bits/c++0x_warning.h>
      37             : #else // C++0x
      38             : 
      39             : #pragma GCC visibility push(default)
      40             : 
      41             : #include <bits/c++config.h>
      42             : 
      43             : namespace std
      44             : {
      45             :   /// initializer_list
      46             :   template<class _E>
      47             :     class initializer_list
      48             :     {
      49             :     public:
      50             :       typedef _E                value_type;
      51             :       typedef const _E&     reference;
      52             :       typedef const _E&     const_reference;
      53             :       typedef size_t            size_type;
      54             :       typedef const _E*         iterator;
      55             :       typedef const _E*         const_iterator;
      56             : 
      57             :     private:
      58             :       iterator                  _M_array;
      59             :       size_type                 _M_len;
      60             : 
      61             :       // The compiler can call a private constructor.
      62             :       constexpr initializer_list(const_iterator __a, size_type __l)
      63             :       : _M_array(__a), _M_len(__l) { }
      64             : 
      65             :     public:
      66             :       constexpr initializer_list() noexcept
      67             :       : _M_array(0), _M_len(0) { }
      68             : 
      69             :       // Number of elements.
      70             :       constexpr size_type
      71          12 :       size() const noexcept { return _M_len; }
      72             : 
      73             :       // First element.
      74             :       constexpr const_iterator
      75          13 :       begin() const noexcept { return _M_array; }
      76             : 
      77             :       // One past the last element.
      78             :       constexpr const_iterator
      79          12 :       end() const noexcept { return begin() + size(); }
      80             :     };
      81             : 
      82             :   /**
      83             :    *  @brief  Return an iterator pointing to the first element of
      84             :    *          the initializer_list.
      85             :    *  @param  __ils  Initializer list.
      86             :    */
      87             :   template<class _Tp>
      88             :     constexpr const _Tp*
      89             :     begin(initializer_list<_Tp> __ils) noexcept
      90             :     { return __ils.begin(); }
      91             : 
      92             :   /**
      93             :    *  @brief  Return an iterator pointing to one past the last element
      94             :    *          of the initializer_list.
      95             :    *  @param  __ils  Initializer list.
      96             :    */
      97             :   template<class _Tp>
      98             :     constexpr const _Tp*
      99             :     end(initializer_list<_Tp> __ils) noexcept
     100             :     { return __ils.end(); }
     101             : }
     102             : 
     103             : #pragma GCC visibility pop
     104             : 
     105             : #endif // C++11
     106             : 
     107             : #endif // _INITIALIZER_LIST

Generated by: LCOV version 1.13