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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [libstdc++-v3/] [include/] [ext/] [pb_ds/] [detail/] [list_update_map_/] [constructor_destructor_fn_imps.hpp] - Blame information for rev 424

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// -*- C++ -*-
2
 
3
// Copyright (C) 2005, 2006, 2007, 2008, 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 constructor_destructor_fn_imps.hpp
38
 * Contains implementations of PB_DS_CLASS_NAME.
39
 */
40
 
41
PB_DS_CLASS_T_DEC
42
typename PB_DS_CLASS_C_DEC::entry_allocator
43
PB_DS_CLASS_C_DEC::s_entry_allocator;
44
 
45
PB_DS_CLASS_T_DEC
46
Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn;
47
 
48
PB_DS_CLASS_T_DEC
49
null_lu_metadata PB_DS_CLASS_C_DEC::s_null_lu_metadata;
50
 
51
PB_DS_CLASS_T_DEC
52
Update_Policy PB_DS_CLASS_C_DEC::s_update_policy;
53
 
54
PB_DS_CLASS_T_DEC
55
type_to_type<
56
  typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator;
57
 
58
PB_DS_CLASS_T_DEC
59
template<typename It>
60
void
61
PB_DS_CLASS_C_DEC::
62
copy_from_range(It first_it, It last_it)
63
{
64
  while (first_it != last_it)
65
    insert(*(first_it++));
66
}
67
 
68
PB_DS_CLASS_T_DEC
69
PB_DS_CLASS_C_DEC::
70
PB_DS_CLASS_NAME() : m_p_l(NULL)
71
{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
72
 
73
PB_DS_CLASS_T_DEC
74
template<typename It>
75
PB_DS_CLASS_C_DEC::
76
PB_DS_CLASS_NAME(It first_it, It last_it) : m_p_l(NULL)
77
{
78
  copy_from_range(first_it, last_it);
79
  _GLIBCXX_DEBUG_ONLY(assert_valid(););
80
}
81
 
82
PB_DS_CLASS_T_DEC
83
PB_DS_CLASS_C_DEC::
84
PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
85
#ifdef _GLIBCXX_DEBUG
86
  debug_base(),
87
#endif
88
m_p_l(NULL)
89
{
90
  __try
91
    {
92
      for (const_iterator it = other.begin(); it != other.end(); ++it)
93
        {
94
          entry_pointer p_l = allocate_new_entry(*it,
95
                        PB_DS_TYPES_TRAITS_C_DEC::m_no_throw_copies_indicator);
96
 
97
          p_l->m_p_next = m_p_l;
98
          m_p_l = p_l;
99
        }
100
    }
101
  __catch(...)
102
    {
103
      deallocate_all();
104
      __throw_exception_again;
105
    }
106
  _GLIBCXX_DEBUG_ONLY(assert_valid();)
107
}
108
 
109
PB_DS_CLASS_T_DEC
110
void
111
PB_DS_CLASS_C_DEC::
112
swap(PB_DS_CLASS_C_DEC& other)
113
{
114
  _GLIBCXX_DEBUG_ONLY(assert_valid();)
115
  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
116
  _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
117
  std::swap(m_p_l, other.m_p_l);
118
  _GLIBCXX_DEBUG_ONLY(assert_valid();)
119
  _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
120
}
121
 
122
PB_DS_CLASS_T_DEC
123
void
124
PB_DS_CLASS_C_DEC::
125
deallocate_all()
126
{
127
  entry_pointer p_l = m_p_l;
128
  while (p_l != NULL)
129
    {
130
      entry_pointer p_next_l = p_l->m_p_next;
131
      actual_erase_entry(p_l);
132
      p_l = p_next_l;
133
    }
134
  m_p_l = NULL;
135
}
136
 
137
PB_DS_CLASS_T_DEC
138
PB_DS_CLASS_C_DEC::
139
~PB_DS_CLASS_NAME()
140
{ deallocate_all(); }
141
 

powered by: WebSVN 2.1.0

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