diff --git a/src/open_viii/archive/ZZZ.hpp b/src/open_viii/archive/ZZZ.hpp index a0e0a148..06d06d85 100644 --- a/src/open_viii/archive/ZZZ.hpp +++ b/src/open_viii/archive/ZZZ.hpp @@ -37,7 +37,8 @@ struct [[maybe_unused]] ZZZ * uint32_t count_{}; fallowed by array of file data */ std::vector m_data{}; - [[nodiscard]] auto load_data_from_file() const + [[nodiscard]] auto + load_data_from_file() const { std::vector data{}; if (m_path.has_extension() @@ -58,7 +59,8 @@ struct [[maybe_unused]] ZZZ } return data; } - void sort_data() + void + sort_data() { std::ranges::sort(m_data, [](const FileData &left, const FileData &right) { const auto right_string = right.get_path_string(); @@ -66,19 +68,22 @@ struct [[maybe_unused]] ZZZ const auto right_size = std::ranges::size(right_string); const auto left_size = std::ranges::size(left_string); if (left_size == right_size) { - return left_string < right_string; //clangtidy wants < to be nullptr + return left_string < right_string;// clangtidy wants < to be nullptr } return left_size < right_size; }); m_data.shrink_to_fit(); } + public: - constexpr static auto EXT = std::string_view(".zzz"); - [[maybe_unused]] [[nodiscard]] const auto &data() const noexcept + constexpr static auto EXT = std::string_view(".zzz"); + [[maybe_unused]] [[nodiscard]] const auto & + data() const noexcept { return m_data; } - [[maybe_unused]] [[nodiscard]] const auto &path() const noexcept + [[maybe_unused]] [[nodiscard]] const auto & + path() const noexcept { return m_path; } @@ -112,15 +117,15 @@ struct [[maybe_unused]] ZZZ tmp.shrink_to_fit(); return tmp; } - [[nodiscard]] friend std::ostream &operator<<(std::ostream &os, - const ZZZ & data) + [[nodiscard]] friend std::ostream & + operator<<(std::ostream &os, const ZZZ &data) { return os << '{' << data.path().stem().string() << " zzz {" << std::ranges::size(data.data()) << " File Entries from : " << data.path() << "}}"; } - [[nodiscard]] friend std::ostream &operator<<(std::ostream & os, - const std::optional &data) + [[nodiscard]] friend std::ostream & + operator<<(std::ostream &os, const std::optional &data) { if (data.has_value()) { return os << data.value(); @@ -145,8 +150,9 @@ struct [[maybe_unused]] ZZZ // return vector; // } template, std::string> UnaryFunctionT> - void execute_on(const std::initializer_list &filename, - const UnaryFunctionT & unary_function) const + void + execute_on(const std::initializer_list &filename, + const UnaryFunctionT &unary_function) const { std::ranges::for_each( data(), @@ -163,12 +169,31 @@ struct [[maybe_unused]] ZZZ requires((std::invocable> || std::invocable, std::string>)) void execute_with_nested( [[maybe_unused]] const std::initializer_list &filename, [[maybe_unused]] const lambdaT lambda, - [[maybe_unused]] const std::initializer_list &nested_filename = {}) const + [[maybe_unused]] const std::initializer_list + &nested_filename = {}) const {} explicit operator bool() const { return !std::ranges::empty(m_data); } + + template + void + save(T &out, const ZZZ &in_zzz) + { + tl::write::append( + out, static_cast(std::ranges::size(in_zzz.data()))); + std::size_t sz = tl::algorithm::transform_reduce( + in_zzz.data(), + [](const FileData &d) { + return d.total_size(); + }, + std::plus())+4U; +// for (const auto &d : in_zzz.data()) { +// append_entry(out, d); +// } + // in_data.output_all_remaining(out); + } }; }// namespace open_viii::archive #endif// VIIIARCHIVE_ZZZ_HPP \ No newline at end of file