Integrate CircularBuffer as essential part of loading files from CD and dedicate file processing to the FileProcessor
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
Reference in New Issue
Block a user