9
9
class XRCORE_API doug_lea_allocator
10
10
{
11
11
public:
12
- doug_lea_allocator (void * arena, u32 arena_size, pcstr arena_id);
12
+ doug_lea_allocator (void * arena, size_t arena_size, pcstr arena_id);
13
13
~doug_lea_allocator ();
14
- void * malloc_impl (u32 size);
15
- void * realloc_impl (void * pointer, u32 new_size);
16
- void free_impl (void *& pointer);
17
- u32 get_allocated_size () const ;
14
+ void * malloc_impl (size_t size);
15
+ void * realloc_impl (void * pointer, size_t new_size);
16
+ void free_impl (void * pointer);
17
+ size_t get_allocated_size () const ;
18
18
pcstr get_arena_id () const { return m_arena_id; }
19
19
template <typename T>
20
20
void free_impl (T*& pointer)
@@ -23,7 +23,7 @@ class XRCORE_API doug_lea_allocator
23
23
}
24
24
25
25
template <typename T>
26
- T* alloc_impl (u32 const count)
26
+ T* alloc_impl (const size_t count)
27
27
{
28
28
return (T*)malloc_impl (count * sizeof (T));
29
29
}
@@ -33,74 +33,73 @@ class XRCORE_API doug_lea_allocator
33
33
void * m_dl_arena;
34
34
};
35
35
36
- extern doug_lea_allocator g_common_allocator ;
36
+ extern doug_lea_allocator g_common_doug_lea_allocator ;
37
37
38
- template <class T , doug_lea_allocator& _impl = common >
38
+ template <class T , doug_lea_allocator& _impl = g_common_doug_lea_allocator >
39
39
class doug_lea_alloc
40
40
{
41
41
constexpr static doug_lea_allocator& impl = _impl;
42
42
43
43
public:
44
44
using size_type = size_t ;
45
45
using difference_type = ptrdiff_t ;
46
- using pointer = T * ;
46
+ using pointer = T* ;
47
47
using const_pointer = const T*;
48
- using reference = T & ;
48
+ using reference = T& ;
49
49
using const_reference = const T&;
50
50
using value_type = T;
51
51
52
- template <class _Other >
52
+ template <class Other >
53
53
struct rebind
54
54
{
55
- using other = doug_lea_alloc<_Other >;
55
+ using other = doug_lea_alloc<Other >;
56
56
};
57
57
58
- doug_lea_alloc () {}
59
- doug_lea_alloc (const doug_lea_alloc<T>&) {}
58
+ doug_lea_alloc () = default;
59
+ doug_lea_alloc (const doug_lea_alloc<T, _impl >&) = default;
60
60
61
- template <class _Other >
62
- doug_lea_alloc (const doug_lea_alloc<_Other >&) {}
61
+ template <class Other >
62
+ doug_lea_alloc (const doug_lea_alloc<Other >&) {}
63
63
64
- template <class _Other >
65
- doug_lea_alloc<T>& operator =(const doug_lea_alloc<_Other >&)
64
+ template <class Other >
65
+ doug_lea_alloc<T>& operator =(const doug_lea_alloc<Other >&)
66
66
{
67
67
return *this ;
68
68
}
69
69
70
- pointer address (reference _Val ) const { return (&_Val) ; }
71
- const_pointer address (const_reference _Val ) const { return (&_Val) ; }
70
+ pointer address (reference ref ) const { return &ref ; }
71
+ const_pointer address (const_reference ref ) const { return &ref ; }
72
72
73
73
pointer allocate (size_type n, const void * /* p*/ = nullptr ) const
74
74
{
75
- return static_cast <T* >(impl.malloc_impl (sizeof (T) * ( u32 ) n));
75
+ return static_cast <pointer >(impl.malloc_impl (sizeof (T) * n));
76
76
}
77
77
78
- void deallocate (pointer p, size_type) const { impl.free_impl ((void *&)p); }
79
- void deallocate (void * p, size_type n) const { impl.free_impl (p); }
80
- char * __charalloc (size_type n) { return (char *)allocate (n); }
81
- void construct (pointer p, const T& _Val) { new (p) T (_Val); }
78
+ void deallocate (pointer p, size_type /* n*/ ) const { impl.free_impl ((void *&)p); }
79
+ void deallocate (void * p, size_type /* n*/ ) const { impl.free_impl (p); }
80
+ void construct (pointer p, const T& ref) { new (p) T (ref); }
82
81
void destroy (pointer p) { p->~T (); }
83
82
84
83
size_type max_size () const
85
84
{
86
- constexpr size_type _Count = static_cast <size_type>(- 1 ) / sizeof (T);
87
- return 0 < _Count ? _Count : 1 ;
85
+ constexpr auto count = std::numeric_limits <size_type>:: max ( ) / sizeof (T);
86
+ return 0 < count ? count : 1 ;
88
87
}
89
88
};
90
89
91
- template <class _Ty , class _Other >
92
- bool operator ==(const doug_lea_alloc<_Ty >&, const doug_lea_alloc<_Other >&)
90
+ template <class T , class Other >
91
+ bool operator ==(const doug_lea_alloc<T >&, const doug_lea_alloc<Other >&)
93
92
{
94
- return ( true ) ;
93
+ return true ;
95
94
}
96
95
97
- template <class _Ty , class _Other >
98
- bool operator !=(const doug_lea_alloc<_Ty >&, const doug_lea_alloc<_Other >&)
96
+ template <class T , class Other >
97
+ bool operator !=(const doug_lea_alloc<T >&, const doug_lea_alloc<Other >&)
99
98
{
100
- return ( false ) ;
99
+ return false ;
101
100
}
102
101
103
- template <doug_lea_allocator& _impl = common >
102
+ template <doug_lea_allocator& _impl = g_common_doug_lea_allocator >
104
103
struct doug_lea_allocator_wrapper
105
104
{
106
105
constexpr static doug_lea_allocator& impl = _impl;
@@ -111,7 +110,7 @@ struct doug_lea_allocator_wrapper
111
110
using result = doug_lea_alloc<T, _impl>;
112
111
};
113
112
114
- static void * alloc (const u32 & n) { return impl.malloc_impl (( u32 ) n); }
113
+ static void * alloc (const size_t & n) { return impl.malloc_impl (n); }
115
114
116
115
template <typename T>
117
116
static void dealloc (T*& p)
0 commit comments