stl_alloc.h: Reformat as per C++STYLE.
2002-06-24 Phil Edwards <pme@gcc.gnu.org> * include/bits/stl_alloc.h: Reformat as per C++STYLE. From-SVN: r54949
This commit is contained in:
parent
6f68de5b29
commit
2c35c7be14
@ -1,3 +1,7 @@
|
|||||||
|
2002-06-24 Phil Edwards <pme@gcc.gnu.org>
|
||||||
|
|
||||||
|
* include/bits/stl_alloc.h: Reformat as per C++STYLE.
|
||||||
|
|
||||||
2002-06-24 Phil Edwards <pme@gcc.gnu.org>
|
2002-06-24 Phil Edwards <pme@gcc.gnu.org>
|
||||||
|
|
||||||
* config/cpu/*/bits/*: Move header files up a level. Remove bits.
|
* config/cpu/*/bits/*: Move header files up a level. Remove bits.
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @if maint
|
* @if maint
|
||||||
* A new-based allocator, as required by the standard. Allocation and
|
* A new-based allocator, as required by the standard. Allocation and
|
||||||
@ -161,7 +162,8 @@ namespace std
|
|||||||
|
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
void*
|
void*
|
||||||
__malloc_alloc_template<__inst>::_S_oom_malloc(size_t __n)
|
__malloc_alloc_template<__inst>::
|
||||||
|
_S_oom_malloc(size_t __n)
|
||||||
{
|
{
|
||||||
void (* __my_malloc_handler)();
|
void (* __my_malloc_handler)();
|
||||||
void* __result;
|
void* __result;
|
||||||
@ -180,7 +182,8 @@ namespace std
|
|||||||
|
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
void*
|
void*
|
||||||
__malloc_alloc_template<__inst>::_S_oom_realloc(void* __p, size_t __n)
|
__malloc_alloc_template<__inst>::
|
||||||
|
_S_oom_realloc(void* __p, size_t __n)
|
||||||
{
|
{
|
||||||
void (* __my_malloc_handler)();
|
void (* __my_malloc_handler)();
|
||||||
void* __result;
|
void* __result;
|
||||||
@ -220,16 +223,20 @@ namespace std
|
|||||||
class __simple_alloc
|
class __simple_alloc
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static _Tp* allocate(size_t __n)
|
static _Tp*
|
||||||
|
allocate(size_t __n)
|
||||||
{ return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); }
|
{ return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp)); }
|
||||||
|
|
||||||
static _Tp* allocate()
|
static _Tp*
|
||||||
|
allocate()
|
||||||
{ return (_Tp*) _Alloc::allocate(sizeof (_Tp)); }
|
{ return (_Tp*) _Alloc::allocate(sizeof (_Tp)); }
|
||||||
|
|
||||||
static void deallocate(_Tp* __p, size_t __n)
|
static void
|
||||||
|
deallocate(_Tp* __p, size_t __n)
|
||||||
{ if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); }
|
{ if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); }
|
||||||
|
|
||||||
static void deallocate(_Tp* __p)
|
static void
|
||||||
|
deallocate(_Tp* __p)
|
||||||
{ _Alloc::deallocate(__p, sizeof (_Tp)); }
|
{ _Alloc::deallocate(__p, sizeof (_Tp)); }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -256,22 +263,24 @@ namespace std
|
|||||||
// must be large enough to preserve alignment.
|
// must be large enough to preserve alignment.
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static void*
|
||||||
static void* allocate(size_t __n)
|
allocate(size_t __n)
|
||||||
{
|
{
|
||||||
char* __result = (char*)_Alloc::allocate(__n + (int) _S_extra);
|
char* __result = (char*)_Alloc::allocate(__n + (int) _S_extra);
|
||||||
*(size_t*)__result = __n;
|
*(size_t*)__result = __n;
|
||||||
return __result + (int) _S_extra;
|
return __result + (int) _S_extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deallocate(void* __p, size_t __n)
|
static void
|
||||||
|
deallocate(void* __p, size_t __n)
|
||||||
{
|
{
|
||||||
char* __real_p = (char*)__p - (int) _S_extra;
|
char* __real_p = (char*)__p - (int) _S_extra;
|
||||||
assert(*(size_t*)__real_p == __n);
|
assert(*(size_t*)__real_p == __n);
|
||||||
_Alloc::deallocate(__real_p, __n + (int) _S_extra);
|
_Alloc::deallocate(__real_p, __n + (int) _S_extra);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void* reallocate(void* __p, size_t __old_sz, size_t __new_sz)
|
static void*
|
||||||
|
reallocate(void* __p, size_t __old_sz, size_t __new_sz)
|
||||||
{
|
{
|
||||||
char* __real_p = (char*)__p - (int) _S_extra;
|
char* __real_p = (char*)__p - (int) _S_extra;
|
||||||
assert(*(size_t*)__real_p == __old_sz);
|
assert(*(size_t*)__real_p == __old_sz);
|
||||||
@ -364,13 +373,12 @@ template<bool __threads, int __inst>
|
|||||||
|
|
||||||
// It would be nice to use _STL_auto_lock here. But we need a
|
// It would be nice to use _STL_auto_lock here. But we need a
|
||||||
// test whether threads are in use.
|
// test whether threads are in use.
|
||||||
class _Lock
|
struct _Lock
|
||||||
{
|
{
|
||||||
public:
|
|
||||||
_Lock() { if (__threads) _S_node_allocator_lock._M_acquire_lock(); }
|
_Lock() { if (__threads) _S_node_allocator_lock._M_acquire_lock(); }
|
||||||
~_Lock() { if (__threads) _S_node_allocator_lock._M_release_lock(); }
|
~_Lock() { if (__threads) _S_node_allocator_lock._M_release_lock(); }
|
||||||
} __attribute__ ((__unused__));
|
} __attribute__ ((__unused__));
|
||||||
friend class _Lock;
|
friend struct _Lock;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// __n must be > 0
|
// __n must be > 0
|
||||||
@ -383,11 +391,9 @@ template<bool __threads, int __inst>
|
|||||||
__ret = __mem_interface::allocate(__n);
|
__ret = __mem_interface::allocate(__n);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_Obj* volatile* __my_free_list = _S_free_list
|
_Obj* volatile* __my_free_list = _S_free_list + _S_freelist_index(__n);
|
||||||
+ _S_freelist_index(__n);
|
// Acquire the lock here with a constructor call. This ensures that
|
||||||
// Acquire the lock here with a constructor call. This
|
// it is released in exit or during stack unwinding.
|
||||||
// ensures that it is released in exit or during stack
|
|
||||||
// unwinding.
|
|
||||||
_Lock __lock_instance;
|
_Lock __lock_instance;
|
||||||
_Obj* __restrict__ __result = *__my_free_list;
|
_Obj* __restrict__ __result = *__my_free_list;
|
||||||
if (__result == 0)
|
if (__result == 0)
|
||||||
@ -409,8 +415,7 @@ template<bool __threads, int __inst>
|
|||||||
__mem_interface::deallocate(__p, __n);
|
__mem_interface::deallocate(__p, __n);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_Obj* volatile* __my_free_list
|
_Obj* volatile* __my_free_list = _S_free_list + _S_freelist_index(__n);
|
||||||
= _S_free_list + _S_freelist_index(__n);
|
|
||||||
_Obj* __q = (_Obj*)__p;
|
_Obj* __q = (_Obj*)__p;
|
||||||
|
|
||||||
// Acquire the lock here with a constructor call. This ensures that
|
// Acquire the lock here with a constructor call. This ensures that
|
||||||
@ -444,8 +449,8 @@ template<bool __threads, int __inst>
|
|||||||
// that __size is properly aligned. We hold the allocation lock.
|
// that __size is properly aligned. We hold the allocation lock.
|
||||||
template<bool __threads, int __inst>
|
template<bool __threads, int __inst>
|
||||||
char*
|
char*
|
||||||
__default_alloc_template<__threads, __inst>::_S_chunk_alloc(size_t __size,
|
__default_alloc_template<__threads, __inst>::
|
||||||
int& __nobjs)
|
_S_chunk_alloc(size_t __size, int& __nobjs)
|
||||||
{
|
{
|
||||||
char* __result;
|
char* __result;
|
||||||
size_t __total_bytes = __size * __nobjs;
|
size_t __total_bytes = __size * __nobjs;
|
||||||
@ -519,7 +524,8 @@ template<bool __threads, int __inst>
|
|||||||
// hold the allocation lock.
|
// hold the allocation lock.
|
||||||
template<bool __threads, int __inst>
|
template<bool __threads, int __inst>
|
||||||
void*
|
void*
|
||||||
__default_alloc_template<__threads, __inst>::_S_refill(size_t __n)
|
__default_alloc_template<__threads, __inst>::
|
||||||
|
_S_refill(size_t __n)
|
||||||
{
|
{
|
||||||
int __nobjs = 20;
|
int __nobjs = 20;
|
||||||
char* __chunk = _S_chunk_alloc(__n, __nobjs);
|
char* __chunk = _S_chunk_alloc(__n, __nobjs);
|
||||||
@ -529,19 +535,24 @@ template<bool __threads, int __inst>
|
|||||||
_Obj* __next_obj;
|
_Obj* __next_obj;
|
||||||
int __i;
|
int __i;
|
||||||
|
|
||||||
if (1 == __nobjs) return(__chunk);
|
if (1 == __nobjs)
|
||||||
|
return(__chunk);
|
||||||
__my_free_list = _S_free_list + _S_freelist_index(__n);
|
__my_free_list = _S_free_list + _S_freelist_index(__n);
|
||||||
|
|
||||||
/* Build free list in chunk */
|
/* Build free list in chunk */
|
||||||
__result = (_Obj*)__chunk;
|
__result = (_Obj*)__chunk;
|
||||||
*__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
|
*__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
|
||||||
for (__i = 1; ; __i++) {
|
for (__i = 1; ; __i++)
|
||||||
|
{
|
||||||
__current_obj = __next_obj;
|
__current_obj = __next_obj;
|
||||||
__next_obj = (_Obj*)((char*)__next_obj + __n);
|
__next_obj = (_Obj*)((char*)__next_obj + __n);
|
||||||
if (__nobjs - 1 == __i) {
|
if (__nobjs - 1 == __i)
|
||||||
|
{
|
||||||
__current_obj -> _M_free_list_link = 0;
|
__current_obj -> _M_free_list_link = 0;
|
||||||
break;
|
break;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
__current_obj -> _M_free_list_link = __next_obj;
|
__current_obj -> _M_free_list_link = __next_obj;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -551,17 +562,16 @@ template<bool __threads, int __inst>
|
|||||||
|
|
||||||
template<bool threads, int inst>
|
template<bool threads, int inst>
|
||||||
void*
|
void*
|
||||||
__default_alloc_template<threads, inst>::reallocate(void* __p,
|
__default_alloc_template<threads, inst>::
|
||||||
size_t __old_sz,
|
reallocate(void* __p, size_t __old_sz, size_t __new_sz)
|
||||||
size_t __new_sz)
|
|
||||||
{
|
{
|
||||||
void* __result;
|
void* __result;
|
||||||
size_t __copy_sz;
|
size_t __copy_sz;
|
||||||
|
|
||||||
if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES) {
|
if (__old_sz > (size_t) _MAX_BYTES && __new_sz > (size_t) _MAX_BYTES)
|
||||||
return(realloc(__p, __new_sz));
|
return(realloc(__p, __new_sz));
|
||||||
}
|
if (_S_round_up(__old_sz) == _S_round_up(__new_sz))
|
||||||
if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return(__p);
|
return(__p);
|
||||||
__result = allocate(__new_sz);
|
__result = allocate(__new_sz);
|
||||||
__copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
|
__copy_sz = __new_sz > __old_sz? __old_sz : __new_sz;
|
||||||
memcpy(__result, __p, __copy_sz);
|
memcpy(__result, __p, __copy_sz);
|
||||||
@ -637,24 +647,28 @@ public:
|
|||||||
|
|
||||||
// __n is permitted to be 0. The C++ standard says nothing about what
|
// __n is permitted to be 0. The C++ standard says nothing about what
|
||||||
// the return value is when __n == 0.
|
// the return value is when __n == 0.
|
||||||
_Tp* allocate(size_type __n, const void* = 0) {
|
_Tp*
|
||||||
|
allocate(size_type __n, const void* = 0)
|
||||||
|
{
|
||||||
return __n != 0 ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)))
|
return __n != 0 ? static_cast<_Tp*>(_Alloc::allocate(__n * sizeof(_Tp)))
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __p is not permitted to be a null pointer.
|
// __p is not permitted to be a null pointer.
|
||||||
void deallocate(pointer __p, size_type __n)
|
void
|
||||||
|
deallocate(pointer __p, size_type __n)
|
||||||
{ _Alloc::deallocate(__p, __n * sizeof(_Tp)); }
|
{ _Alloc::deallocate(__p, __n * sizeof(_Tp)); }
|
||||||
|
|
||||||
size_type max_size() const throw()
|
size_type
|
||||||
{ return size_t(-1) / sizeof(_Tp); }
|
max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
|
||||||
|
|
||||||
void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
|
void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
|
||||||
void destroy(pointer __p) { __p->~_Tp(); }
|
void destroy(pointer __p) { __p->~_Tp(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
class allocator<void> {
|
class allocator<void>
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
typedef ptrdiff_t difference_type;
|
typedef ptrdiff_t difference_type;
|
||||||
@ -669,16 +683,14 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
template <class _T1, class _T2>
|
template <class _T1, class _T2>
|
||||||
inline bool operator==(const allocator<_T1>&, const allocator<_T2>&)
|
inline bool
|
||||||
{
|
operator==(const allocator<_T1>&, const allocator<_T2>&)
|
||||||
return true;
|
{ return true; }
|
||||||
}
|
|
||||||
|
|
||||||
template <class _T1, class _T2>
|
template <class _T1, class _T2>
|
||||||
inline bool operator!=(const allocator<_T1>&, const allocator<_T2>&)
|
inline bool
|
||||||
{
|
operator!=(const allocator<_T1>&, const allocator<_T2>&)
|
||||||
return false;
|
{ return false; }
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -721,25 +733,29 @@ struct __allocator
|
|||||||
const_pointer address(const_reference __x) const { return &__x; }
|
const_pointer address(const_reference __x) const { return &__x; }
|
||||||
|
|
||||||
// __n is permitted to be 0.
|
// __n is permitted to be 0.
|
||||||
_Tp* allocate(size_type __n, const void* = 0) {
|
_Tp*
|
||||||
|
allocate(size_type __n, const void* = 0)
|
||||||
|
{
|
||||||
return __n != 0
|
return __n != 0
|
||||||
? static_cast<_Tp*>(__underlying_alloc.allocate(__n * sizeof(_Tp)))
|
? static_cast<_Tp*>(__underlying_alloc.allocate(__n * sizeof(_Tp)))
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// __p is not permitted to be a null pointer.
|
// __p is not permitted to be a null pointer.
|
||||||
void deallocate(pointer __p, size_type __n)
|
void
|
||||||
|
deallocate(pointer __p, size_type __n)
|
||||||
{ __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
|
{ __underlying_alloc.deallocate(__p, __n * sizeof(_Tp)); }
|
||||||
|
|
||||||
size_type max_size() const throw()
|
size_type
|
||||||
{ return size_t(-1) / sizeof(_Tp); }
|
max_size() const throw() { return size_t(-1) / sizeof(_Tp); }
|
||||||
|
|
||||||
void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
|
void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); }
|
||||||
void destroy(pointer __p) { __p->~_Tp(); }
|
void destroy(pointer __p) { __p->~_Tp(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class _Alloc>
|
template <class _Alloc>
|
||||||
class __allocator<void, _Alloc> {
|
class __allocator<void, _Alloc>
|
||||||
|
{
|
||||||
typedef size_t size_type;
|
typedef size_t size_type;
|
||||||
typedef ptrdiff_t difference_type;
|
typedef ptrdiff_t difference_type;
|
||||||
typedef void* pointer;
|
typedef void* pointer;
|
||||||
@ -752,18 +768,16 @@ class __allocator<void, _Alloc> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
inline bool operator==(const __allocator<_Tp, _Alloc>& __a1,
|
inline bool
|
||||||
|
operator==(const __allocator<_Tp,_Alloc>& __a1,
|
||||||
const __allocator<_Tp,_Alloc>& __a2)
|
const __allocator<_Tp,_Alloc>& __a2)
|
||||||
{
|
{ return __a1.__underlying_alloc == __a2.__underlying_alloc; }
|
||||||
return __a1.__underlying_alloc == __a2.__underlying_alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class _Tp, class _Alloc>
|
template <class _Tp, class _Alloc>
|
||||||
inline bool operator!=(const __allocator<_Tp, _Alloc>& __a1,
|
inline bool
|
||||||
|
operator!=(const __allocator<_Tp, _Alloc>& __a1,
|
||||||
const __allocator<_Tp, _Alloc>& __a2)
|
const __allocator<_Tp, _Alloc>& __a2)
|
||||||
{
|
{ return __a1.__underlying_alloc != __a2.__underlying_alloc; }
|
||||||
return __a1.__underlying_alloc != __a2.__underlying_alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//@{
|
//@{
|
||||||
@ -772,30 +786,28 @@ inline bool operator!=(const __allocator<_Tp, _Alloc>& __a1,
|
|||||||
* correctly. As required, all allocators compare equal.
|
* correctly. As required, all allocators compare equal.
|
||||||
*/
|
*/
|
||||||
template <int inst>
|
template <int inst>
|
||||||
inline bool operator==(const __malloc_alloc_template<inst>&,
|
inline bool
|
||||||
|
operator==(const __malloc_alloc_template<inst>&,
|
||||||
const __malloc_alloc_template<inst>&)
|
const __malloc_alloc_template<inst>&)
|
||||||
{
|
{ return true; }
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
inline bool operator!=(const __malloc_alloc_template<__inst>&,
|
inline bool
|
||||||
|
operator!=(const __malloc_alloc_template<__inst>&,
|
||||||
const __malloc_alloc_template<__inst>&)
|
const __malloc_alloc_template<__inst>&)
|
||||||
{
|
{ return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <class _Alloc>
|
template <class _Alloc>
|
||||||
inline bool operator==(const __debug_alloc<_Alloc>&,
|
inline bool
|
||||||
const __debug_alloc<_Alloc>&) {
|
operator==(const __debug_alloc<_Alloc>&,
|
||||||
return true;
|
const __debug_alloc<_Alloc>&)
|
||||||
}
|
{ return true; }
|
||||||
|
|
||||||
template <class _Alloc>
|
template <class _Alloc>
|
||||||
inline bool operator!=(const __debug_alloc<_Alloc>&,
|
inline bool
|
||||||
const __debug_alloc<_Alloc>&) {
|
operator!=(const __debug_alloc<_Alloc>&,
|
||||||
return false;
|
const __debug_alloc<_Alloc>&)
|
||||||
}
|
{ return false; }
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
|
|
||||||
@ -935,7 +947,3 @@ struct _Alloc_traits<_Tp, __allocator<_Tp1, __debug_alloc<_Alloc> > >
|
|||||||
} // namespace std
|
} // namespace std
|
||||||
|
|
||||||
#endif /* __GLIBCPP_INTERNAL_ALLOC_H */
|
#endif /* __GLIBCPP_INTERNAL_ALLOC_H */
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode:C++
|
|
||||||
// End:
|
|
||||||
|
Loading…
Reference in New Issue
Block a user