ona/source/oar.cpp

45 lines
874 B
C++
Raw Normal View History

2023-02-19 17:43:30 +01:00
export module oar;
2023-02-19 17:50:29 +01:00
import coral;
import coral.files;
2023-02-19 17:43:30 +01:00
export namespace oar {
2023-02-19 17:50:29 +01:00
constexpr coral::usize signature_length{4};
2023-02-19 17:43:30 +01:00
2023-02-19 17:50:29 +01:00
constexpr coral::u8 signature_magic[signature_length]{'o', 'a', 'r', 0};
2023-02-19 17:43:30 +01:00
struct entry {
2023-02-19 17:50:29 +01:00
coral::u8 signature_magic[signature_length];
2023-02-19 17:43:30 +01:00
2023-02-19 17:50:29 +01:00
coral::path path;
2023-02-19 17:43:30 +01:00
2023-02-19 17:50:29 +01:00
coral::u64 data_offset;
2023-02-19 17:43:30 +01:00
2023-02-19 17:50:29 +01:00
coral::u64 data_length;
2023-02-19 17:43:30 +01:00
2023-02-19 17:50:29 +01:00
coral::u8 padding[244];
2023-02-19 17:43:30 +01:00
};
2023-02-19 17:50:29 +01:00
struct archive : public coral::fs {
using coral::fs::access_result;
2023-02-19 17:43:30 +01:00
archive() {
}
2023-02-19 17:50:29 +01:00
access_result read_file(coral::path const & file_path,
coral::callable<void(coral::readable const &)> const & then) override {
2023-02-19 17:43:30 +01:00
return access_result::access_denied;
}
2023-02-19 17:50:29 +01:00
virtual access_result write_file(coral::path const & file_path,
coral::callable<void(coral::writable const &)> const & then) override {
2023-02-19 17:43:30 +01:00
return access_result::access_denied;
}
};
}
static_assert(sizeof(oar::entry) == 512);