CommonLibVR
BSResourceEntryDB.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSResourceEntry.h"
6 #include "RE/B/BSTSingleton.h"
7 
8 namespace RE
9 {
10  namespace BSResource
11  {
12  class Location;
13  class EntryBase;
14 
15  template <class T>
16  class EntryDB;
17 
18  template <class T_DBTraits, class T_EntryDB>
20  {
21  public:
22  using U_DBTraits = T_DBTraits;
23  using U_EntryDB = T_EntryDB;
24 
25  class CArgs
26  {
27  public:
28  // members
29  T_DBTraits::ArgsType userArgs; // 00
31  };
32  };
33  static_assert(std::is_empty_v<EntryDBTraits<void, void>>);
34 
35  class IEntryDB
36  {
37  public:
38  inline static constexpr auto RTTI = RTTI_BSResource__IEntryDB;
39  inline static constexpr auto VTABLE = VTABLE_BSResource__IEntryDB;
40 
42  {
43  public:
44  inline static constexpr auto RTTI = RTTI_BSResource__IEntryDB__NotifyLoadDone;
45  inline static constexpr auto VTABLE = VTABLE_BSResource__IEntryDB__NotifyLoadDone;
46 
47  virtual ~NotifyLoadDone(); // 00
48 
49  // add
50  virtual void operator()() = 0; // 01
51  };
52  static_assert(sizeof(NotifyLoadDone) == 0x08);
53 
55  {
56  public:
57  inline static constexpr auto RTTI = RTTI_BSResource__IEntryDB__PostFlushNotify;
58  inline static constexpr auto VTABLE = VTABLE_BSResource__IEntryDB__PostFlushNotify;
59 
60  virtual ~PostFlushNotify(); // 00
61 
62  // add
63  virtual bool DoOnNotify() = 0; // 01
64  virtual void DoOnFinalize() = 0; // 02
65 
66  // members
67  std::uint32_t state; // 08
69  };
70  static_assert(sizeof(PostFlushNotify) == 0x18);
71 
72  virtual ~IEntryDB(); // 00
73 
74  // add
75  virtual void Unk_01(void) = 0; // 01
76  virtual void Unk_02(void) = 0; // 02
77  virtual void Unk_03(void) = 0; // 03
78  virtual void Unk_04(void) = 0; // 04
79  virtual void Unk_05(void) = 0; // 05
80 
81  // members
83  };
84  static_assert(sizeof(IEntryDB) == 0xD0);
85 
86  template <class T_EntryDBTraits>
87  class EntryDBBase :
88  public T_EntryDBTraits::U_DBTraits
89  {
90  public:
91  // members
92  std::byte unk00[0x40]; // 00
97  std::byte unk168[0x8170 - 0x168]; // ??
98  std::uint64_t unk8170; // ??
99  };
100 
101  template <class T_DBTraits>
102  class EntryDB :
103  public IEntryDB,
104  public EntryDBBase<EntryDBTraits<T_DBTraits, BSResource::EntryDB<T_DBTraits>>>,
105  public BSTSingletonSDM<EntryDB<T_DBTraits>>
106  {
107  public:
108  ~EntryDB() override; // 00
109 
110  // override (IEntryDB)
111  void Unk_01(void) override; // 01
112  void Unk_02(void) override; // 02
113  void Unk_03(void) override; // 03
114  void Unk_04(void) override; // 04
115  void Unk_05(void) override; // 05
116  };
117  }
118 }
Definition: BSResourceEntryQueue.h:22
Definition: BSResourceEntryDB.h:89
std::byte unk168[0x8170 - 0x168]
Definition: BSResourceEntryDB.h:97
EntryBucketQueue< Entry< typename T_EntryDBTraits::U_DBTraits::U_Type, typename T_EntryDBTraits::CArgs >, T_EntryDBTraits::U_DBTraits::LOAD_QUEUE_SIZE > loadQueue
Definition: BSResourceEntryDB.h:94
EntryBucketQueue< Entry< typename T_EntryDBTraits::U_DBTraits::U_Type, typename T_EntryDBTraits::CArgs >, T_EntryDBTraits::U_DBTraits::RELEASE_QUEUE_SIZE > releaseQueue
Definition: BSResourceEntryDB.h:95
std::uint64_t unk8170
Definition: BSResourceEntryDB.h:98
std::byte unk00[0x40]
Definition: BSResourceEntryDB.h:92
REntryCache< EntryCacheTraits< typename T_EntryDBTraits::U_DBTraits::U_Type, typename T_EntryDBTraits::CArgs, DAP, 64 > > cache
Definition: BSResourceEntryDB.h:93
Location * rootLocation
Definition: BSResourceEntryDB.h:96
Definition: BSResourceEntryDB.h:26
T_DBTraits::ArgsType userArgs
Definition: BSResourceEntryDB.h:29
BSFixedString nameText
Definition: BSResourceEntryDB.h:30
Definition: BSResourceEntryDB.h:20
T_DBTraits U_DBTraits
Definition: BSResourceEntryDB.h:22
T_EntryDB U_EntryDB
Definition: BSResourceEntryDB.h:23
Definition: BSResourceEntryDB.h:106
void Unk_05(void) override
void Unk_04(void) override
void Unk_01(void) override
void Unk_03(void) override
void Unk_02(void) override
Definition: BSResourceEntryDB.h:42
static constexpr auto RTTI
Definition: BSResourceEntryDB.h:44
static constexpr auto VTABLE
Definition: BSResourceEntryDB.h:45
Definition: BSResourceEntryDB.h:55
static constexpr auto RTTI
Definition: BSResourceEntryDB.h:57
std::uint32_t state
Definition: BSResourceEntryDB.h:67
static constexpr auto VTABLE
Definition: BSResourceEntryDB.h:58
PostFlushNotify * next
Definition: BSResourceEntryDB.h:68
Definition: BSResourceEntryDB.h:36
virtual void Unk_05(void)=0
EntryBucketQueue< PostFlushNotify, 8 > postFlushNotifyQueue
Definition: BSResourceEntryDB.h:82
static constexpr auto VTABLE
Definition: BSResourceEntryDB.h:39
virtual void Unk_04(void)=0
virtual void Unk_03(void)=0
virtual void Unk_02(void)=0
virtual void Unk_01(void)=0
static constexpr auto RTTI
Definition: BSResourceEntryDB.h:38
Definition: Location.h:17
Definition: BSResourceEntryCache.h:28
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_BSResource__IEntryDB
Definition: Offsets_VTABLE.h:9400
constexpr std::array< REL::ID, 1 > VTABLE_BSResource__IEntryDB__PostFlushNotify
Definition: Offsets_VTABLE.h:9402
constexpr REL::ID RTTI_BSResource__IEntryDB__NotifyLoadDone(static_cast< std::uint64_t >(690658))
constexpr REL::ID RTTI_BSResource__IEntryDB(static_cast< std::uint64_t >(684960))
constexpr REL::ID RTTI_BSResource__IEntryDB__PostFlushNotify(static_cast< std::uint64_t >(684618))
constexpr std::array< REL::ID, 1 > VTABLE_BSResource__IEntryDB__NotifyLoadDone
Definition: Offsets_VTABLE.h:9401
Definition: BSTSingleton.h:50