HexEditor: Create a function to initialize a HexDocumentFile

This function is made from what composed `set_file()` (which now calls
the new function). It allows to create a `HexDocumentFile` without
calling the hackish `set_file(move(m_file))`.
This commit is contained in:
Lucas CHOLLET 2023-01-14 22:42:05 -05:00 committed by Andrew Kaster
parent 689b3c2c26
commit 3f932081ae
2 changed files with 8 additions and 2 deletions

View file

@ -72,8 +72,7 @@ ErrorOr<void> HexDocumentMemory::write_to_file(Core::Stream::File& file)
ErrorOr<NonnullOwnPtr<HexDocumentFile>> HexDocumentFile::create(NonnullOwnPtr<Core::Stream::File> file)
{
auto document = TRY(adopt_nonnull_own_or_enomem(new HexDocumentFile(move(file))));
// FIXME: Remove this hackery
TRY(document->set_file(move(document->m_file)));
TRY(document->initialize_internal_state());
return document;
}
@ -153,7 +152,12 @@ void HexDocumentFile::clear_changes()
ErrorOr<void> HexDocumentFile::set_file(NonnullOwnPtr<Core::Stream::File> file)
{
m_file = move(file);
TRY(initialize_internal_state());
return {};
}
ErrorOr<void> HexDocumentFile::initialize_internal_state()
{
if (auto result = m_file->seek(0, SeekMode::FromEndPosition); result.is_error())
m_file_size = 0;
else

View file

@ -76,6 +76,8 @@ public:
private:
explicit HexDocumentFile(NonnullOwnPtr<Core::Stream::File> file);
ErrorOr<void> initialize_internal_state();
void ensure_position_in_buffer(size_t position);
NonnullOwnPtr<Core::Stream::File> m_file;