CommonLibVR
BSTLocklessQueue.h
Go to the documentation of this file.
1 #pragma once
2 
3 namespace RE
4 {
6  {
7  template <class T, std::uint32_t SIZE, std::uint32_t UNKNOWN>
9  {
10  T* data[SIZE]; // 00
11  volatile std::uint32_t start; // 08
12  volatile std::uint32_t fetched; // 0C
13  volatile std::uint32_t end; // 10
14  volatile std::uint32_t allocated; // 14
15  };
16  static_assert(sizeof(PtrMultiProdCons<void*, 1, 1>) == 0x18);
17 
18  template <class QueueContainer, class T, std::uint32_t SIZE, std::uint32_t UNKNOWN>
19  struct ObjQueueBase
20  {
21  T data[SIZE]; // 00
22  QueueContainer queued; // ??
23  QueueContainer free; // ??
24  };
25 
26  template <class T, std::uint32_t SIZE, std::uint32_t UNKNOWN>
27  class ObjMultiProdCons : public ObjQueueBase<PtrMultiProdCons<T, SIZE * 2, UNKNOWN>, T, SIZE, UNKNOWN>
28  {};
29 
30  private:
31  KEEP_FOR_RE()
32  };
33 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSTLocklessQueue.h:28
Definition: BSTLocklessQueue.h:9
Definition: AbsorbEffect.h:6
Definition: BSTLocklessQueue.h:20
QueueContainer queued
Definition: BSTLocklessQueue.h:22
T data[SIZE]
Definition: BSTLocklessQueue.h:21
QueueContainer free
Definition: BSTLocklessQueue.h:23
Definition: BSTLocklessQueue.h:6