summaryrefslogtreecommitdiff
path: root/ACE/ace/Array_Map.inl
blob: d9c8978332fcb37300e430e7d22288e0900621d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// -*- C++ -*-
ACE_BEGIN_VERSIONED_NAMESPACE_DECL

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE
ACE_Array_Map<Key, Value, EqualTo, Alloc>::ACE_Array_Map (
  typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type s)
  : size_ (0)
  , capacity_ (s)
  , nodes_ (s == 0 ? 0 : this->alloc_.allocate (s))
{
  std::uninitialized_fill_n (this->nodes_, s, value_type ());
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE ACE_Array_Map<Key, Value, EqualTo, Alloc> &
ACE_Array_Map<Key, Value, EqualTo, Alloc>::operator= (
  ACE_Array_Map<Key, Value, EqualTo, Alloc> const & map)
{
  // Strongly exception-safe assignment.

  ACE_Array_Map<Key, Value, EqualTo, Alloc> temp (map);
  this->swap (temp);
  return *this;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::begin ()
{
  return this->nodes_;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::end ()
{
  return this->nodes_ + this->size_;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::const_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::begin () const
{
  return this->nodes_;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::const_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::end () const
{
  return this->nodes_ + this->size_;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::reverse_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::rbegin ()
{
  return reverse_iterator (this->end ());
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::reverse_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::rend ()
{
  return reverse_iterator (this->begin ());
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::const_reverse_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::rbegin () const
{
  return const_reverse_iterator (this->end ());
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::const_reverse_iterator
ACE_Array_Map<Key, Value, EqualTo, Alloc>::rend () const
{
  return const_reverse_iterator (this->begin ());
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type
ACE_Array_Map<Key, Value, EqualTo, Alloc>::size () const
{
  return this->size_;
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type
ACE_Array_Map<Key, Value, EqualTo, Alloc>::max_size () const
{
  return size_type (-1) / sizeof (value_type);
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE bool
ACE_Array_Map<Key, Value, EqualTo, Alloc>::is_empty () const
{
  return this->size_ == 0;
}

// The following method is deprecated.

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE bool
ACE_Array_Map<Key, Value, EqualTo, Alloc>::empty () const
{
  return this->is_empty ();
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type
ACE_Array_Map<Key, Value, EqualTo, Alloc>::count (
  typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::key_type const & k)
{
  return
    (this->find (k) == this->end () ? 0 : 1); // Only one datum per key.
}

template<typename Key, typename Value, class EqualTo, class Alloc>
ACE_INLINE typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::mapped_type &
ACE_Array_Map<Key, Value, EqualTo, Alloc>::operator[] (
  typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::key_type const & k)
{
  iterator i = (this->insert (value_type (k, mapped_type ()))).first;
  return (*i).second;
}

ACE_END_VERSIONED_NAMESPACE_DECL