OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [include/] [tr1/] [unordered_set] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 jlechner
// TR1 unordered_set -*- C++ -*-
2
 
3
// Copyright (C) 2005 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 2, 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
// You should have received a copy of the GNU General Public License along
17
// with this library; see the file COPYING.  If not, write to the Free
18
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19
// USA.
20
 
21
// As a special exception, you may use this file as part of a free software
22
// library without restriction.  Specifically, if other files instantiate
23
// templates or use macros or inline functions from this file, or you compile
24
// this file and link it with other files to produce an executable, this
25
// file does not by itself cause the resulting executable to be covered by
26
// the GNU General Public License.  This exception does not however
27
// invalidate any other reasons why the executable file might be covered by
28
// the GNU General Public License.
29
 
30
/** @file
31
 *  This is a TR1 C++ Library header.
32
 */
33
 
34
#ifndef GNU_LIBSTDCXX_TR1_UNORDERED_SET_
35
#define GNU_LIBSTDCXX_TR1_UNORDERED_SET_
36
 
37
#include 
38
#include 
39
#include 
40
 
41
namespace std
42
{
43
namespace tr1
44
{
45
 
46
  // XXX When we get typedef templates these class definitions
47
  // will be unnecessary.
48
 
49
  template
50
           class Hash = hash,
51
           class Pred = std::equal_to,
52
           class Alloc = std::allocator,
53
           bool cache_hash_code = false>
54
    class unordered_set
55
    : public hashtable
56
                       Internal::identity, Pred,
57
                       Hash, Internal::mod_range_hashing,
58
                       Internal::default_ranged_hash,
59
                       Internal::prime_rehash_policy,
60
                       cache_hash_code, true, true>
61
    {
62
      typedef hashtable
63
                        Internal::identity, Pred,
64
                        Hash, Internal::mod_range_hashing,
65
                        Internal::default_ranged_hash,
66
                        Internal::prime_rehash_policy,
67
                        cache_hash_code, true, true>
68
        Base;
69
 
70
    public:
71
      typedef typename Base::size_type size_type;
72
      typedef typename Base::hasher hasher;
73
      typedef typename Base::key_equal key_equal;
74
      typedef typename Base::allocator_type allocator_type;
75
 
76
      explicit
77
      unordered_set(size_type n = 10,
78
                    const hasher& hf = hasher(),
79
                    const key_equal& eql = key_equal(),
80
                    const allocator_type& a = allocator_type())
81
      : Base (n, hf, Internal::mod_range_hashing(),
82
              Internal::default_ranged_hash(),
83
              eql, Internal::identity(), a)
84
      { }
85
 
86
      template
87
        unordered_set(InputIterator f, InputIterator l,
88
                      size_type n = 10,
89
                      const hasher& hf = hasher(),
90
                      const key_equal& eql = key_equal(),
91
                      const allocator_type& a = allocator_type())
92
        : Base (f, l, n, hf, Internal::mod_range_hashing(),
93
                Internal::default_ranged_hash(),
94
                eql, Internal::identity(), a)
95
        { }
96
    };
97
 
98
  template
99
           class Hash = hash,
100
           class Pred = std::equal_to,
101
           class Alloc = std::allocator,
102
           bool cache_hash_code = false>
103
    class unordered_multiset
104
    : public hashtable 
105
                        Internal::identity, Pred,
106
                        Hash, Internal::mod_range_hashing,
107
                        Internal::default_ranged_hash,
108
                        Internal::prime_rehash_policy,
109
                        cache_hash_code, true, false>
110
    {
111
      typedef hashtable
112
                        Internal::identity, Pred,
113
                        Hash, Internal::mod_range_hashing,
114
                        Internal::default_ranged_hash,
115
                        Internal::prime_rehash_policy,
116
                        cache_hash_code, true, false>
117
        Base;
118
 
119
    public:
120
      typedef typename Base::size_type size_type;
121
      typedef typename Base::hasher hasher;
122
      typedef typename Base::key_equal key_equal;
123
      typedef typename Base::allocator_type allocator_type;
124
 
125
      explicit
126
      unordered_multiset(size_type n = 10,
127
                         const hasher& hf = hasher(),
128
                         const key_equal& eql = key_equal(),
129
                         const allocator_type& a = allocator_type())
130
      : Base (n, hf, Internal::mod_range_hashing(),
131
              Internal::default_ranged_hash(),
132
              eql, Internal::identity(), a)
133
      { }
134
 
135
 
136
      template
137
        unordered_multiset(InputIterator f, InputIterator l,
138
                           typename Base::size_type n = 0,
139
                           const hasher& hf = hasher(),
140
                           const key_equal& eql = key_equal(),
141
                           const allocator_type& a = allocator_type())
142
        : Base (f, l, n, hf, Internal::mod_range_hashing(),
143
                Internal::default_ranged_hash(), eql,
144
                Internal::identity(), a)
145
        { }
146
    };
147
 
148
  template
149
           bool cache_hash_code>
150
    inline void
151
    swap (unordered_set& x,
152
          unordered_set& y)
153
    { x.swap(y); }
154
 
155
  template
156
           bool cache_hash_code>
157
    inline void
158
    swap(unordered_multiset& x,
159
         unordered_multiset& y)
160
   { x.swap(y); }
161
 
162
}
163
}
164
 
165
#endif /* GNU_LIBSTDCXX_TR1_UNORDERED_SET_ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.