CommonLibSSE NG
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 #include "REX/W32/KERNEL32.h"
7 
8 namespace RE
9 {
10  namespace BSResource
11  {
12  struct BSSystemDir
13  {
14  public:
15  // members
16  void* handle; // 000
20  std::uint64_t entryPos; // 250
21  };
22  static_assert(sizeof(BSSystemDir) == 0x258);
23 
24  class LooseFileLocation : public Location
25  {
26  public:
27  inline static constexpr auto RTTI = RTTI_BSResource__LooseFileLocation;
28 
29  ~LooseFileLocation() override; // 00
30 
31  // override (Location)
32  ErrorCode DoCreateStream(const char* a_path, BSTSmartPointer<Stream>& a_stream, Location*& a_location, bool a_readOnly) override; // 03
33  ErrorCode DoCreateAsyncStream(const char* a_path, BSTSmartPointer<AsyncStream>& a_out, Location*& a_location, bool a_readOnly) override; // 04
34  ErrorCode DoTraversePrefix(const char* a_path, LocationTraverser& a_traverser) override; // 05
35  ErrorCode DoGetInfo1(const char* a_path, Info& a_info, Location*& a_location) override; // 06
36  ErrorCode DoGetInfo2(const char* a_path, Info& a_info, LocationTraverser* a_traverser) override; // 07
37  ErrorCode DoDelete(const char* a_path) override; // 08
38  const char* DoGetName() const override; // 09 - { return directory.c_str(); }
39  [[nodiscard]] std::uint32_t DoGetMinimumAsyncPacketSize() const override; // 0B - { return minimumAsyncPacketSize; }
40 
41  // members
43  std::uint32_t minimumAsyncPacketSize; // 18
44  bool asyncSupported; // 1C
45  std::uint8_t pad1D; // 1D
46  std::uint16_t pad1E; // 1E
47  };
48  static_assert(sizeof(LooseFileLocation) == 0x20);
49  }
50 }
Definition: LocationTraverser.h:10
Definition: Location.h:17
Definition: LooseFileLocation.h:25
bool asyncSupported
Definition: LooseFileLocation.h:44
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:46
BSFixedString prefix
Definition: LooseFileLocation.h:42
std::uint8_t pad1D
Definition: LooseFileLocation.h:45
std::uint32_t minimumAsyncPacketSize
Definition: LooseFileLocation.h:43
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:27
Definition: BSTSmartPointer.h:36
constexpr auto MAX_PATH
Definition: BASE.h:34
ErrorCode
Definition: ErrorCodes.h:8
Definition: AbsorbEffect.h:6
constexpr REL::VariantID RTTI_BSResource__LooseFileLocation(684916, 392650, 0x1edc398)
Definition: KERNEL32.h:391
Definition: LooseFileLocation.h:13
void * handle
Definition: LooseFileLocation.h:16
char dirPath[REX::W32::MAX_PATH]
Definition: LooseFileLocation.h:18
REX::W32::WIN32_FIND_DATAA findData
Definition: LooseFileLocation.h:17
ErrorCode lastError
Definition: LooseFileLocation.h:19
std::uint64_t entryPos
Definition: LooseFileLocation.h:20
Definition: Info.h:10