]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Move compression classes to compression directory/namespace
authorJoel Rosdahl <joel@rosdahl.net>
Tue, 20 Jul 2021 14:56:15 +0000 (16:56 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Tue, 20 Jul 2021 17:43:02 +0000 (19:43 +0200)
29 files changed:
src/CMakeLists.txt
src/CacheEntryReader.cpp
src/CacheEntryReader.hpp
src/CacheEntryWriter.cpp
src/CacheEntryWriter.hpp
src/Config.cpp
src/Manifest.cpp
src/Result.cpp
src/ccache.cpp
src/compress.cpp
src/compression/CMakeLists.txt [new file with mode: 0644]
src/compression/Compressor.cpp [moved from src/Compressor.cpp with 81% similarity]
src/compression/Compressor.hpp [moved from src/Compressor.hpp with 88% similarity]
src/compression/Decompressor.cpp [moved from src/Decompressor.cpp with 86% similarity]
src/compression/Decompressor.hpp [moved from src/Decompressor.hpp with 91% similarity]
src/compression/NullCompressor.cpp [moved from src/NullCompressor.cpp with 86% similarity]
src/compression/NullCompressor.hpp [moved from src/NullCompressor.hpp with 94% similarity]
src/compression/NullDecompressor.cpp [moved from src/NullDecompressor.cpp with 86% similarity]
src/compression/NullDecompressor.hpp [moved from src/NullDecompressor.hpp with 93% similarity]
src/compression/ZstdCompressor.cpp [moved from src/ZstdCompressor.cpp with 91% similarity]
src/compression/ZstdCompressor.hpp [moved from src/ZstdCompressor.hpp with 95% similarity]
src/compression/ZstdDecompressor.cpp [moved from src/ZstdDecompressor.cpp with 88% similarity]
src/compression/ZstdDecompressor.hpp [moved from src/ZstdDecompressor.hpp with 96% similarity]
src/compression/types.cpp [moved from src/Compression.cpp with 87% similarity]
src/compression/types.hpp [moved from src/Compression.hpp with 91% similarity]
unittest/CMakeLists.txt
unittest/test_NullCompression.cpp
unittest/test_ZstdCompression.cpp
unittest/test_compression_types.cpp [moved from unittest/test_Compression.cpp with 56% similarity]

index 168234b00cf72ba7a08be55ee331660f852d2e2b..f699f96e7c4cd0291ec052af532d8e7955df71cf 100644 (file)
@@ -5,20 +5,15 @@ set(
   CacheEntryReader.cpp
   CacheEntryWriter.cpp
   CacheFile.cpp
-  Compression.cpp
-  Compressor.cpp
   Config.cpp
   Context.cpp
   Counters.cpp
-  Decompressor.cpp
   Depfile.cpp
   Fd.cpp
   Hash.cpp
   Lockfile.cpp
   Logging.cpp
   Manifest.cpp
-  NullCompressor.cpp
-  NullDecompressor.cpp
   ProgressBar.cpp
   Result.cpp
   ResultDumper.cpp
@@ -30,8 +25,6 @@ set(
   TemporaryFile.cpp
   ThreadPool.cpp
   Util.cpp
-  ZstdCompressor.cpp
-  ZstdDecompressor.cpp
   argprocessing.cpp
   assertions.cpp
   ccache.cpp
@@ -92,6 +85,7 @@ if(REDIS_STORAGE_BACKEND)
            third_party_lib)
 endif()
 
+add_subdirectory(compression)
 add_subdirectory(core)
 add_subdirectory(storage)
 add_subdirectory(third_party)
index 31bbd30998f6a9c594f5d5e76aa4fa7f067b712f..79271c7c5d2ae3fe2657ec2731fe59d046e09fad 100644 (file)
@@ -18,9 +18,9 @@
 
 #include "CacheEntryReader.hpp"
 
-#include "Compressor.hpp"
 #include "fmtmacros.hpp"
 
+#include <compression/Compressor.hpp>
 #include <core/exceptions.hpp>
 
 #include "third_party/fmt/core.h"
@@ -36,7 +36,7 @@ CacheEntryReader::CacheEntryReader(FILE* stream,
 
   memcpy(m_magic, header_bytes, sizeof(m_magic));
   m_version = header_bytes[4];
-  m_compression_type = Compression::type_from_int(header_bytes[5]);
+  m_compression_type = compression::type_from_int(header_bytes[5]);
   m_compression_level = header_bytes[6];
   Util::big_endian_to_int(header_bytes + 7, m_content_size);
 
@@ -53,7 +53,8 @@ CacheEntryReader::CacheEntryReader(FILE* stream,
   }
 
   m_checksum.update(header_bytes, sizeof(header_bytes));
-  m_decompressor = Decompressor::create_from_type(m_compression_type, stream);
+  m_decompressor =
+    compression::Decompressor::create_from_type(m_compression_type, stream);
 }
 
 void
@@ -63,7 +64,7 @@ CacheEntryReader::dump_header(FILE* dump_stream)
   PRINT(dump_stream, "Version: {}\n", m_version);
   PRINT(dump_stream,
         "Compression type: {}\n",
-        Compression::type_to_string(m_compression_type));
+        compression::type_to_string(m_compression_type));
   PRINT(dump_stream, "Compression level: {}\n", m_compression_level);
   PRINT(dump_stream, "Content size: {}\n", m_content_size);
 }
index ba98a66e56b774aae2f5a850c7562dd47b0b7a56..f79bca2d1580226366c3d32156989996202167a7 100644 (file)
 #pragma once
 
 #include "Checksum.hpp"
-#include "Decompressor.hpp"
 #include "Util.hpp"
 
+#include <compression/Decompressor.hpp>
+
 #include <cstdint>
 #include <cstdio>
 #include <memory>
@@ -82,7 +83,7 @@ public:
   uint8_t version() const;
 
   // Get compression type.
-  Compression::Type compression_type() const;
+  compression::Type compression_type() const;
 
   // Get compression level.
   int8_t compression_level() const;
@@ -91,11 +92,11 @@ public:
   uint64_t content_size() const;
 
 private:
-  std::unique_ptr<Decompressor> m_decompressor;
+  std::unique_ptr<compression::Decompressor> m_decompressor;
   Checksum m_checksum;
   uint8_t m_magic[4];
   uint8_t m_version;
-  Compression::Type m_compression_type;
+  compression::Type m_compression_type;
   int8_t m_compression_level;
   uint64_t m_content_size;
 };
@@ -121,7 +122,7 @@ CacheEntryReader::version() const
   return m_version;
 }
 
-inline Compression::Type
+inline compression::Type
 CacheEntryReader::compression_type() const
 {
   return m_compression_type;
index d29f7d446da94d9445cab20cb3a0c6d2d30b7331..e04312029a0d6589f39ecc8fa83ef424943838c7 100644 (file)
 CacheEntryWriter::CacheEntryWriter(FILE* stream,
                                    const uint8_t* magic,
                                    uint8_t version,
-                                   Compression::Type compression_type,
+                                   compression::Type compression_type,
                                    int8_t compression_level,
                                    uint64_t payload_size)
   // clang-format off
-  : m_compressor(
-      Compressor::create_from_type(compression_type, stream, compression_level))
+  : m_compressor(compression::Compressor::create_from_type(
+                   compression_type, stream, compression_level))
 // clang-format on
 {
   uint8_t header_bytes[15];
index ccbbdff7d4548e912645073834ae823459e605f5..b0e3a8cada07ed69ba6675f9035659105729b4e9 100644 (file)
 #pragma once
 
 #include "Checksum.hpp"
-#include "Compressor.hpp"
 #include "Util.hpp"
 
+#include <compression/Compressor.hpp>
+
 #include <cstdint>
 #include <cstdio>
 #include <memory>
@@ -44,7 +45,7 @@ public:
   CacheEntryWriter(FILE* stream,
                    const uint8_t* magic,
                    uint8_t version,
-                   Compression::Type compression_type,
+                   compression::Type compression_type,
                    int8_t compression_level,
                    uint64_t payload_size);
 
@@ -72,7 +73,7 @@ public:
   void finalize();
 
 private:
-  std::unique_ptr<Compressor> m_compressor;
+  std::unique_ptr<compression::Compressor> m_compressor;
   Checksum m_checksum;
 };
 
index 409a4a6e36f06692bfed7cd83f659edac3491892..48c05808beab4a8eaca2dbb2b2aa6fcbc5dc8afd 100644 (file)
 #include "Config.hpp"
 
 #include "AtomicFile.hpp"
-#include "Compression.hpp"
 #include "MiniTrace.hpp"
 #include "Sloppiness.hpp"
 #include "Util.hpp"
 #include "assertions.hpp"
 #include "fmtmacros.hpp"
 
+#include <compression/types.hpp>
 #include <core/exceptions.hpp>
 #include <core/wincompat.hpp>
 #include <util/expected.hpp>
index 9fd4fd8f66f058d7ed9dc9d0594f5c86828ad8de..c27416d35d49dd5596db73ed3fe3bf3abca020e5 100644 (file)
@@ -382,8 +382,8 @@ write_manifest(const Config& config,
   CacheEntryWriter writer(atomic_manifest_file.stream(),
                           Manifest::k_magic,
                           Manifest::k_version,
-                          Compression::type_from_config(config),
-                          Compression::level_from_config(config),
+                          compression::type_from_config(config),
+                          compression::level_from_config(config),
                           payload_size);
   writer.write<uint32_t>(mf.files.size());
   for (const auto& file : mf.files) {
index e4867c675a1fedf77934884363191ead4f2d1ced..000eb546071c94eb165fe2c65dbc4216a5a6bb1d 100644 (file)
@@ -368,8 +368,8 @@ Writer::do_finalize()
   CacheEntryWriter writer(atomic_result_file.stream(),
                           k_magic,
                           k_version,
-                          Compression::type_from_config(m_ctx.config),
-                          Compression::level_from_config(m_ctx.config),
+                          compression::type_from_config(m_ctx.config),
+                          compression::level_from_config(m_ctx.config),
                           payload_size);
 
   writer.write<uint8_t>(m_entries_to_write.size());
index 9be2837a7c4592198e35a4e843f131d391a47f60..74197d227b6de0ec5e2bf4451ba94753c62220ec 100644 (file)
@@ -22,7 +22,6 @@
 #include "Args.hpp"
 #include "ArgsInfo.hpp"
 #include "Checksum.hpp"
-#include "Compression.hpp"
 #include "Context.hpp"
 #include "Depfile.hpp"
 #include "Fd.hpp"
@@ -54,6 +53,7 @@
 #include "hashutil.hpp"
 #include "language.hpp"
 
+#include <compression/types.hpp>
 #include <core/exceptions.hpp>
 #include <core/types.hpp>
 #include <core/wincompat.hpp>
index 30d92afe738c9231eb588e9f88d61bdde32c477f..9693ee71b1fcc8da54423a9ac7358ca40e6f2915 100644 (file)
 #include "Result.hpp"
 #include "Statistics.hpp"
 #include "ThreadPool.hpp"
-#include "ZstdCompressor.hpp"
 #include "assertions.hpp"
 #include "fmtmacros.hpp"
 
+#include <compression/ZstdCompressor.hpp>
 #include <core/exceptions.hpp>
 #include <core/wincompat.hpp>
 #include <util/string.hpp>
@@ -148,7 +148,7 @@ create_reader(const CacheFile& cache_file, FILE* stream)
 std::unique_ptr<CacheEntryWriter>
 create_writer(FILE* stream,
               const CacheEntryReader& reader,
-              Compression::Type compression_type,
+              compression::Type compression_type,
               int8_t compression_level)
 {
   return std::make_unique<CacheEntryWriter>(stream,
@@ -171,8 +171,10 @@ recompress_file(RecompressionStatistics& statistics,
   auto old_stat = Stat::stat(cache_file.path(), Stat::OnError::log);
   uint64_t content_size = reader->content_size();
   int8_t wanted_level =
-    level ? (*level == 0 ? ZstdCompressor::default_compression_level : *level)
-          : 0;
+    level
+      ? (*level == 0 ? compression::ZstdCompressor::default_compression_level
+                     : *level)
+      : 0;
 
   if (reader->compression_level() == wanted_level) {
     statistics.update(content_size, old_stat.size(), old_stat.size(), 0);
@@ -186,7 +188,7 @@ recompress_file(RecompressionStatistics& statistics,
   auto writer =
     create_writer(atomic_new_file.stream(),
                   *reader,
-                  level ? Compression::Type::zstd : Compression::Type::none,
+                  level ? compression::Type::zstd : compression::Type::none,
                   wanted_level);
 
   char buffer[CCACHE_READ_BUFFER_SIZE];
diff --git a/src/compression/CMakeLists.txt b/src/compression/CMakeLists.txt
new file mode 100644 (file)
index 0000000..50ceb2c
--- /dev/null
@@ -0,0 +1,12 @@
+set(
+  sources
+  ${CMAKE_CURRENT_SOURCE_DIR}/Compressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/Decompressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/NullCompressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/NullDecompressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/ZstdCompressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/ZstdDecompressor.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/types.cpp
+)
+
+target_sources(ccache_lib PRIVATE ${sources})
similarity index 81%
rename from src/Compressor.cpp
rename to src/compression/Compressor.cpp
index 2ae5ea690bc2588341546cfe0e76a459c4516a78..cd695beea5c86cf3c7e8178b592cba0f368c17a4 100644 (file)
 
 #include <memory>
 
+namespace compression {
+
 std::unique_ptr<Compressor>
-Compressor::create_from_type(Compression::Type type,
-                             FILE* stream,
-                             int8_t compression_level)
+Compressor::create_from_type(const Type type,
+                             FILE* const stream,
+                             const int8_t compression_level)
 {
   switch (type) {
-  case Compression::Type::none:
+  case compression::Type::none:
     return std::make_unique<NullCompressor>(stream);
 
-  case Compression::Type::zstd:
+  case compression::Type::zstd:
     return std::make_unique<ZstdCompressor>(stream, compression_level);
   }
 
   ASSERT(false);
 }
+
+} // namespace compression
similarity index 88%
rename from src/Compressor.hpp
rename to src/compression/Compressor.hpp
index 5588dada1843ca137b52e9e9bbef2be13c65716f..9c8e56393a31a56bd4521395955bff0dfa984757 100644 (file)
 
 #pragma once
 
-#include "Compression.hpp"
+#include <compression/types.hpp>
 
 #include <cstdint>
 #include <cstdio>
 #include <memory>
 
+namespace compression {
+
 class Compressor
 {
 public:
@@ -35,9 +37,8 @@ public:
   // - type: The type.
   // - stream: The stream to write to.
   // - compression_level: Desired compression level.
-  static std::unique_ptr<Compressor> create_from_type(Compression::Type type,
-                                                      FILE* stream,
-                                                      int8_t compression_level);
+  static std::unique_ptr<Compressor>
+  create_from_type(Type type, FILE* stream, int8_t compression_level);
 
   // Get the actual compression level used for the compressed stream.
   virtual int8_t actual_compression_level() const = 0;
@@ -65,3 +66,5 @@ public:
   // and throws Error if not.
   virtual void finalize() = 0;
 };
+
+} // namespace compression
similarity index 86%
rename from src/Decompressor.cpp
rename to src/compression/Decompressor.cpp
index 8badf3b46d92783df163d0489efd6daf461d3b0c..3a76b1643e4791638f060300170c1245138060b5 100644 (file)
 #include "ZstdDecompressor.hpp"
 #include "assertions.hpp"
 
+namespace compression {
+
 std::unique_ptr<Decompressor>
-Decompressor::create_from_type(Compression::Type type, FILE* stream)
+Decompressor::create_from_type(Type type, FILE* stream)
 {
   switch (type) {
-  case Compression::Type::none:
+  case compression::Type::none:
     return std::make_unique<NullDecompressor>(stream);
 
-  case Compression::Type::zstd:
+  case compression::Type::zstd:
     return std::make_unique<ZstdDecompressor>(stream);
   }
 
   ASSERT(false);
 }
+
+} // namespace compression
similarity index 91%
rename from src/Decompressor.hpp
rename to src/compression/Decompressor.hpp
index 44a2ae8e657ef969ad79859c0c7439a3dc4c5a18..8d6b173b06b7311a8361904ff15034d3f8c748bf 100644 (file)
 
 #pragma once
 
-#include "Compression.hpp"
+#include <compression/types.hpp>
 
 #include <cstdio>
 #include <memory>
 
+namespace compression {
+
 class Decompressor
 {
 public:
@@ -33,7 +35,7 @@ public:
   // Parameters:
   // - type: The type.
   // - stream: The stream to read from.
-  static std::unique_ptr<Decompressor> create_from_type(Compression::Type type,
+  static std::unique_ptr<Decompressor> create_from_type(Type type,
                                                         FILE* stream);
 
   // Read data into a buffer from the compressed stream.
@@ -51,3 +53,5 @@ public:
   // and throws Error if not.
   virtual void finalize() = 0;
 };
+
+} // namespace compression
similarity index 86%
rename from src/NullCompressor.cpp
rename to src/compression/NullCompressor.cpp
index b51d84d18d04b2a62648823ab43d03d618cb1184..4d5ee67a5afee5f1972b2563f4dd3e168ff016f0 100644 (file)
@@ -20,7 +20,9 @@
 
 #include <core/exceptions.hpp>
 
-NullCompressor::NullCompressor(FILE* stream) : m_stream(stream)
+namespace compression {
+
+NullCompressor::NullCompressor(FILE* const stream) : m_stream(stream)
 {
 }
 
@@ -31,7 +33,7 @@ NullCompressor::actual_compression_level() const
 }
 
 void
-NullCompressor::write(const void* data, size_t count)
+NullCompressor::write(const void* const data, const size_t count)
 {
   if (fwrite(data, 1, count, m_stream) != count) {
     throw core::Error("failed to write to uncompressed stream");
@@ -45,3 +47,5 @@ NullCompressor::finalize()
     throw core::Error("failed to finalize uncompressed stream");
   }
 }
+
+} // namespace compression
similarity index 94%
rename from src/NullCompressor.hpp
rename to src/compression/NullCompressor.hpp
index e7abe29f8e969ea7fa6bc6a2e886c9ba2f85469c..2f26c7b03ef25ef426a909ead229885a3666b493 100644 (file)
 #pragma once
 
 #include "Compressor.hpp"
-#include "NonCopyable.hpp"
+
+#include <NonCopyable.hpp>
 
 #include <cstdio>
 
+namespace compression {
+
 // A compressor of an uncompressed stream.
 class NullCompressor : public Compressor, NonCopyable
 {
@@ -38,3 +41,5 @@ public:
 private:
   FILE* m_stream;
 };
+
+} // namespace compression
similarity index 86%
rename from src/NullDecompressor.cpp
rename to src/compression/NullDecompressor.cpp
index bcb1c69df119685a0ab94fb42275493521f601aa..f25da6354cc331070eea23f22d9dfe9f84e78516 100644 (file)
 
 #include <core/exceptions.hpp>
 
-NullDecompressor::NullDecompressor(FILE* stream) : m_stream(stream)
+namespace compression {
+
+NullDecompressor::NullDecompressor(FILE* const stream) : m_stream(stream)
 {
 }
 
 void
-NullDecompressor::read(void* data, size_t count)
+NullDecompressor::read(void* const data, const size_t count)
 {
   if (fread(data, count, 1, m_stream) != 1) {
     throw core::Error("failed to read from uncompressed stream");
@@ -39,3 +41,5 @@ NullDecompressor::finalize()
     throw core::Error("garbage data at end of uncompressed stream");
   }
 }
+
+} // namespace compression
similarity index 93%
rename from src/NullDecompressor.hpp
rename to src/compression/NullDecompressor.hpp
index 68ccf88229098055b2bf504b18bd8d63a1323263..722319d86fdfcda27f0d5b05466a83250a220959 100644 (file)
 #pragma once
 
 #include "Decompressor.hpp"
-#include "NonCopyable.hpp"
+
+#include <NonCopyable.hpp>
 
 #include <cstdio>
 
+namespace compression {
+
 // A decompressor of an uncompressed stream.
 class NullDecompressor : public Decompressor, NonCopyable
 {
@@ -37,3 +40,5 @@ public:
 private:
   FILE* m_stream;
 };
+
+} // namespace compression
similarity index 91%
rename from src/ZstdCompressor.cpp
rename to src/compression/ZstdCompressor.cpp
index c89d60cbd29854d07cead42b18f4ed0374a78202..8ff737983e853ff9bc64475a62368ed8cfb32a6c 100644 (file)
@@ -25,7 +25,9 @@
 
 #include <algorithm>
 
-ZstdCompressor::ZstdCompressor(FILE* stream, int8_t compression_level)
+namespace compression {
+
+ZstdCompressor::ZstdCompressor(FILE* const stream, int8_t compression_level)
   : m_stream(stream),
     m_zstd_stream(ZSTD_createCStream())
 {
@@ -71,7 +73,7 @@ ZstdCompressor::actual_compression_level() const
 }
 
 void
-ZstdCompressor::write(const void* data, size_t count)
+ZstdCompressor::write(const void* const data, const size_t count)
 {
   m_zstd_in.src = data;
   m_zstd_in.size = count;
@@ -87,7 +89,7 @@ ZstdCompressor::write(const void* data, size_t count)
     m_zstd_out.pos = 0;
     ret = ZSTD_compressStream(m_zstd_stream, &m_zstd_out, &m_zstd_in);
     ASSERT(!(ZSTD_isError(ret)));
-    size_t compressed_bytes = m_zstd_out.pos;
+    const size_t compressed_bytes = m_zstd_out.pos;
     if (fwrite(buffer, 1, compressed_bytes, m_stream) != compressed_bytes
         || ferror(m_stream)) {
       throw core::Error("failed to write to zstd output stream ");
@@ -100,7 +102,7 @@ ZstdCompressor::write(const void* data, size_t count)
     m_zstd_out.size = sizeof(buffer);
     m_zstd_out.pos = 0;
     ret = ZSTD_endStream(m_zstd_stream, &m_zstd_out);
-    size_t compressed_bytes = m_zstd_out.pos;
+    const size_t compressed_bytes = m_zstd_out.pos;
     if (fwrite(buffer, 1, compressed_bytes, m_stream) != compressed_bytes
         || ferror(m_stream)) {
       throw core::Error("failed to write to zstd output stream");
@@ -113,3 +115,5 @@ ZstdCompressor::finalize()
 {
   write(nullptr, 0);
 }
+
+} // namespace compression
similarity index 95%
rename from src/ZstdCompressor.hpp
rename to src/compression/ZstdCompressor.hpp
index 2551d13261787ba36edf6f763edeb6e50d320998..a5e10ea5af893ac46dcfd34958df5378b64d2847 100644 (file)
 #pragma once
 
 #include "Compressor.hpp"
-#include "NonCopyable.hpp"
+
+#include <NonCopyable.hpp>
 
 #include <zstd.h>
 
 #include <cstdint>
 
+namespace compression {
+
 // A compressor of a Zstandard stream.
 class ZstdCompressor : public Compressor, NonCopyable
 {
@@ -49,3 +52,5 @@ private:
   ZSTD_outBuffer m_zstd_out;
   int8_t m_compression_level;
 };
+
+} // namespace compression
similarity index 88%
rename from src/ZstdDecompressor.cpp
rename to src/compression/ZstdDecompressor.cpp
index f02f2e4d84f3ded0981675c6045f6426fa429fc0..916a6e8fe1af3c6122689fa9f8a3cc57cd34b025 100644 (file)
 
 #include <core/exceptions.hpp>
 
-ZstdDecompressor::ZstdDecompressor(FILE* stream)
+namespace compression {
+
+ZstdDecompressor::ZstdDecompressor(FILE* const stream)
   : m_stream(stream),
     m_input_size(0),
     m_input_consumed(0),
     m_zstd_stream(ZSTD_createDStream()),
     m_reached_stream_end(false)
 {
-  size_t ret = ZSTD_initDStream(m_zstd_stream);
+  const size_t ret = ZSTD_initDStream(m_zstd_stream);
   if (ZSTD_isError(ret)) {
     ZSTD_freeDStream(m_zstd_stream);
     throw core::Error("failed to initialize zstd decompression stream");
@@ -42,7 +44,7 @@ ZstdDecompressor::~ZstdDecompressor()
 }
 
 void
-ZstdDecompressor::read(void* data, size_t count)
+ZstdDecompressor::read(void* const data, const size_t count)
 {
   size_t bytes_read = 0;
   while (bytes_read < count) {
@@ -62,7 +64,8 @@ ZstdDecompressor::read(void* data, size_t count)
     m_zstd_out.dst = static_cast<uint8_t*>(data) + bytes_read;
     m_zstd_out.size = count - bytes_read;
     m_zstd_out.pos = 0;
-    size_t ret = ZSTD_decompressStream(m_zstd_stream, &m_zstd_out, &m_zstd_in);
+    const size_t ret =
+      ZSTD_decompressStream(m_zstd_stream, &m_zstd_out, &m_zstd_in);
     if (ZSTD_isError(ret)) {
       throw core::Error("failed to read from zstd input stream");
     }
@@ -82,3 +85,5 @@ ZstdDecompressor::finalize()
     throw core::Error("garbage data at end of zstd input stream");
   }
 }
+
+} // namespace compression
similarity index 96%
rename from src/ZstdDecompressor.hpp
rename to src/compression/ZstdDecompressor.hpp
index 2868982b0d83c2fbecbfd380dc44adeb46c90003..aee51b6d2f7e2cdad374c8c0537edff8fba6e0f0 100644 (file)
@@ -24,6 +24,8 @@
 
 #include <cstdint>
 
+namespace compression {
+
 // A decompressor of a Zstandard stream.
 class ZstdDecompressor : public Decompressor
 {
@@ -47,3 +49,5 @@ private:
   ZSTD_outBuffer m_zstd_out;
   bool m_reached_stream_end;
 };
+
+} // namespace compression
similarity index 87%
rename from src/Compression.cpp
rename to src/compression/types.cpp
index 8b1ef00cfb21f06c710bef571f8347dab1c89c2a..d0e91f6099882ebc3bd63509f077bf4dde05c0b9 100644 (file)
 // this program; if not, write to the Free Software Foundation, Inc., 51
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-#include "Compression.hpp"
-
-#include "Config.hpp"
-#include "Context.hpp"
-#include "assertions.hpp"
+#include "types.hpp"
 
+#include <Config.hpp>
+#include <Context.hpp>
+#include <assertions.hpp>
 #include <core/exceptions.hpp>
 
-namespace Compression {
+namespace compression {
 
 int8_t
 level_from_config(const Config& config)
@@ -39,7 +38,7 @@ type_from_config(const Config& config)
 }
 
 Type
-type_from_int(uint8_t type)
+type_from_int(const uint8_t type)
 {
   switch (type) {
   case static_cast<uint8_t>(Type::none):
@@ -53,7 +52,7 @@ type_from_int(uint8_t type)
 }
 
 std::string
-type_to_string(Type type)
+type_to_string(const Type type)
 {
   switch (type) {
   case Type::none:
@@ -66,4 +65,4 @@ type_to_string(Type type)
   ASSERT(false);
 }
 
-} // namespace Compression
+} // namespace compression
similarity index 91%
rename from src/Compression.hpp
rename to src/compression/types.hpp
index 42721e9790f43e90fa8641a270bd8aca39a42293..4b0e35e63036c97857abbe30525389304bbb3eae 100644 (file)
@@ -23,7 +23,7 @@
 
 class Config;
 
-namespace Compression {
+namespace compression {
 
 enum class Type : uint8_t {
   none = 0,
@@ -36,6 +36,6 @@ Type type_from_config(const Config& config);
 
 Type type_from_int(uint8_t type);
 
-std::string type_to_string(Compression::Type type);
+std::string type_to_string(Type type);
 
-} // namespace Compression
+} // namespace compression
index 7c57b4166fbab5b258a7c5f484f48c32f2bfbee9..c9f129cd1da4345094e41d91ba596ffef4ac7390 100644 (file)
@@ -5,7 +5,6 @@ set(
   test_Args.cpp
   test_AtomicFile.cpp
   test_Checksum.cpp
-  test_Compression.cpp
   test_Config.cpp
   test_Counters.cpp
   test_Depfile.cpp
@@ -20,6 +19,7 @@ set(
   test_argprocessing.cpp
   test_ccache.cpp
   test_compopt.cpp
+  test_compression_types.cpp
   test_hashutil.cpp
   test_util_Tokenizer.cpp
   test_util_expected.cpp
index 9ea78afef471b1bd727a9b2dd2a459bfa45d6746..6f87596986514d4fef6e9cd00b5a8b912dd3c578 100644 (file)
 // this program; if not, write to the Free Software Foundation, Inc., 51
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-#include "../src/Compression.hpp"
-#include "../src/Compressor.hpp"
-#include "../src/Decompressor.hpp"
 #include "../src/File.hpp"
 #include "TestUtil.hpp"
 
+#include <compression/Compressor.hpp>
+#include <compression/Decompressor.hpp>
+#include <compression/types.hpp>
+
 #include "third_party/doctest.h"
 
 #include <cstring>
 
+using compression::Compressor;
+using compression::Decompressor;
 using TestUtil::TestContext;
 
 TEST_SUITE_BEGIN("NullCompression");
 
-TEST_CASE("Compression::Type::none roundtrip")
+TEST_CASE("compression::Type::none roundtrip")
 {
   TestContext test_context;
 
   File f("data.uncompressed", "w");
   auto compressor =
-    Compressor::create_from_type(Compression::Type::none, f.get(), 1);
+    Compressor::create_from_type(compression::Type::none, f.get(), 1);
   CHECK(compressor->actual_compression_level() == 0);
   compressor->write("foobar", 6);
   compressor->finalize();
 
   f.open("data.uncompressed", "r");
   auto decompressor =
-    Decompressor::create_from_type(Compression::Type::none, f.get());
+    Decompressor::create_from_type(compression::Type::none, f.get());
 
   char buffer[4];
   decompressor->read(buffer, 4);
index 834350346ef591ab9af91ba2eb0b647e2fbc045c..fd06dc4e8425d4189d06055923001bf711e4f0d5 100644 (file)
 // this program; if not, write to the Free Software Foundation, Inc., 51
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-#include "../src/Compression.hpp"
-#include "../src/Compressor.hpp"
-#include "../src/Decompressor.hpp"
 #include "../src/File.hpp"
 #include "TestUtil.hpp"
 
+#include <compression/Compressor.hpp>
+#include <compression/Decompressor.hpp>
+#include <compression/types.hpp>
+
 #include "third_party/doctest.h"
 
 #include <cstring>
 
+using compression::Compressor;
+using compression::Decompressor;
 using TestUtil::TestContext;
 
 TEST_SUITE_BEGIN("ZstdCompression");
 
-TEST_CASE("Small Compression::Type::zstd roundtrip")
+TEST_CASE("Small compression::Type::zstd roundtrip")
 {
   TestContext test_context;
 
   File f("data.zstd", "wb");
   auto compressor =
-    Compressor::create_from_type(Compression::Type::zstd, f.get(), 1);
+    Compressor::create_from_type(compression::Type::zstd, f.get(), 1);
   CHECK(compressor->actual_compression_level() == 1);
   compressor->write("foobar", 6);
   compressor->finalize();
 
   f.open("data.zstd", "rb");
   auto decompressor =
-    Decompressor::create_from_type(Compression::Type::zstd, f.get());
+    Decompressor::create_from_type(compression::Type::zstd, f.get());
 
   char buffer[4];
   decompressor->read(buffer, 4);
@@ -64,7 +67,7 @@ TEST_CASE("Small Compression::Type::zstd roundtrip")
                     "failed to read from zstd input stream");
 }
 
-TEST_CASE("Large compressible Compression::Type::zstd roundtrip")
+TEST_CASE("Large compressible compression::Type::zstd roundtrip")
 {
   TestContext test_context;
 
@@ -72,7 +75,7 @@ TEST_CASE("Large compressible Compression::Type::zstd roundtrip")
 
   File f("data.zstd", "wb");
   auto compressor =
-    Compressor::create_from_type(Compression::Type::zstd, f.get(), 1);
+    Compressor::create_from_type(compression::Type::zstd, f.get(), 1);
   for (size_t i = 0; i < 1000; i++) {
     compressor->write(data, sizeof(data));
   }
@@ -80,7 +83,7 @@ TEST_CASE("Large compressible Compression::Type::zstd roundtrip")
 
   f.open("data.zstd", "rb");
   auto decompressor =
-    Decompressor::create_from_type(Compression::Type::zstd, f.get());
+    Decompressor::create_from_type(compression::Type::zstd, f.get());
 
   char buffer[sizeof(data)];
   for (size_t i = 0; i < 1000; i++) {
@@ -96,7 +99,7 @@ TEST_CASE("Large compressible Compression::Type::zstd roundtrip")
                     "failed to read from zstd input stream");
 }
 
-TEST_CASE("Large uncompressible Compression::Type::zstd roundtrip")
+TEST_CASE("Large uncompressible compression::Type::zstd roundtrip")
 {
   TestContext test_context;
 
@@ -107,13 +110,13 @@ TEST_CASE("Large uncompressible Compression::Type::zstd roundtrip")
 
   File f("data.zstd", "wb");
   auto compressor =
-    Compressor::create_from_type(Compression::Type::zstd, f.get(), 1);
+    Compressor::create_from_type(compression::Type::zstd, f.get(), 1);
   compressor->write(data, sizeof(data));
   compressor->finalize();
 
   f.open("data.zstd", "rb");
   auto decompressor =
-    Decompressor::create_from_type(Compression::Type::zstd, f.get());
+    Decompressor::create_from_type(compression::Type::zstd, f.get());
 
   char buffer[sizeof(data)];
   decompressor->read(buffer, sizeof(buffer));
similarity index 56%
rename from unittest/test_Compression.cpp
rename to unittest/test_compression_types.cpp
index d143e0630e51a6a3ca189929d41ef3bd9f345018..82edb0e5db8b12906cfc7806197d4c1260d2d6f1 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2019-2020 Joel Rosdahl and other contributors
+// Copyright (C) 2019-2021 Joel Rosdahl and other contributors
 //
 // See doc/AUTHORS.adoc for a complete list of contributors.
 //
 // this program; if not, write to the Free Software Foundation, Inc., 51
 // Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-#include "../src/Compression.hpp"
 #include "../src/Config.hpp"
 
+#include <compression/types.hpp>
+
 #include "third_party/doctest.h"
 
-TEST_SUITE_BEGIN("Compression");
+TEST_SUITE_BEGIN("compression");
 
-TEST_CASE("Compression::level_from_config")
+TEST_CASE("compression::level_from_config")
 {
   Config config;
-  CHECK(Compression::level_from_config(config) == 0);
+  CHECK(compression::level_from_config(config) == 0);
 }
 
-TEST_CASE("Compression::type_from_config")
+TEST_CASE("compression::type_from_config")
 {
   Config config;
-  CHECK(Compression::type_from_config(config) == Compression::Type::zstd);
+  CHECK(compression::type_from_config(config) == compression::Type::zstd);
 }
 
-TEST_CASE("Compression::type_from_int")
+TEST_CASE("compression::type_from_int")
 {
-  CHECK(Compression::type_from_int(0) == Compression::Type::none);
-  CHECK(Compression::type_from_int(1) == Compression::Type::zstd);
-  CHECK_THROWS_WITH(Compression::type_from_int(2), "Unknown type: 2");
+  CHECK(compression::type_from_int(0) == compression::Type::none);
+  CHECK(compression::type_from_int(1) == compression::Type::zstd);
+  CHECK_THROWS_WITH(compression::type_from_int(2), "Unknown type: 2");
 }
 
-TEST_CASE("Compression::type_to_string")
+TEST_CASE("compression::type_to_string")
 {
-  CHECK(Compression::type_to_string(Compression::Type::none) == "none");
-  CHECK(Compression::type_to_string(Compression::Type::zstd) == "zstd");
+  CHECK(compression::type_to_string(compression::Type::none) == "none");
+  CHECK(compression::type_to_string(compression::Type::zstd) == "zstd");
 }
 
 TEST_SUITE_END();