mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
Some missing from merge.
Signed-off-by: Salja <salja2012@hotmail.de>
This commit is contained in:
parent
ec939a5bce
commit
f4be15a7af
1895 changed files with 160408 additions and 53601 deletions
|
|
@ -1,3 +1,5 @@
|
|||
// $Id: Array_Map.cpp 92386 2010-10-28 07:44:37Z johnnyw $
|
||||
|
||||
#ifndef ACE_ARRAY_MAP_CPP
|
||||
#define ACE_ARRAY_MAP_CPP
|
||||
|
||||
|
|
@ -13,64 +15,65 @@
|
|||
|
||||
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
template<typename InputIterator>
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::ACE_Array_Map (InputIterator f,
|
||||
InputIterator l)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::ACE_Array_Map (InputIterator f,
|
||||
InputIterator l)
|
||||
: size_ (l - f)
|
||||
, capacity_ (size_)
|
||||
, nodes_ (size_ == 0 ? 0 : this->alloc_.allocate (size_))
|
||||
, nodes_ (size_ == 0 ? 0 : new value_type[size_])
|
||||
{
|
||||
(void) std::uninitialized_copy (f,
|
||||
l,
|
||||
ACE_make_checked_array_iterator (this->begin (),
|
||||
this->size_));
|
||||
(void) std::copy (f,
|
||||
l,
|
||||
ACE_make_checked_array_iterator (this->begin (),
|
||||
this->size_));
|
||||
|
||||
// iterator n = this->begin ();
|
||||
|
||||
// for (InputIterator i = f; i != l; ++i, ++n)
|
||||
// *n = *i;
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::ACE_Array_Map (
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc> const & map)
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
ACE_Array_Map<Key, Value, EqualTo>::ACE_Array_Map (
|
||||
ACE_Array_Map<Key, Value, EqualTo> const & map)
|
||||
: size_ (map.size_)
|
||||
, capacity_ (map.size_)
|
||||
, nodes_ (size_ == 0 ? 0 : this->alloc_.allocate (size_))
|
||||
, nodes_ (size_ == 0 ? 0 : new value_type[size_])
|
||||
{
|
||||
(void) std::uninitialized_copy (map.begin (),
|
||||
map.end (),
|
||||
ACE_make_checked_array_iterator (this->begin (),
|
||||
this->size_));
|
||||
std::copy (map.begin (),
|
||||
map.end (),
|
||||
ACE_make_checked_array_iterator (this->begin (),
|
||||
this->size_));
|
||||
|
||||
// iterator f = map.begin ();
|
||||
// iterator l = map.end ();
|
||||
// iterator n = this->begin ();
|
||||
|
||||
// for (iterator i = f; i != l; ++i, ++n)
|
||||
// *n = *i;
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::~ACE_Array_Map (void)
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
ACE_Array_Map<Key, Value, EqualTo>::~ACE_Array_Map (void)
|
||||
{
|
||||
for (size_t idx = 0; idx != capacity_; ++idx)
|
||||
{
|
||||
#if defined (ACE_HAS_BCC32)
|
||||
using std::pair;
|
||||
(nodes_ + idx)->~pair<key_type, mapped_type>();
|
||||
#else
|
||||
(nodes_ + idx)->~value_type();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
alloc_.deallocate(this->nodes_, capacity_);
|
||||
delete[] this->nodes_;
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::swap (
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc> & map)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::swap (
|
||||
ACE_Array_Map<Key, Value, EqualTo> & map)
|
||||
{
|
||||
std::swap (this->size_, map.size_);
|
||||
std::swap (this->capacity_, map.capacity_);
|
||||
std::swap (this->nodes_, map.nodes_);
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
std::pair<typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator, bool>
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::insert (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::value_type const & x)
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
std::pair<typename ACE_Array_Map<Key, Value, EqualTo>::iterator, bool>
|
||||
ACE_Array_Map<Key, Value, EqualTo>::insert (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::value_type const & x)
|
||||
{
|
||||
// Linear insertion due to linear duplicate key search.
|
||||
|
||||
|
|
@ -95,10 +98,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::insert (
|
|||
return std::make_pair (i, inserted);
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
template<typename InputIterator>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::insert (InputIterator f, InputIterator l)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::insert (InputIterator f, InputIterator l)
|
||||
{
|
||||
this->grow (l - f); // Preallocate storage.
|
||||
|
||||
|
|
@ -108,10 +111,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::insert (InputIterator f, InputIterato
|
|||
}
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator pos)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::iterator pos)
|
||||
{
|
||||
iterator const first = this->begin ();
|
||||
iterator const last = this->end ();
|
||||
|
|
@ -135,10 +138,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::erase (
|
|||
}
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::key_type const & k)
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::size_type
|
||||
ACE_Array_Map<Key, Value, EqualTo>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::key_type const & k)
|
||||
{
|
||||
iterator pos = this->find (k);
|
||||
|
||||
|
|
@ -149,28 +152,28 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::erase (
|
|||
return old_size - this->size_;
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator first,
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator last)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::erase (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::iterator first,
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::iterator last)
|
||||
{
|
||||
if (this->begin () <= first && first < last && last < this->end ())
|
||||
for (iterator i = first; i != last; ++i)
|
||||
this->erase (i);
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::clear (void)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::clear (void)
|
||||
{
|
||||
this->size_ = 0; // No need to deallocate array nor destroy elements.
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::iterator
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::find (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::key_type const & k)
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::iterator
|
||||
ACE_Array_Map<Key, Value, EqualTo>::find (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::key_type const & k)
|
||||
{
|
||||
iterator const the_end = this->end ();
|
||||
|
||||
|
|
@ -183,10 +186,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::find (
|
|||
return this->end ();
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::const_iterator
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::find (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::key_type const & k) const
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::const_iterator
|
||||
ACE_Array_Map<Key, Value, EqualTo>::find (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::key_type const & k) const
|
||||
{
|
||||
const_iterator const the_end = this->end ();
|
||||
|
||||
|
|
@ -199,10 +202,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::find (
|
|||
return this->end ();
|
||||
}
|
||||
|
||||
template<typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template<typename Key, typename Value, class EqualTo>
|
||||
void
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc>::grow (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo, Alloc>::size_type s)
|
||||
ACE_Array_Map<Key, Value, EqualTo>::grow (
|
||||
typename ACE_Array_Map<Key, Value, EqualTo>::size_type s)
|
||||
{
|
||||
if (this->size () + s > this->capacity_)
|
||||
{
|
||||
|
|
@ -211,7 +214,7 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::grow (
|
|||
|
||||
// Strongly exception safe.
|
||||
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc> temp (this->size () + s);
|
||||
ACE_Array_Map<Key, Value, EqualTo> temp (this->size () + s);
|
||||
|
||||
std::copy (this->begin (),
|
||||
this->end (),
|
||||
|
|
@ -230,10 +233,10 @@ ACE_Array_Map<Key, Value, EqualTo, Alloc>::grow (
|
|||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
template <typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template <typename Key, typename Value, class EqualTo>
|
||||
bool
|
||||
operator== (ACE_Array_Map<Key, Value, EqualTo, Alloc> const & lhs,
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc> const & rhs)
|
||||
operator== (ACE_Array_Map<Key, Value, EqualTo> const & lhs,
|
||||
ACE_Array_Map<Key, Value, EqualTo> const & rhs)
|
||||
{
|
||||
// Do not include Array_Map capacity in comparison. It isn't useful
|
||||
// in this case.
|
||||
|
|
@ -245,10 +248,10 @@ operator== (ACE_Array_Map<Key, Value, EqualTo, Alloc> const & lhs,
|
|||
rhs.size ())));
|
||||
}
|
||||
|
||||
template <typename Key, typename Value, class EqualTo, class Alloc>
|
||||
template <typename Key, typename Value, class EqualTo>
|
||||
bool
|
||||
operator< (ACE_Array_Map<Key, Value, EqualTo, Alloc> const & lhs,
|
||||
ACE_Array_Map<Key, Value, EqualTo, Alloc> const & rhs)
|
||||
operator< (ACE_Array_Map<Key, Value, EqualTo> const & lhs,
|
||||
ACE_Array_Map<Key, Value, EqualTo> const & rhs)
|
||||
{
|
||||
return std::lexicographical_compare (lhs.begin (), lhs.end (),
|
||||
rhs.begin (), rhs.end ());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue