diff --git a/include/dwarfs/filesystem_v2.h b/include/dwarfs/filesystem_v2.h index 097eef1d..1b9a9d55 100644 --- a/include/dwarfs/filesystem_v2.h +++ b/include/dwarfs/filesystem_v2.h @@ -84,6 +84,8 @@ class filesystem_v2 { impl_->dump(os, detail_level); } + std::string dump(int detail_level) const { return impl_->dump(detail_level); } + folly::dynamic info_as_dynamic(int detail_level) const { return impl_->info_as_dynamic(detail_level); } @@ -199,6 +201,7 @@ class filesystem_v2 { virtual int check(filesystem_check_level level, size_t num_threads) const = 0; virtual void dump(std::ostream& os, int detail_level) const = 0; + virtual std::string dump(int detail_level) const = 0; virtual folly::dynamic info_as_dynamic(int detail_level) const = 0; virtual folly::dynamic metadata_as_dynamic() const = 0; virtual std::string serialize_metadata_as_json(bool simple) const = 0; diff --git a/src/dwarfs/filesystem_v2.cpp b/src/dwarfs/filesystem_v2.cpp index 43d5426e..7a559707 100644 --- a/src/dwarfs/filesystem_v2.cpp +++ b/src/dwarfs/filesystem_v2.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -360,6 +361,7 @@ class filesystem_ final : public filesystem_v2::impl { int check(filesystem_check_level level, size_t num_threads) const override; void dump(std::ostream& os, int detail_level) const override; + std::string dump(int detail_level) const override; folly::dynamic info_as_dynamic(int detail_level) const override; folly::dynamic metadata_as_dynamic() const override; std::string serialize_metadata_as_json(bool simple) const override; @@ -842,6 +844,13 @@ void filesystem_::dump(std::ostream& os, int detail_level) const { }); } +template +std::string filesystem_::dump(int detail_level) const { + std::ostringstream oss; + dump(oss, detail_level); + return oss.str(); +} + template folly::dynamic filesystem_::info_as_dynamic(int detail_level) const {