LkEngine 0.1.2
 
Loading...
Searching...
No Matches
FileStream.h
1#pragma once
2
3#include <filesystem>
4#include <fstream>
5
6#include "StreamWriter.h"
7#include "StreamReader.h"
8
9#include "YamlSerialization.h"
10
11
12namespace LkEngine {
13
19 namespace SerializationOp
20 {
21 enum class Type : uint8_t
22 {
23 Serialize,
24 Deserialize
25 };
26 }
27 using ESerializationOp = SerializationOp::Type;
28
30 {
31 public:
32 FileStreamWriter(const std::filesystem::path& path);
33 FileStreamWriter(const FileStreamWriter&) = delete;
34 virtual ~FileStreamWriter();
35
36 FORCEINLINE virtual bool IsStreamGood() const final override
37 {
38 return Stream.good();
39 }
40
41 FORCEINLINE virtual uint64_t GetStreamPosition() final override
42 {
43 return Stream.tellp();
44 }
45
46 FORCEINLINE virtual void SetStreamPosition(uint64_t Position) final override
47 {
48 Stream.seekp(Position);
49 }
50
51 virtual bool WriteData(const char* Data, const std::size_t Size) final override;
52
53 private:
54 std::filesystem::path Path{};
55 std::ofstream Stream;
56 };
57
58
60 {
61 public:
62 FileStreamReader(const std::filesystem::path& path);
63 FileStreamReader(const FileStreamReader&) = delete;
65
66 FORCEINLINE virtual bool IsStreamGood() const final override
67 {
68 return Stream.good();
69 }
70
71 FORCEINLINE virtual uint64_t GetStreamPosition() override
72 {
73 return Stream.tellg();
74 }
75
76 FORCEINLINE virtual void SetStreamPosition(const uint64_t Position) override
77 {
78 Stream.seekg(Position);
79 }
80
81 virtual bool ReadData(char* Destination, const std::size_t Size) override;
82
83 private:
84 std::filesystem::path Path;
85 std::ifstream Stream;
86 };
87
88}
Definition FileStream.h:60
Definition FileStream.h:30
Definition StreamReader.h:12
Definition StreamWriter.h:9
Definition Asset.h:11