From 7ca9968896ce42b2e1c7972cd4b7efc94dadf8f1 Mon Sep 17 00:00:00 2001 From: codereader Date: Thu, 31 Aug 2017 13:09:17 +0200 Subject: [PATCH] Move remaining classes into own header file, remove archivelib.h --- libs/DirectoryArchiveFile.h | 2 +- libs/DirectoryArchiveTextFile.h | 2 +- libs/archivelib.h | 77 ----------------- libs/stream/BinaryToTextInputStream.h | 91 ++++++++++++++++++++ plugins/archivezip/DeflatedArchiveTextFile.h | 4 +- plugins/archivezip/StoreArchiveFile.h | 1 - plugins/archivezip/StoredArchiveTextFile.h | 4 +- plugins/archivezip/ZipArchive.cpp | 1 - plugins/eclassmgr/EClassManager.cpp | 1 - plugins/image/Doom3ImageLoader.cpp | 1 - plugins/md5model/MD5ModelLoader.cpp | 5 +- plugins/sound/SoundManager.cpp | 1 - plugins/sound/SoundPlayer.cpp | 1 - plugins/vfspk3/DirectoryArchive.cpp | 1 - plugins/vfspk3/Doom3FileSystem.cpp | 1 - tools/msvc/libs.vcxproj | 2 +- tools/msvc/libs.vcxproj.filters | 4 +- 17 files changed, 104 insertions(+), 95 deletions(-) delete mode 100644 libs/archivelib.h create mode 100644 libs/stream/BinaryToTextInputStream.h diff --git a/libs/DirectoryArchiveFile.h b/libs/DirectoryArchiveFile.h index f4d06b1f91..b8deb73a65 100644 --- a/libs/DirectoryArchiveFile.h +++ b/libs/DirectoryArchiveFile.h @@ -1,7 +1,7 @@ #pragma once #include "iarchive.h" -#include "archivelib.h" +#include "stream/filestream.h" namespace archive { diff --git a/libs/DirectoryArchiveTextFile.h b/libs/DirectoryArchiveTextFile.h index 6b5431738b..212255e6a3 100644 --- a/libs/DirectoryArchiveTextFile.h +++ b/libs/DirectoryArchiveTextFile.h @@ -1,7 +1,7 @@ #pragma once #include "iarchive.h" -#include "archivelib.h" +#include "stream/textfilestream.h" namespace archive { diff --git a/libs/archivelib.h b/libs/archivelib.h deleted file mode 100644 index c1214969fa..0000000000 --- a/libs/archivelib.h +++ /dev/null @@ -1,77 +0,0 @@ -#pragma once - -#include "stream/filestream.h" -#include "stream/textfilestream.h" - -/// \brief A single-byte-reader wrapper around an InputStream. -/// Optimised for reading one byte at a time. -/// Uses a buffer to reduce the number of times the wrapped stream must be read. -template -class SingleByteInputStream -{ - typedef typename InputStreamType::byte_type byte_type; - - InputStreamType& m_inputStream; - byte_type m_buffer[SIZE]; - byte_type* m_cur; - byte_type* m_end; - -public: - - SingleByteInputStream(InputStreamType& inputStream) : m_inputStream(inputStream), m_cur(m_buffer + SIZE), m_end(m_cur) - { - } - bool readByte(byte_type& b) - { - if(m_cur == m_end) - { - if(m_end != m_buffer + SIZE) - { - return false; - } - - m_end = m_buffer + m_inputStream.read(m_buffer, SIZE); - m_cur = m_buffer; - - if(m_end == m_buffer) - { - return false; - } - } - - b = *m_cur++; - - return true; - } -}; - -/// \brief A binary-to-text wrapper around an InputStream. -/// Converts CRLF or LFCR line-endings to LF line-endings. -template -class BinaryToTextInputStream : public TextInputStream -{ - SingleByteInputStream m_inputStream; -public: - BinaryToTextInputStream(BinaryInputStreamType& inputStream) : m_inputStream(inputStream) - { - } - std::size_t read(char* buffer, std::size_t length) - { - char* p = buffer; - for(;;) - { - if(length != 0 && m_inputStream.readByte(*reinterpret_cast(p))) - { - if(*p != '\r') - { - ++p; - --length; - } - } - else - { - return p - buffer; - } - } - } -}; diff --git a/libs/stream/BinaryToTextInputStream.h b/libs/stream/BinaryToTextInputStream.h new file mode 100644 index 0000000000..0112e13030 --- /dev/null +++ b/libs/stream/BinaryToTextInputStream.h @@ -0,0 +1,91 @@ +#pragma once + +#include "itextstream.h" + +namespace stream +{ + +/// \brief A single-byte-reader wrapper around an InputStream. +/// Optimised for reading one byte at a time. +/// Uses a buffer to reduce the number of times the wrapped stream must be read. +template +class SingleByteInputStream +{ +private: + typedef typename InputStreamType::byte_type byte_type; + + static const std::size_t SIZE = 1024; + + InputStreamType& _inputStream; + byte_type _buffer[SIZE]; + byte_type* _cur; + byte_type* _end; + +public: + SingleByteInputStream(InputStreamType& inputStream) : + _inputStream(inputStream), + _cur(_buffer + SIZE), + _end(_cur) + {} + + bool readByte(byte_type& b) + { + if (_cur == _end) + { + if (_end != _buffer + SIZE) + { + return false; + } + + _end = _buffer + _inputStream.read(_buffer, SIZE); + _cur = _buffer; + + if (_end == _buffer) + { + return false; + } + } + + b = *_cur++; + + return true; + } +}; + +/// \brief A binary-to-text wrapper around an InputStream. +/// Converts CRLF or LFCR line-endings to LF line-endings. +template +class BinaryToTextInputStream : + public TextInputStream +{ +private: + SingleByteInputStream _inputStream; + +public: + BinaryToTextInputStream(BinaryInputStreamType& inputStream) : + _inputStream(inputStream) + {} + + std::size_t read(char* buffer, std::size_t length) override + { + char* p = buffer; + for (;;) + { + if (length != 0 && _inputStream.readByte(*reinterpret_cast(p))) + { + if (*p != '\r') + { + ++p; + --length; + } + } + else + { + return p - buffer; + } + } + } +}; + +} + diff --git a/plugins/archivezip/DeflatedArchiveTextFile.h b/plugins/archivezip/DeflatedArchiveTextFile.h index eaaf97045f..dfda6edd95 100644 --- a/plugins/archivezip/DeflatedArchiveTextFile.h +++ b/plugins/archivezip/DeflatedArchiveTextFile.h @@ -2,7 +2,7 @@ #include "iarchive.h" #include "iregistry.h" -#include "archivelib.h" +#include "stream/BinaryToTextInputStream.h" namespace archive { @@ -18,7 +18,7 @@ class DeflatedArchiveTextFile : FileInputStream _istream; SubFileInputStream _substream; // reads subset of _istream DeflatedInputStream _zipstream; // inflates data from _substream - BinaryToTextInputStream _textStream; // converts data from _zipstream + stream::BinaryToTextInputStream _textStream; // converts data from _zipstream // Mod directory containing this file const std::string _modName; diff --git a/plugins/archivezip/StoreArchiveFile.h b/plugins/archivezip/StoreArchiveFile.h index ae242bf841..44b095926e 100644 --- a/plugins/archivezip/StoreArchiveFile.h +++ b/plugins/archivezip/StoreArchiveFile.h @@ -1,7 +1,6 @@ #pragma once #include "iarchive.h" -#include "archivelib.h" namespace archive { diff --git a/plugins/archivezip/StoredArchiveTextFile.h b/plugins/archivezip/StoredArchiveTextFile.h index 1be689bfe2..e70b5ed270 100644 --- a/plugins/archivezip/StoredArchiveTextFile.h +++ b/plugins/archivezip/StoredArchiveTextFile.h @@ -1,7 +1,7 @@ #pragma once #include "iarchive.h" -#include "archivelib.h" +#include "stream/BinaryToTextInputStream.h" namespace archive { @@ -14,7 +14,7 @@ class StoredArchiveTextFile : std::string _name; FileInputStream _filestream; SubFileInputStream _substream; // provides a subset of _filestream - BinaryToTextInputStream _textStream; // converts data from _substream + stream::BinaryToTextInputStream _textStream; // converts data from _substream // Mod directory std::string _modName; diff --git a/plugins/archivezip/ZipArchive.cpp b/plugins/archivezip/ZipArchive.cpp index 40b695fd17..41f4d30f53 100644 --- a/plugins/archivezip/ZipArchive.cpp +++ b/plugins/archivezip/ZipArchive.cpp @@ -3,7 +3,6 @@ #include #include "itextstream.h" #include "iarchive.h" -#include "archivelib.h" #include "gamelib.h" #include diff --git a/plugins/eclassmgr/EClassManager.cpp b/plugins/eclassmgr/EClassManager.cpp index e2cd384f61..4ab2d695b3 100644 --- a/plugins/eclassmgr/EClassManager.cpp +++ b/plugins/eclassmgr/EClassManager.cpp @@ -10,7 +10,6 @@ #include "iradiant.h" #include "iuimanager.h" #include "ifilesystem.h" -#include "archivelib.h" #include "parser/DefTokeniser.h" #include "Doom3EntityClass.h" diff --git a/plugins/image/Doom3ImageLoader.cpp b/plugins/image/Doom3ImageLoader.cpp index 58beed02ed..9832391d7c 100644 --- a/plugins/image/Doom3ImageLoader.cpp +++ b/plugins/image/Doom3ImageLoader.cpp @@ -5,7 +5,6 @@ #include "ifilesystem.h" #include "iarchive.h" -#include "archivelib.h" #include "iregistry.h" #include "igame.h" diff --git a/plugins/md5model/MD5ModelLoader.cpp b/plugins/md5model/MD5ModelLoader.cpp index 32551e6833..3613019170 100644 --- a/plugins/md5model/MD5ModelLoader.cpp +++ b/plugins/md5model/MD5ModelLoader.cpp @@ -1,11 +1,12 @@ #include "MD5ModelLoader.h" +#include "idatastream.h" #include "iarchive.h" #include "imodule.h" #include "ishaders.h" #include "imodelcache.h" #include "ifilesystem.h" -#include "archivelib.h" +#include "stream/BinaryToTextInputStream.h" #include "os/path.h" #include "MD5ModelNode.h" @@ -79,7 +80,7 @@ model::IModelPtr MD5ModelLoader::loadModelFromPath(const std::string& name) model->setFilename(os::getFilename(file->getName())); // greebo: Get the Inputstream from the given file - BinaryToTextInputStream inputStream(file->getInputStream()); + stream::BinaryToTextInputStream inputStream(file->getInputStream()); // Construct a Tokeniser object and start reading the file try diff --git a/plugins/sound/SoundManager.cpp b/plugins/sound/SoundManager.cpp index 853c2dab29..8940a4f3dd 100644 --- a/plugins/sound/SoundManager.cpp +++ b/plugins/sound/SoundManager.cpp @@ -2,7 +2,6 @@ #include "SoundFileLoader.h" #include "ifilesystem.h" -#include "archivelib.h" #include "debugging/ScopedDebugTimer.h" diff --git a/plugins/sound/SoundPlayer.cpp b/plugins/sound/SoundPlayer.cpp index a1654f3bb1..74fd09a9d0 100644 --- a/plugins/sound/SoundPlayer.cpp +++ b/plugins/sound/SoundPlayer.cpp @@ -6,7 +6,6 @@ #include #include "stream/textfilestream.h" -#include "archivelib.h" #include "os/path.h" #include diff --git a/plugins/vfspk3/DirectoryArchive.cpp b/plugins/vfspk3/DirectoryArchive.cpp index 0f3d4a27bf..d98424a8c3 100644 --- a/plugins/vfspk3/DirectoryArchive.cpp +++ b/plugins/vfspk3/DirectoryArchive.cpp @@ -1,6 +1,5 @@ #include "DirectoryArchive.h" -#include "archivelib.h" #include "gamelib.h" #include "UnixPath.h" #include "os/file.h" diff --git a/plugins/vfspk3/Doom3FileSystem.cpp b/plugins/vfspk3/Doom3FileSystem.cpp index 6adc6f936f..1c589c3729 100644 --- a/plugins/vfspk3/Doom3FileSystem.cpp +++ b/plugins/vfspk3/Doom3FileSystem.cpp @@ -26,7 +26,6 @@ #include "string/string.h" #include "os/path.h" #include "os/dir.h" -#include "archivelib.h" #include "moduleobservers.h" #include diff --git a/tools/msvc/libs.vcxproj b/tools/msvc/libs.vcxproj index df485b2a98..7a5d23c467 100644 --- a/tools/msvc/libs.vcxproj +++ b/tools/msvc/libs.vcxproj @@ -138,7 +138,6 @@ - @@ -194,6 +193,7 @@ + diff --git a/tools/msvc/libs.vcxproj.filters b/tools/msvc/libs.vcxproj.filters index c5b181c000..6d23f6682b 100644 --- a/tools/msvc/libs.vcxproj.filters +++ b/tools/msvc/libs.vcxproj.filters @@ -12,7 +12,6 @@ - @@ -153,6 +152,9 @@ + + stream +