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

Subversion Repositories altor32

[/] [altor32/] [trunk/] [gcc-x64/] [or1knd-elf/] [or1knd-elf/] [include/] [c++/] [4.8.0/] [typeindex] - Blame information for rev 35

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 35 ultra_embe
// C++0x typeindex -*- C++ -*-
2
 
3
// Copyright (C) 2010, 2011 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
// .
24
 
25
/** @file include/typeindex
26
 *  This is a Standard C++ Library header.
27
 */
28
 
29
#ifndef _GLIBCXX_TYPEINDEX
30
#define _GLIBCXX_TYPEINDEX 1
31
 
32
#pragma GCC system_header
33
 
34
#if __cplusplus < 201103L
35
# include 
36
#else
37
 
38
#include 
39
 
40
namespace std _GLIBCXX_VISIBILITY(default)
41
{
42
_GLIBCXX_BEGIN_NAMESPACE_VERSION
43
 
44
  /**
45
     @brief The class type_index provides a simple wrapper for type_info
46
     which can be used as an index type in associative containers (23.6)
47
     and in unordered associative containers (23.7).
48
   */
49
  struct type_index
50
  {
51
    type_index(const type_info& __rhs) noexcept
52
    : _M_target(&__rhs) { }
53
 
54
    bool
55
    operator==(const type_index& __rhs) const noexcept
56
    { return *_M_target == *__rhs._M_target; }
57
 
58
    bool
59
    operator!=(const type_index& __rhs) const noexcept
60
    { return *_M_target != *__rhs._M_target; }
61
 
62
    bool
63
    operator<(const type_index& __rhs) const noexcept
64
    { return _M_target->before(*__rhs._M_target); }
65
 
66
    bool
67
    operator<=(const type_index& __rhs) const noexcept
68
    { return !__rhs._M_target->before(*_M_target); }
69
 
70
    bool
71
    operator>(const type_index& __rhs) const noexcept
72
    { return __rhs._M_target->before(*_M_target); }
73
 
74
    bool
75
    operator>=(const type_index& __rhs) const noexcept
76
    { return !_M_target->before(*__rhs._M_target); }
77
 
78
    size_t
79
    hash_code() const noexcept
80
    { return _M_target->hash_code(); }
81
 
82
    const char*
83
    name() const
84
    { return _M_target->name(); }
85
 
86
  private:
87
    const type_info* _M_target;
88
  };
89
 
90
  template struct hash;
91
 
92
  /// std::hash specialization for type_index.
93
  template<>
94
    struct hash
95
    {
96
      typedef size_t        result_type;
97
      typedef type_index  argument_type;
98
 
99
      size_t
100
      operator()(const type_index& __ti) const noexcept
101
      { return __ti.hash_code(); }
102
    };
103
 
104
_GLIBCXX_END_NAMESPACE_VERSION
105
} // namespace
106
 
107
#endif  // C++11
108
 
109
#endif  // _GLIBCXX_TYPEINDEX

powered by: WebSVN 2.1.0

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