Home | History | Annotate | Line # | Download | only in std
      1       1.1  mrg // <set> -*- C++ -*-
      2       1.1  mrg 
      3  1.1.1.12  mrg // Copyright (C) 2001-2024 Free Software Foundation, Inc.
      4       1.1  mrg //
      5       1.1  mrg // This file is part of the GNU ISO C++ Library.  This library is free
      6       1.1  mrg // software; you can redistribute it and/or modify it under the
      7       1.1  mrg // terms of the GNU General Public License as published by the
      8       1.1  mrg // Free Software Foundation; either version 3, or (at your option)
      9       1.1  mrg // any later version.
     10       1.1  mrg 
     11       1.1  mrg // This library is distributed in the hope that it will be useful,
     12       1.1  mrg // but WITHOUT ANY WARRANTY; without even the implied warranty of
     13       1.1  mrg // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14       1.1  mrg // GNU General Public License for more details.
     15       1.1  mrg 
     16       1.1  mrg // Under Section 7 of GPL version 3, you are granted additional
     17       1.1  mrg // permissions described in the GCC Runtime Library Exception, version
     18       1.1  mrg // 3.1, as published by the Free Software Foundation.
     19       1.1  mrg 
     20       1.1  mrg // You should have received a copy of the GNU General Public License and
     21       1.1  mrg // a copy of the GCC Runtime Library Exception along with this program;
     22       1.1  mrg // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     23       1.1  mrg // <http://www.gnu.org/licenses/>.
     24       1.1  mrg 
     25       1.1  mrg /*
     26       1.1  mrg  *
     27       1.1  mrg  * Copyright (c) 1994
     28       1.1  mrg  * Hewlett-Packard Company
     29       1.1  mrg  *
     30       1.1  mrg  * Permission to use, copy, modify, distribute and sell this software
     31       1.1  mrg  * and its documentation for any purpose is hereby granted without fee,
     32       1.1  mrg  * provided that the above copyright notice appear in all copies and
     33       1.1  mrg  * that both that copyright notice and this permission notice appear
     34       1.1  mrg  * in supporting documentation.  Hewlett-Packard Company makes no
     35       1.1  mrg  * representations about the suitability of this software for any
     36       1.1  mrg  * purpose.  It is provided "as is" without express or implied warranty.
     37       1.1  mrg  *
     38       1.1  mrg  *
     39       1.1  mrg  * Copyright (c) 1996,1997
     40       1.1  mrg  * Silicon Graphics Computer Systems, Inc.
     41       1.1  mrg  *
     42       1.1  mrg  * Permission to use, copy, modify, distribute and sell this software
     43       1.1  mrg  * and its documentation for any purpose is hereby granted without fee,
     44       1.1  mrg  * provided that the above copyright notice appear in all copies and
     45       1.1  mrg  * that both that copyright notice and this permission notice appear
     46       1.1  mrg  * in supporting documentation.  Silicon Graphics makes no
     47       1.1  mrg  * representations about the suitability of this software for any
     48       1.1  mrg  * purpose.  It is provided "as is" without express or implied warranty.
     49       1.1  mrg  */
     50       1.1  mrg 
     51       1.1  mrg /** @file include/set
     52       1.1  mrg  *  This is a Standard C++ Library header.
     53       1.1  mrg  */
     54       1.1  mrg 
     55       1.1  mrg #ifndef _GLIBCXX_SET
     56       1.1  mrg #define _GLIBCXX_SET 1
     57       1.1  mrg 
     58       1.1  mrg #pragma GCC system_header
     59       1.1  mrg 
     60  1.1.1.12  mrg #include <bits/requires_hosted.h> // containers
     61  1.1.1.12  mrg 
     62       1.1  mrg #include <bits/stl_tree.h>
     63       1.1  mrg #include <bits/stl_set.h>
     64       1.1  mrg #include <bits/stl_multiset.h>
     65   1.1.1.2  mrg #include <bits/range_access.h>
     66   1.1.1.9  mrg #include <bits/erase_if.h>
     67       1.1  mrg 
     68       1.1  mrg #ifdef _GLIBCXX_DEBUG
     69       1.1  mrg # include <debug/set>
     70       1.1  mrg #endif
     71       1.1  mrg 
     72  1.1.1.12  mrg #define __glibcxx_want_allocator_traits_is_always_equal
     73  1.1.1.12  mrg #define __glibcxx_want_erase_if
     74  1.1.1.12  mrg #define __glibcxx_want_generic_associative_lookup
     75  1.1.1.12  mrg #define __glibcxx_want_node_extract
     76  1.1.1.12  mrg #define __glibcxx_want_nonmember_container_access
     77  1.1.1.12  mrg #include <bits/version.h>
     78  1.1.1.12  mrg 
     79   1.1.1.9  mrg #if __cplusplus >= 201703L
     80  1.1.1.12  mrg #include <bits/memory_resource.h>
     81   1.1.1.9  mrg namespace std _GLIBCXX_VISIBILITY(default)
     82   1.1.1.9  mrg {
     83   1.1.1.9  mrg _GLIBCXX_BEGIN_NAMESPACE_VERSION
     84   1.1.1.9  mrg   namespace pmr
     85   1.1.1.9  mrg   {
     86   1.1.1.9  mrg     template<typename _Key, typename _Cmp = std::less<_Key>>
     87   1.1.1.9  mrg       using set = std::set<_Key, _Cmp, polymorphic_allocator<_Key>>;
     88   1.1.1.9  mrg     template<typename _Key, typename _Cmp = std::less<_Key>>
     89   1.1.1.9  mrg       using multiset = std::multiset<_Key, _Cmp, polymorphic_allocator<_Key>>;
     90   1.1.1.9  mrg   } // namespace pmr
     91   1.1.1.9  mrg _GLIBCXX_END_NAMESPACE_VERSION
     92   1.1.1.9  mrg } // namespace std
     93   1.1.1.9  mrg #endif // C++17
     94   1.1.1.9  mrg 
     95   1.1.1.9  mrg #if __cplusplus > 201703L
     96   1.1.1.9  mrg namespace std _GLIBCXX_VISIBILITY(default)
     97   1.1.1.9  mrg {
     98   1.1.1.9  mrg _GLIBCXX_BEGIN_NAMESPACE_VERSION
     99   1.1.1.9  mrg   template<typename _Key, typename _Compare, typename _Alloc,
    100   1.1.1.9  mrg 	   typename _Predicate>
    101   1.1.1.9  mrg     inline typename set<_Key, _Compare, _Alloc>::size_type
    102   1.1.1.9  mrg     erase_if(set<_Key, _Compare, _Alloc>& __cont, _Predicate __pred)
    103  1.1.1.11  mrg     {
    104  1.1.1.11  mrg       _GLIBCXX_STD_C::set<_Key, _Compare, _Alloc>& __ucont = __cont;
    105  1.1.1.11  mrg       return __detail::__erase_nodes_if(__cont, __ucont, __pred);
    106  1.1.1.11  mrg     }
    107   1.1.1.9  mrg 
    108   1.1.1.9  mrg   template<typename _Key, typename _Compare, typename _Alloc,
    109   1.1.1.9  mrg 	   typename _Predicate>
    110   1.1.1.9  mrg     inline typename multiset<_Key, _Compare, _Alloc>::size_type
    111   1.1.1.9  mrg     erase_if(multiset<_Key, _Compare, _Alloc>& __cont, _Predicate __pred)
    112  1.1.1.11  mrg     {
    113  1.1.1.11  mrg       _GLIBCXX_STD_C::multiset<_Key, _Compare, _Alloc>& __ucont = __cont;
    114  1.1.1.11  mrg       return __detail::__erase_nodes_if(__cont, __ucont, __pred);
    115  1.1.1.11  mrg     }
    116   1.1.1.9  mrg _GLIBCXX_END_NAMESPACE_VERSION
    117   1.1.1.9  mrg } // namespace std
    118   1.1.1.9  mrg #endif // C++20
    119   1.1.1.9  mrg 
    120       1.1  mrg #endif /* _GLIBCXX_SET */
    121