OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc3/] [libstdc++-v3/] [include/] [ext/] [pb_ds/] [detail/] [standard_policies.hpp] - Blame information for rev 516

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// -*- C++ -*-
2
 
3
// Copyright (C) 2005, 2006, 2007, 2009 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 terms
7
// of the GNU General Public License as published by the Free Software
8
// Foundation; either version 3, or (at your option) any later
9
// version.
10
 
11
// This library is distributed in the hope that it will be useful, but
12
// WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
// 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
// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
26
 
27
// Permission to use, copy, modify, sell, and distribute this software
28
// is hereby granted without fee, provided that the above copyright
29
// notice appears in all copies, and that both that copyright notice
30
// and this permission notice appear in supporting documentation. None
31
// of the above authors, nor IBM Haifa Research Laboratories, make any
32
// representation about the suitability of this software for any
33
// purpose. It is provided "as is" without express or implied
34
// warranty.
35
 
36
/**
37
 * @file standard_policies.hpp
38
 * Contains standard policies for containers.
39
 */
40
 
41
#ifndef PB_DS_STANDARD_POLICIES_HPP
42
#define PB_DS_STANDARD_POLICIES_HPP
43
 
44
#include <memory>
45
#include <ext/pb_ds/hash_policy.hpp>
46
#include <ext/pb_ds/list_update_policy.hpp>
47
#include <ext/pb_ds/tree_policy.hpp>
48
#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
49
#include <ext/pb_ds/trie_policy.hpp>
50
#include <ext/pb_ds/tag_and_trait.hpp>
51
#include <tr1/functional>
52
 
53
namespace __gnu_pbds
54
{
55
  namespace detail
56
  {
57
    template<typename Key>
58
    struct default_hash_fn
59
    {
60
      typedef std::tr1::hash<Key> type;
61
    };
62
 
63
    template<typename Key>
64
    struct default_eq_fn
65
    {
66
      typedef std::equal_to<Key> type;
67
    };
68
 
69
    enum
70
      {
71
        default_store_hash = false
72
      };
73
 
74
    struct default_comb_hash_fn
75
    {
76
      typedef __gnu_pbds::direct_mask_range_hashing<> type;
77
    };
78
 
79
    template<typename Comb_Hash_Fn>
80
    struct default_resize_policy
81
    {
82
    private:
83
      typedef typename Comb_Hash_Fn::size_type size_type;
84
 
85
      typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
86
      typedef is_same<default_fn, Comb_Hash_Fn> same_type;
87
      typedef __gnu_pbds::hash_exponential_size_policy<size_type> iftrue;
88
      typedef __gnu_pbds::hash_prime_size_policy iffalse;
89
      typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
90
      typedef typename cond_type::__type size_policy_type;
91
 
92
      typedef __gnu_pbds::hash_load_check_resize_trigger<false, size_type> trigger;
93
 
94
    public:
95
      typedef __gnu_pbds::hash_standard_resize_policy<size_policy_type, trigger, false, size_type> type;
96
    };
97
 
98
    struct default_update_policy
99
    {
100
      typedef __gnu_pbds::move_to_front_lu_policy<> type;
101
    };
102
 
103
    template<typename Comb_Probe_Fn>
104
    struct default_probe_fn
105
    {
106
    private:
107
      typedef typename Comb_Probe_Fn::size_type size_type;
108
 
109
      typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
110
      typedef is_same<default_fn, Comb_Probe_Fn> same_type;
111
      typedef __gnu_pbds::linear_probe_fn<size_type> iftrue;
112
      typedef __gnu_pbds::quadratic_probe_fn<size_type> iffalse;
113
      typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
114
 
115
    public:
116
      typedef typename cond_type::__type type;
117
    };
118
 
119
    template<typename Key>
120
    struct default_trie_e_access_traits;
121
 
122
    template<typename Char, class Char_Traits>
123
    struct default_trie_e_access_traits<std::basic_string<Char, Char_Traits, std::allocator<char> > >
124
    {
125
    private:
126
      typedef std::basic_string<Char, Char_Traits, std::allocator<char> > string_type;
127
 
128
    public:
129
      typedef __gnu_pbds::string_trie_e_access_traits<string_type> type;
130
    };
131
 
132
  } // namespace detail
133
} // namespace __gnu_pbds
134
 
135
#endif // #ifndef PB_DS_STANDARD_POLICIES_HPP
136
 

powered by: WebSVN 2.1.0

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