LCOV - code coverage report
Current view: top level - usr/include/c++/6/bits - predefined_ops.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 18 0.0 %
Date: 2016-12-15 13:18:47 Functions: 0 12 0.0 %

          Line data    Source code
       1             : // Default predicates for internal use -*- C++ -*-
       2             : 
       3             : // Copyright (C) 2013-2016 Free Software Foundation, Inc.
       4             : //
       5             : // This file is part of the GNU ISO C++ Library.  This library is free
       6             : // software; you can redistribute it and/or modify it under the
       7             : // terms of the GNU General Public License as published by the
       8             : // Free Software Foundation; either version 3, or (at your option)
       9             : // any later version.
      10             : 
      11             : // This library is distributed in the hope that it will be useful,
      12             : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             : // GNU General Public License for more details.
      15             : 
      16             : // Under Section 7 of GPL version 3, you are granted additional
      17             : // permissions described in the GCC Runtime Library Exception, version
      18             : // 3.1, as published by the Free Software Foundation.
      19             : 
      20             : // You should have received a copy of the GNU General Public License and
      21             : // a copy of the GCC Runtime Library Exception along with this program;
      22             : // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      23             : // <http://www.gnu.org/licenses/>.
      24             : 
      25             : /** @file predefined_ops.h
      26             :  *  This is an internal header file, included by other library headers.
      27             :  *  You should not attempt to use it directly.
      28             :  */
      29             : 
      30             : #ifndef _GLIBCXX_PREDEFINED_OPS_H
      31             : #define _GLIBCXX_PREDEFINED_OPS_H       1
      32             : 
      33             : namespace __gnu_cxx
      34             : {
      35             : namespace __ops
      36             : {
      37             :   struct _Iter_less_iter
      38             :   {
      39             :     template<typename _Iterator1, typename _Iterator2>
      40             :       _GLIBCXX14_CONSTEXPR
      41             :       bool
      42             :       operator()(_Iterator1 __it1, _Iterator2 __it2) const
      43             :       { return *__it1 < *__it2; }
      44             :   };
      45             :   _GLIBCXX14_CONSTEXPR
      46             :   inline _Iter_less_iter
      47             :   __iter_less_iter()
      48             :   { return _Iter_less_iter(); }
      49             : 
      50             :   struct _Iter_less_val
      51             :   {
      52             :     template<typename _Iterator, typename _Value>
      53             :       bool
      54             :       operator()(_Iterator __it, _Value& __val) const
      55             :       { return *__it < __val; }
      56             :     };
      57             : 
      58             :   inline _Iter_less_val
      59             :   __iter_less_val()
      60             :   { return _Iter_less_val(); }
      61             : 
      62             :   inline _Iter_less_val
      63             :   __iter_comp_val(_Iter_less_iter)
      64             :   { return _Iter_less_val(); }
      65             : 
      66             :   struct _Val_less_iter
      67             :   {
      68             :     template<typename _Value, typename _Iterator>
      69             :       bool
      70             :       operator()(_Value& __val, _Iterator __it) const
      71             :       { return __val < *__it; }
      72             :     };
      73             : 
      74             :   inline _Val_less_iter
      75             :   __val_less_iter()
      76             :   { return _Val_less_iter(); }
      77             : 
      78             :   inline _Val_less_iter
      79             :   __val_comp_iter(_Iter_less_iter)
      80             :   { return _Val_less_iter(); }
      81             : 
      82             :   struct _Iter_equal_to_iter
      83             :   {
      84             :     template<typename _Iterator1, typename _Iterator2>
      85             :       bool
      86             :       operator()(_Iterator1 __it1, _Iterator2 __it2) const
      87             :       { return *__it1 == *__it2; }
      88             :     };
      89             : 
      90             :   inline _Iter_equal_to_iter
      91             :   __iter_equal_to_iter()
      92             :   { return _Iter_equal_to_iter(); }
      93             : 
      94             :   struct _Iter_equal_to_val
      95             :   {
      96             :     template<typename _Iterator, typename _Value>
      97             :       bool
      98             :       operator()(_Iterator __it, _Value& __val) const
      99             :       { return *__it == __val; }
     100             :     };
     101             : 
     102             :   inline _Iter_equal_to_val
     103             :   __iter_equal_to_val()
     104             :   { return _Iter_equal_to_val(); }
     105             : 
     106             :   inline _Iter_equal_to_val
     107             :   __iter_comp_val(_Iter_equal_to_iter)
     108             :   { return _Iter_equal_to_val(); }
     109             : 
     110             :   template<typename _Compare>
     111             :     struct _Iter_comp_iter
     112             :     {
     113             :       _Compare _M_comp;
     114             :       _GLIBCXX14_CONSTEXPR
     115           0 :       _Iter_comp_iter(_Compare __comp)
     116             :         : _M_comp(__comp)
     117           0 :       { }
     118             : 
     119             :       template<typename _Iterator1, typename _Iterator2>
     120             :         _GLIBCXX14_CONSTEXPR
     121             :         bool
     122           0 :         operator()(_Iterator1 __it1, _Iterator2 __it2)
     123           0 :         { return bool(_M_comp(*__it1, *__it2)); }
     124             :     };
     125             : 
     126             :   template<typename _Compare>
     127             :     _GLIBCXX14_CONSTEXPR
     128             :     inline _Iter_comp_iter<_Compare>
     129           0 :     __iter_comp_iter(_Compare __comp)
     130           0 :     { return _Iter_comp_iter<_Compare>(__comp); }
     131             : 
     132             :   template<typename _Compare>
     133             :     struct _Iter_comp_val
     134             :     {
     135             :       _Compare _M_comp;
     136             : 
     137           0 :       _Iter_comp_val(_Compare __comp)
     138             :         : _M_comp(__comp)
     139           0 :       { }
     140             : 
     141             :       template<typename _Iterator, typename _Value>
     142             :         bool
     143           0 :         operator()(_Iterator __it, _Value& __val)
     144           0 :         { return bool(_M_comp(*__it, __val)); }
     145             :     };
     146             : 
     147             :   template<typename _Compare>
     148             :    inline _Iter_comp_val<_Compare>
     149             :     __iter_comp_val(_Compare __comp)
     150             :     { return _Iter_comp_val<_Compare>(__comp); }
     151             : 
     152             :   template<typename _Compare>
     153             :     inline _Iter_comp_val<_Compare>
     154           0 :     __iter_comp_val(_Iter_comp_iter<_Compare> __comp)
     155           0 :     { return _Iter_comp_val<_Compare>(__comp._M_comp); }
     156             : 
     157             :   template<typename _Compare>
     158             :     struct _Val_comp_iter
     159             :     {
     160             :       _Compare _M_comp;
     161             : 
     162           0 :       _Val_comp_iter(_Compare __comp)
     163             :         : _M_comp(__comp)
     164           0 :       { }
     165             : 
     166             :       template<typename _Value, typename _Iterator>
     167             :         bool
     168           0 :         operator()(_Value& __val, _Iterator __it)
     169           0 :         { return bool(_M_comp(__val, *__it)); }
     170             :     };
     171             : 
     172             :   template<typename _Compare>
     173             :     inline _Val_comp_iter<_Compare>
     174             :     __val_comp_iter(_Compare __comp)
     175             :     { return _Val_comp_iter<_Compare>(__comp); }
     176             : 
     177             :   template<typename _Compare>
     178             :     inline _Val_comp_iter<_Compare>
     179           0 :     __val_comp_iter(_Iter_comp_iter<_Compare> __comp)
     180           0 :     { return _Val_comp_iter<_Compare>(__comp._M_comp); }
     181             : 
     182             :   template<typename _Value>
     183             :     struct _Iter_equals_val
     184             :     {
     185             :       _Value& _M_value;
     186             : 
     187             :       _Iter_equals_val(_Value& __value)
     188             :         : _M_value(__value)
     189             :       { }
     190             : 
     191             :       template<typename _Iterator>
     192             :         bool
     193             :         operator()(_Iterator __it)
     194             :         { return *__it == _M_value; }
     195             :     };
     196             : 
     197             :   template<typename _Value>
     198             :     inline _Iter_equals_val<_Value>
     199             :     __iter_equals_val(_Value& __val)
     200             :     { return _Iter_equals_val<_Value>(__val); }
     201             : 
     202             :   template<typename _Iterator1>
     203             :     struct _Iter_equals_iter
     204             :     {
     205             :       typename std::iterator_traits<_Iterator1>::reference _M_ref;
     206             : 
     207             :       _Iter_equals_iter(_Iterator1 __it1)
     208             :         : _M_ref(*__it1)
     209             :       { }
     210             : 
     211             :       template<typename _Iterator2>
     212             :         bool
     213             :         operator()(_Iterator2 __it2)
     214             :         { return *__it2 == _M_ref; }
     215             :     };
     216             : 
     217             :   template<typename _Iterator>
     218             :     inline _Iter_equals_iter<_Iterator>
     219             :     __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it)
     220             :     { return _Iter_equals_iter<_Iterator>(__it); }
     221             : 
     222             :   template<typename _Predicate>
     223             :     struct _Iter_pred
     224             :     {
     225             :       _Predicate _M_pred;
     226             : 
     227             :       _Iter_pred(_Predicate __pred)
     228             :         : _M_pred(__pred)
     229             :       { }
     230             : 
     231             :       template<typename _Iterator>
     232             :         bool
     233             :         operator()(_Iterator __it)
     234             :         { return bool(_M_pred(*__it)); }
     235             :     };
     236             : 
     237             :   template<typename _Predicate>
     238             :     inline _Iter_pred<_Predicate>
     239             :     __pred_iter(_Predicate __pred)
     240             :     { return _Iter_pred<_Predicate>(__pred); }
     241             : 
     242             :   template<typename _Compare, typename _Value>
     243             :     struct _Iter_comp_to_val
     244             :     {
     245             :       _Compare _M_comp;
     246             :       _Value& _M_value;
     247             : 
     248             :       _Iter_comp_to_val(_Compare __comp, _Value& __value)
     249             :         : _M_comp(__comp), _M_value(__value)
     250             :       { }
     251             : 
     252             :       template<typename _Iterator>
     253             :         bool
     254             :         operator()(_Iterator __it)
     255             :         { return bool(_M_comp(*__it, _M_value)); }
     256             :     };
     257             : 
     258             :   template<typename _Compare, typename _Value>
     259             :     _Iter_comp_to_val<_Compare, _Value>
     260             :     __iter_comp_val(_Compare __comp, _Value &__val)
     261             :     { return _Iter_comp_to_val<_Compare, _Value>(__comp, __val); }
     262             : 
     263             :   template<typename _Compare, typename _Iterator1>
     264             :     struct _Iter_comp_to_iter
     265             :     {
     266             :       _Compare _M_comp;
     267             :       typename std::iterator_traits<_Iterator1>::reference _M_ref;
     268             : 
     269             :       _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
     270             :         : _M_comp(__comp), _M_ref(*__it1)
     271             :       { }
     272             : 
     273             :       template<typename _Iterator2>
     274             :         bool
     275             :         operator()(_Iterator2 __it2)
     276             :         { return bool(_M_comp(*__it2, _M_ref)); }
     277             :     };
     278             : 
     279             :   template<typename _Compare, typename _Iterator>
     280             :     inline _Iter_comp_to_iter<_Compare, _Iterator>
     281             :     __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it)
     282             :     { return _Iter_comp_to_iter<_Compare, _Iterator>(__comp._M_comp, __it); }
     283             : 
     284             :   template<typename _Predicate>
     285             :     struct _Iter_negate
     286             :     {
     287             :       _Predicate _M_pred;
     288             : 
     289             :       _Iter_negate(_Predicate __pred)
     290             :         : _M_pred(__pred)
     291             :       { }
     292             : 
     293             :       template<typename _Iterator>
     294             :         bool
     295             :         operator()(_Iterator __it)
     296             :         { return !bool(_M_pred(*__it)); }
     297             :     };
     298             : 
     299             :   template<typename _Predicate>
     300             :     inline _Iter_negate<_Predicate>
     301             :     __negate(_Iter_pred<_Predicate> __pred)
     302             :     { return _Iter_negate<_Predicate>(__pred._M_pred); }
     303             : 
     304             : } // namespace __ops
     305             : } // namespace __gnu_cxx
     306             : 
     307             : #endif

Generated by: LCOV version 1.12