Merge pull request #69961 from lawnjelly/variant_parser_optional_readahead
VariantParser make readahead optional
This commit is contained in:
commit
ba4bd7f009
|
@ -42,7 +42,7 @@ char32_t VariantParser::Stream::get_char() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// attempt to readahead
|
// attempt to readahead
|
||||||
readahead_filled = _read_buffer(readahead_buffer, READAHEAD_SIZE);
|
readahead_filled = _read_buffer(readahead_buffer, readahead_enabled ? READAHEAD_SIZE : 1);
|
||||||
if (readahead_filled) {
|
if (readahead_filled) {
|
||||||
readahead_pointer = 0;
|
readahead_pointer = 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -54,10 +54,21 @@ char32_t VariantParser::Stream::get_char() {
|
||||||
return get_char();
|
return get_char();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VariantParser::Stream::is_eof() const {
|
||||||
|
if (readahead_enabled) {
|
||||||
|
return eof;
|
||||||
|
}
|
||||||
|
return _is_eof();
|
||||||
|
}
|
||||||
|
|
||||||
bool VariantParser::StreamFile::is_utf8() const {
|
bool VariantParser::StreamFile::is_utf8() const {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VariantParser::StreamFile::_is_eof() const {
|
||||||
|
return f->eof_reached();
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t VariantParser::StreamFile::_read_buffer(char32_t *p_buffer, uint32_t p_num_chars) {
|
uint32_t VariantParser::StreamFile::_read_buffer(char32_t *p_buffer, uint32_t p_num_chars) {
|
||||||
// The buffer is assumed to include at least one character (for null terminator)
|
// The buffer is assumed to include at least one character (for null terminator)
|
||||||
ERR_FAIL_COND_V(!p_num_chars, 0);
|
ERR_FAIL_COND_V(!p_num_chars, 0);
|
||||||
|
@ -79,6 +90,10 @@ bool VariantParser::StreamString::is_utf8() const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VariantParser::StreamString::_is_eof() const {
|
||||||
|
return pos > s.length();
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t VariantParser::StreamString::_read_buffer(char32_t *p_buffer, uint32_t p_num_chars) {
|
uint32_t VariantParser::StreamString::_read_buffer(char32_t *p_buffer, uint32_t p_num_chars) {
|
||||||
// The buffer is assumed to include at least one character (for null terminator)
|
// The buffer is assumed to include at least one character (for null terminator)
|
||||||
ERR_FAIL_COND_V(!p_num_chars, 0);
|
ERR_FAIL_COND_V(!p_num_chars, 0);
|
||||||
|
|
|
@ -46,14 +46,16 @@ public:
|
||||||
bool eof = false;
|
bool eof = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
bool readahead_enabled = true;
|
||||||
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) = 0;
|
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) = 0;
|
||||||
|
virtual bool _is_eof() const = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
char32_t saved = 0;
|
char32_t saved = 0;
|
||||||
|
|
||||||
char32_t get_char();
|
char32_t get_char();
|
||||||
virtual bool is_utf8() const = 0;
|
virtual bool is_utf8() const = 0;
|
||||||
bool is_eof() const { return eof; }
|
bool is_eof() const;
|
||||||
|
|
||||||
Stream() {}
|
Stream() {}
|
||||||
virtual ~Stream() {}
|
virtual ~Stream() {}
|
||||||
|
@ -62,13 +64,14 @@ public:
|
||||||
struct StreamFile : public Stream {
|
struct StreamFile : public Stream {
|
||||||
protected:
|
protected:
|
||||||
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) override;
|
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) override;
|
||||||
|
virtual bool _is_eof() const override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Ref<FileAccess> f;
|
Ref<FileAccess> f;
|
||||||
|
|
||||||
virtual bool is_utf8() const override;
|
virtual bool is_utf8() const override;
|
||||||
|
|
||||||
StreamFile() {}
|
StreamFile(bool p_readahead_enabled = true) { readahead_enabled = p_readahead_enabled; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StreamString : public Stream {
|
struct StreamString : public Stream {
|
||||||
|
@ -79,10 +82,11 @@ public:
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) override;
|
virtual uint32_t _read_buffer(char32_t *p_buffer, uint32_t p_num_chars) override;
|
||||||
|
virtual bool _is_eof() const override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool is_utf8() const override;
|
virtual bool is_utf8() const override;
|
||||||
StreamString() {}
|
StreamString(bool p_readahead_enabled = true) { readahead_enabled = p_readahead_enabled; }
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef Error (*ParseResourceFunc)(void *p_self, Stream *p_stream, Ref<Resource> &r_res, int &line, String &r_err_str);
|
typedef Error (*ParseResourceFunc)(void *p_self, Stream *p_stream, Ref<Resource> &r_res, int &line, String &r_err_str);
|
||||||
|
|
|
@ -836,7 +836,8 @@ void ResourceLoaderText::set_translation_remapped(bool p_remapped) {
|
||||||
translation_remapped = p_remapped;
|
translation_remapped = p_remapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResourceLoaderText::ResourceLoaderText() {}
|
ResourceLoaderText::ResourceLoaderText() :
|
||||||
|
stream(false) {}
|
||||||
|
|
||||||
void ResourceLoaderText::get_dependencies(Ref<FileAccess> p_f, List<String> *p_dependencies, bool p_add_types) {
|
void ResourceLoaderText::get_dependencies(Ref<FileAccess> p_f, List<String> *p_dependencies, bool p_add_types) {
|
||||||
open(p_f);
|
open(p_f);
|
||||||
|
|
Loading…
Reference in New Issue