mirror of
https://github.com/godotengine/godot.git
synced 2024-11-21 03:18:37 +08:00
Add the possibility to initialize the classes allocated with the PagedAllocator
It uses the (`const T &&... p_args`) forward reference, to avoid copying the memory in case it's an rvalue, or pass a reference in case it's an lvalue. This is an example: ```c++ PagedAllocator<btShapeBox> box_allocator; btShapeBox* box = box_allocator.alloc( btVector3(1.0, 1.0, 1.0) ); ```
This commit is contained in:
parent
f32c042f3e
commit
c81cb64416
@ -50,7 +50,8 @@ class PagedAllocator {
|
||||
SpinLock spin_lock;
|
||||
|
||||
public:
|
||||
T *alloc() {
|
||||
template <class... Args>
|
||||
T *alloc(const Args &&...p_args) {
|
||||
if (thread_safe) {
|
||||
spin_lock.lock();
|
||||
}
|
||||
@ -75,7 +76,7 @@ public:
|
||||
if (thread_safe) {
|
||||
spin_lock.unlock();
|
||||
}
|
||||
memnew_placement(alloc, T);
|
||||
memnew_placement(alloc, T(p_args...));
|
||||
return alloc;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user