Skip to content

Commit 00b0bb2

Browse files
committed
Streamline hook definition; add preliminary CSV hooks
1 parent 00b35e0 commit 00b0bb2

8 files changed

Lines changed: 160 additions & 7 deletions

File tree

ExtFileSystem/CSVParserData.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
#include "ICsvParser.h"
4+
5+
struct CSVParserData
6+
{
7+
ICsvParser *csv_parser;
8+
void *data;
9+
size_t data_length;
10+
};

ExtFileSystem/ExtFileSystem.vcxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,9 @@
240240
</Link>
241241
</ItemDefinitionGroup>
242242
<ItemGroup>
243+
<ClInclude Include="ICsvParser.h" />
244+
<ClInclude Include="NamedFile.h" />
245+
<ClInclude Include="CSVParserData.h" />
243246
<ClInclude Include="ProxyFileSystem.h" />
244247
<ClInclude Include="FileMemory.h" />
245248
<ClInclude Include="hook.h" />
@@ -248,6 +251,7 @@
248251
</ItemGroup>
249252
<ItemGroup>
250253
<ClCompile Include="Main.cpp" />
254+
<ClCompile Include="NamedFile.cpp" />
251255
<ClCompile Include="ProxyFileSystem.cpp" />
252256
<ClCompile Include="WindowsFile.cpp" />
253257
</ItemGroup>

ExtFileSystem/ExtFileSystem.vcxproj.filters

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
<Filter Include="Header Files\Util">
2323
<UniqueIdentifier>{b543c9e9-154f-40e4-9120-134dfd844e91}</UniqueIdentifier>
2424
</Filter>
25+
<Filter Include="Header Files\CSV">
26+
<UniqueIdentifier>{533d1c8e-2d7a-4939-82ae-677564ed8a68}</UniqueIdentifier>
27+
</Filter>
2528
</ItemGroup>
2629
<ItemGroup>
2730
<ClInclude Include="logging.h">
@@ -39,6 +42,15 @@
3942
<ClInclude Include="ProxyFileSystem.h">
4043
<Filter>Header Files</Filter>
4144
</ClInclude>
45+
<ClInclude Include="ICsvParser.h">
46+
<Filter>Header Files\CSV</Filter>
47+
</ClInclude>
48+
<ClInclude Include="NamedFile.h">
49+
<Filter>Header Files\FilePointers</Filter>
50+
</ClInclude>
51+
<ClInclude Include="CSVParserData.h">
52+
<Filter>Header Files\CSV</Filter>
53+
</ClInclude>
4254
</ItemGroup>
4355
<ItemGroup>
4456
<ClCompile Include="Main.cpp">
@@ -50,5 +62,8 @@
5062
<ClCompile Include="ProxyFileSystem.cpp">
5163
<Filter>Source Files</Filter>
5264
</ClCompile>
65+
<ClCompile Include="NamedFile.cpp">
66+
<Filter>Source Files\FilePointers</Filter>
67+
</ClCompile>
5368
</ItemGroup>
5469
</Project>

ExtFileSystem/FileMemory.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,16 @@ class FileMemory // NOLINT(cppcoreguidelines-special-member-functions)
1212
protected:
1313
~FileMemory() = default;
1414
public:
15-
virtual FileMemory* dispose(bool disposing) = 0;
15+
virtual FileMemory *dispose(bool disposing) = 0;
1616
virtual bool close_file() = 0;
1717
virtual bool seek(uint64_t dist, bool absolute) = 0;
18-
virtual uint64_t read(void* dest, uint64_t length) = 0;
19-
virtual uint64_t read_from(void* buffer, uint64_t pos, uint64_t length) = 0;
18+
virtual uint64_t read(void *dest, uint64_t length) = 0;
19+
virtual uint64_t read_from(void *buffer, uint64_t pos, uint64_t length) = 0;
2020
virtual bool is_open() = 0;
21-
virtual void* get_data_ptr() = 0;
21+
virtual void *get_data_ptr() = 0;
2222
virtual uint64_t tell() = 0;
2323
virtual uint64_t length() = 0;
24-
virtual bool set_file(void* data, uint64_t data_length, uint64_t file_offset) = 0;
25-
virtual bool set_file2(void* data, uint64_t data_length, uint64_t file_offset) = 0;
26-
virtual size_t move_memory(void* dest, void* src, size_t len) = 0;
24+
virtual bool set_file(void *data, uint64_t data_length, uint64_t file_offset) = 0;
25+
virtual bool set_file2(void *data, uint64_t data_length, uint64_t file_offset) = 0;
26+
virtual size_t move_memory(void *dest, void *src, size_t len) = 0;
2727
};

ExtFileSystem/ICsvParser.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#pragma once
2+
#include <string>
3+
4+
/**
5+
* A native CSV parser
6+
*/
7+
class ICsvParser // NOLINT(hicpp-special-member-functions)
8+
{
9+
protected:
10+
virtual ~ICsvParser() = default;
11+
public:
12+
virtual ICsvParser* dispose(bool disposing) = 0;
13+
virtual void get_as_bytes(int col, int row, void* dest, int size) = 0;
14+
virtual int copy_str(int col, int row, std::string* str) = 0;
15+
virtual void get_as_string(int col, int row, void* dest, int size) = 0;
16+
virtual int get_as_int(int col, int row) = 0;
17+
virtual float get_as_float(int col, int row) = 0;
18+
virtual int get_cell_strlen(int col, int row) = 0;
19+
virtual int get_cell_byte_length(int col, int row) = 0;
20+
virtual bool is_valid_cell(int col, int row) = 0;
21+
virtual bool is_valid() = 0;
22+
virtual int get_cols() = 0;
23+
virtual int get_rows() = 0;
24+
virtual int get_as_bool(int col, int row) = 0;
25+
};
26+

ExtFileSystem/Main.cpp

1.53 KB
Binary file not shown.

ExtFileSystem/NamedFile.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#include "NamedFile.h"
2+
3+
NamedFile::NamedFile(FileMemory *wrapped, std::string_view &filename)
4+
{
5+
this->wrapped = wrapped;
6+
this->filename = filename;
7+
}
8+
9+
FileMemory * NamedFile::dispose(bool disposing)
10+
{
11+
wrapped->dispose(disposing);
12+
if(disposing)
13+
delete this;
14+
return this;
15+
}
16+
17+
bool NamedFile::close_file()
18+
{
19+
return wrapped->close_file();
20+
}
21+
22+
bool NamedFile::seek(uint64_t dist, bool absolute)
23+
{
24+
return wrapped->seek(dist, absolute);
25+
}
26+
27+
uint64_t NamedFile::read(void *dest, uint64_t length)
28+
{
29+
return wrapped->read(dest, length);
30+
}
31+
32+
uint64_t NamedFile::read_from(void *buffer, uint64_t pos, uint64_t length)
33+
{
34+
return wrapped->read_from(buffer, pos, length);
35+
}
36+
37+
bool NamedFile::is_open()
38+
{
39+
return wrapped->is_open();
40+
}
41+
42+
void *NamedFile::get_data_ptr()
43+
{
44+
return wrapped->get_data_ptr();
45+
}
46+
47+
uint64_t NamedFile::tell()
48+
{
49+
return wrapped->tell();
50+
}
51+
52+
uint64_t NamedFile::length()
53+
{
54+
return wrapped->length();
55+
}
56+
57+
bool NamedFile::set_file(void *data, uint64_t data_length, uint64_t file_offset)
58+
{
59+
return wrapped->set_file(data, data_length, file_offset);
60+
}
61+
62+
bool NamedFile::set_file2(void *data, uint64_t data_length, uint64_t file_offset)
63+
{
64+
return wrapped->set_file2(data, data_length, file_offset);
65+
}
66+
67+
size_t NamedFile::move_memory(void *dest, void *src, size_t len)
68+
{
69+
return wrapped->move_memory(dest, src, len);
70+
}

ExtFileSystem/NamedFile.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#pragma once
2+
3+
#include "FileMemory.h"
4+
#include "logging.h"
5+
6+
class NamedFile : FileMemory
7+
{
8+
public:
9+
NamedFile(FileMemory *wrapped, std::string_view &filename);
10+
11+
FileMemory *dispose(bool disposing) override;
12+
bool close_file() override;
13+
bool seek(uint64_t dist, bool absolute) override;
14+
uint64_t read(void *dest, uint64_t length) override;
15+
uint64_t read_from(void *buffer, uint64_t pos, uint64_t length) override;
16+
bool is_open() override;
17+
void *get_data_ptr() override;
18+
uint64_t tell() override;
19+
uint64_t length() override;
20+
bool set_file(void *data, uint64_t data_length, uint64_t file_offset) override;
21+
bool set_file2(void *data, uint64_t data_length, uint64_t file_offset) override;
22+
size_t move_memory(void *dest, void *src, size_t len) override;
23+
24+
std::string_view filename;
25+
FileMemory* wrapped;
26+
27+
DEF_LOGGER;
28+
};

0 commit comments

Comments
 (0)