Tramway SDK v0.1.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
file.h
Go to the documentation of this file.
1// Tramway Drifting and Dungeon Exploration Simulator SDK Runtime
2
3#ifndef TRAM_SDK_FRAMEWORK_FILE_H
4#define TRAM_SDK_FRAMEWORK_FILE_H
5
6#include <string>
7
8#include <framework/core.h>
9#include <framework/uid.h>
10
11namespace tram {
12
13class FileReader;
14class FileWriter;
15class FileReaderParser;
16class FileWriterParser;
17
18class File {
19public:
20 File (char const* path, uint32_t mode);
21 ~File();
22
23 bool is_open();
24 bool is_continue();
25
26 void write_int8(int8_t value);
27 void write_int16(int16_t value);
28 void write_int32(int32_t value);
29 void write_int64(int64_t value);
30
31 void write_uint8(uint8_t value);
32 void write_uint16(uint16_t value);
33 void write_uint32(uint32_t value);
34 void write_uint64(uint64_t value);
35
36 void write_float32(float value);
37 void write_float64(double value);
38
39 void write_name(name_t value);
40 void write_string(const char* value);
41 void write_newline();
42
43 int8_t read_int8();
44 int16_t read_int16();
45 int32_t read_int32();
46 int64_t read_int64();
47
48 uint8_t read_uint8();
49 uint16_t read_uint16();
50 uint32_t read_uint32();
51 uint64_t read_uint64();
52
53 float read_float32();
54 double read_float64();
55
57 std::string_view read_string();
58 std::string_view read_token();
59 std::string_view read_line();
60
61 void skip_linebreak();
62 void reset_flags();
63
64 bool was_error();
65
66 enum AccessMode : uint32_t {
67 READ = 1, //< Opens the file for reading.
68 WRITE = 2, //< Opens the file for writing.
69 PAUSE_LINE = 4, //< Pauses the parsing on every linebreak.
70 TEXT = 8, //< Opens file for reading/writing in whitespace seperated text format.
71 BINARY = 16 //< Not implemented yet.
72 };
73
74 // TODO: check whichever of these can be private and private them
75
76 std::string path;
77 uint32_t mode;
78
80
81 // cursors for writing
82 char* buffer = nullptr;
83 char* buffer_cursor = nullptr;
84 char* buffer_end = nullptr;
85
86
87
88 FileReader* reader = nullptr;
89 FileWriter* writer = nullptr;
92};
93
94}
95
96#endif // TRAM_SDK_FRAMEWORK_FILE_H
Very fast file reader/writer.
Definition: file.h:18
FileReaderParser * reader_parser
Definition: file.h:90
int8_t read_int8()
Definition: file.cpp:464
FileReader * reader
Definition: file.h:88
bool was_error()
Checks if there has been an error.
Definition: file.cpp:502
uint32_t read_uint32()
Definition: file.cpp:471
int32_t read_int32()
Definition: file.cpp:466
void write_int64(int64_t value)
Definition: file.cpp:447
bool is_open()
Returns true if file was opened.
Definition: file.cpp:419
std::string_view read_string()
Definition: file.cpp:479
FileWriterParser * writer_parser
Definition: file.h:91
std::string path
Definition: file.h:76
void write_name(name_t value)
Definition: file.cpp:457
uint64_t read_uint64()
Definition: file.cpp:472
float read_float32()
Definition: file.cpp:474
std::string_view read_token()
Definition: file.cpp:478
char * buffer
Definition: file.h:82
uint8_t read_uint8()
Definition: file.cpp:469
void write_float64(double value)
Definition: file.cpp:455
void write_int16(int16_t value)
Definition: file.cpp:445
~File()
Definition: file.cpp:408
bool pause_next
Definition: file.h:79
void reset_flags()
Resets the error flag.
Definition: file.cpp:491
int16_t read_int16()
Definition: file.cpp:465
char * buffer_end
Definition: file.h:84
bool is_continue()
Returns true if file parser has not reached end.
Definition: file.cpp:432
uint16_t read_uint16()
Definition: file.cpp:470
void write_newline()
Writes a newline to the file.
Definition: file.cpp:462
void write_int8(int8_t value)
Definition: file.cpp:444
void write_int32(int32_t value)
Definition: file.cpp:446
void write_uint32(uint32_t value)
Definition: file.cpp:451
char * buffer_cursor
Definition: file.h:83
std::string_view read_line()
Parses off the remaining line.
Definition: file.cpp:482
void write_uint16(uint16_t value)
Definition: file.cpp:450
File(char const *path, uint32_t mode)
Opens a file.
Definition: file.cpp:380
AccessMode
Definition: file.h:66
@ PAUSE_LINE
Definition: file.h:69
@ BINARY
Definition: file.h:71
@ WRITE
Definition: file.h:68
@ READ
Definition: file.h:67
@ TEXT
Definition: file.h:70
void skip_linebreak()
Skips over a linebreak.
Definition: file.cpp:488
void write_uint64(uint64_t value)
Definition: file.cpp:452
double read_float64()
Definition: file.cpp:475
void write_uint8(uint8_t value)
Definition: file.cpp:449
name_t read_name()
Definition: file.cpp:477
void write_string(const char *value)
Definition: file.cpp:458
uint32_t mode
Definition: file.h:77
void write_float32(float value)
Definition: file.cpp:454
FileWriter * writer
Definition: file.h:89
int64_t read_int64()
Definition: file.cpp:467
Definition: file.h:29
Definition: file.cpp:37
Definition: file.h:44
Definition: file.cpp:277
File reading backend API.
File writing backend API.
Serialization, i.e.
Interned string type.
Definition: uid.h:10