CommonLibSSE (Parapets fork)
LooseFileLocation.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSFixedString.h"
4 #include "RE/L/Location.h"
5 
6 namespace RE
7 {
8  namespace BSResource
9  {
10  struct BSSystemDir
11  {
12  public:
13  // members
14  void* handle; // 000
16  char dirPath[WinAPI::MAX_PATH]; // 148
18  std::uint64_t entryPos; // 250
19  };
20  static_assert(sizeof(BSSystemDir) == 0x258);
21 
22  class LooseFileLocation : public Location
23  {
24  public:
25  inline static constexpr auto RTTI = RTTI_BSResource__LooseFileLocation;
26 
27  ~LooseFileLocation() override; // 00
28 
29  // override (Location)
30  ErrorCode DoCreateStream(const char* a_path, BSTSmartPointer<Stream>& a_stream, Location*& a_location, bool a_readOnly) override; // 03
31  ErrorCode DoCreateAsyncStream(const char* a_path, BSTSmartPointer<AsyncStream>& a_out, Location*& a_location, bool a_readOnly) override; // 04
32  ErrorCode DoTraversePrefix(const char* a_path, LocationTraverser& a_traverser) override; // 05
33  ErrorCode DoGetInfo1(const char* a_path, Info& a_info, Location*& a_location) override; // 06
34  ErrorCode DoGetInfo2(const char* a_path, Info& a_info, LocationTraverser* a_traverser) override; // 07
35  ErrorCode DoDelete(const char* a_path) override; // 08
36  const char* DoGetName() const override; // 09 - { return directory.c_str(); }
37  [[nodiscard]] std::uint32_t DoGetMinimumAsyncPacketSize() const override; // 0B - { return minimumAsyncPacketSize; }
38 
39  [[nodiscard]] static LooseFileLocation* Create(const char* a_prefix);
40  [[nodiscard]] static LooseFileLocation* Create(const char* a_prefix, std::uint32_t a_minimumAsyncPacketSize, bool a_asyncSupported);
41 
42  // members
44  std::uint32_t minimumAsyncPacketSize; // 18
45  bool asyncSupported; // 1C
46  std::uint8_t pad1D; // 1D
47  std::uint16_t pad1E; // 1E
48  };
49  static_assert(sizeof(LooseFileLocation) == 0x20);
50  }
51 }
Definition: LocationTraverser.h:10
Definition: Location.h:17
Definition: LooseFileLocation.h:23
bool asyncSupported
Definition: LooseFileLocation.h:45
ErrorCode DoDelete(const char *a_path) override
ErrorCode DoTraversePrefix(const char *a_path, LocationTraverser &a_traverser) override
ErrorCode DoCreateAsyncStream(const char *a_path, BSTSmartPointer< AsyncStream > &a_out, Location *&a_location, bool a_readOnly) override
std::uint16_t pad1E
Definition: LooseFileLocation.h:47
BSFixedString prefix
Definition: LooseFileLocation.h:43
std::uint8_t pad1D
Definition: LooseFileLocation.h:46
std::uint32_t minimumAsyncPacketSize
Definition: LooseFileLocation.h:44
std::uint32_t DoGetMinimumAsyncPacketSize() const override
ErrorCode DoCreateStream(const char *a_path, BSTSmartPointer< Stream > &a_stream, Location *&a_location, bool a_readOnly) override
ErrorCode DoGetInfo1(const char *a_path, Info &a_info, Location *&a_location) override
const char * DoGetName() const override
ErrorCode DoGetInfo2(const char *a_path, Info &a_info, LocationTraverser *a_traverser) override
static constexpr auto RTTI
Definition: LooseFileLocation.h:25
static LooseFileLocation * Create(const char *a_prefix)
static LooseFileLocation * Create(const char *a_prefix, std::uint32_t a_minimumAsyncPacketSize, bool a_asyncSupported)
Definition: BSTSmartPointer.h:37
ErrorCode
Definition: ErrorCodes.h:8
Definition: AbsorbEffect.h:6
constexpr REL::ID RTTI_BSResource__LooseFileLocation
Definition: Offsets_RTTI.h:2129
constexpr auto MAX_PATH
Definition: WinAPI.h:9
Definition: LooseFileLocation.h:11
WinAPI::WIN32_FIND_DATAA findData
Definition: LooseFileLocation.h:15
void * handle
Definition: LooseFileLocation.h:14
char dirPath[WinAPI::MAX_PATH]
Definition: LooseFileLocation.h:16
ErrorCode lastError
Definition: LooseFileLocation.h:17
std::uint64_t entryPos
Definition: LooseFileLocation.h:18
Definition: Info.h:8
Definition: WinAPI.h:43