CommonLibVR
NiStringsExtraData.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/N/NiExtraData.h"
4 
5 namespace RE
6 {
8  {
9  public:
10  inline static constexpr auto RTTI = RTTI_NiStringsExtraData;
11  inline static constexpr auto Ni_RTTI = NiRTTI_NiStringsExtraData;
12  inline static constexpr auto VTABLE = VTABLE_NiStringsExtraData;
13 
14  ~NiStringsExtraData() override; // 00
15 
16  // override (NiExtraData)
17  const NiRTTI* GetRTTI() const override; // 02
18  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
19  void LoadBinary(NiStream& a_stream) override; // 18
20  void LinkObject(NiStream& a_stream) override; // 19 - { NiExtraData::LinkObject(a_stream); }
21  bool RegisterStreamables(NiStream& a_stream) override; // 1A - { return NiExtraData::RegisterStreamables(a_stream); }
22  void SaveBinary(NiStream& a_stream) override; // 1B
23  bool IsEqual(NiObject* a_object) override; // 1C
24 
25  static NiStringsExtraData* Create(const BSFixedString& a_name, const std::vector<BSFixedString>& a_strings);
26  [[nodiscard]] std::optional<std::uint32_t> GetIndex(const BSFixedString& a_element) const;
27  bool Insert(const BSFixedString& a_element);
28  bool Remove(const BSFixedString& a_element);
29  bool Replace(const BSFixedString& a_from, const BSFixedString& a_to);
30 
31  // members
32  std::uint32_t size; // 18
33  std::uint32_t pad1C; // 1C
34  char** value; // 20
35 
36  private:
37  static void copy_string(char*& a_value, const BSFixedString& a_string);
38  static void copy_string(char*& a_value, char* a_copyValue);
39 
40  private:
41  KEEP_FOR_RE()
42  };
43  static_assert(sizeof(NiStringsExtraData) == 0x28);
44 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: NiCloningProcess.h:10
Definition: NiExtraData.h:9
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiStream.h:29
Definition: NiStringsExtraData.h:8
bool IsEqual(NiObject *a_object) override
bool Replace(const BSFixedString &a_from, const BSFixedString &a_to)
static constexpr auto RTTI
Definition: NiStringsExtraData.h:10
void LinkObject(NiStream &a_stream) override
std::optional< std::uint32_t > GetIndex(const BSFixedString &a_element) const
char ** value
Definition: NiStringsExtraData.h:34
static NiStringsExtraData * Create(const BSFixedString &a_name, const std::vector< BSFixedString > &a_strings)
std::uint32_t pad1C
Definition: NiStringsExtraData.h:33
const NiRTTI * GetRTTI() const override
void LoadBinary(NiStream &a_stream) override
static constexpr auto Ni_RTTI
Definition: NiStringsExtraData.h:11
NiObject * CreateClone(NiCloningProcess &a_cloning) override
bool Insert(const BSFixedString &a_element)
bool Remove(const BSFixedString &a_element)
void SaveBinary(NiStream &a_stream) override
~NiStringsExtraData() override
static constexpr auto VTABLE
Definition: NiStringsExtraData.h:12
std::uint32_t size
Definition: NiStringsExtraData.h:32
bool RegisterStreamables(NiStream &a_stream) override
Definition: AbsorbEffect.h:6
constexpr std::array< REL::ID, 1 > VTABLE_NiStringsExtraData
Definition: Offsets_VTABLE.h:12331
constexpr REL::ID RTTI_NiStringsExtraData(static_cast< std::uint64_t >(690423))
constexpr REL::ID NiRTTI_NiStringsExtraData(static_cast< std::uint64_t >(523925))