Integrate CircularBuffer as essential part of loading files from CD and dedicate file processing to the FileProcessor

This commit is contained in:
2023-04-01 11:20:56 +02:00
parent 7550795af4
commit e9cc5f299a
7 changed files with 85 additions and 53 deletions

View File

@@ -11,6 +11,10 @@ namespace JabyEngine {
Progress progress;
size_t bytes_ready;
constexpr operator bool() const {
return this->progress != Progress::Error;
}
static constexpr Result new_error() {
return {Progress::Error, 0};
}
@@ -27,6 +31,7 @@ namespace JabyEngine {
private:
struct State {
enum struct Step {
Disabled,
ReadToken,
ObtainLiteralLength,
CopyLiterals,
@@ -35,12 +40,23 @@ namespace JabyEngine {
CopyMatch,
};
Step step = Step::ReadToken;
Step step = Step::Disabled;
size_t literal_length = 0;
size_t match_length = 0;
uint16_t match_offset = 0xFFFF;
uint16_t match_offset = 0;
State() = default;
void enable() {
this->step = Step::ReadToken;
this->literal_length = 0;
this->match_length = 0;
this->match_offset = 0xFFFF;
}
void disable() {
this->step = Step::Disabled;
}
};
private:
@@ -56,7 +72,7 @@ namespace JabyEngine {
}
void setup(uint8_t* dst_adr);
void reset();
void disable();
Result process(ArrayRange<const uint8_t> data, bool is_last);
};