diff --git a/zip.hpp b/zip.hpp index bbb92ca..029b69f 100644 --- a/zip.hpp +++ b/zip.hpp @@ -121,6 +121,8 @@ using uint64_t = zip_uint64_t; */ using source = std::function; +using zip_progress_callback = std::function; + /** * \brief File for reading. */ @@ -980,6 +982,16 @@ class archive { return ret; } + + void register_progress_callback(zip_progress_callback callback, double precision) + { + zip_register_progress_callback_with_state( + handle_.get(), + precision, + [](zip*, double p, void* data) { (*static_cast(data))(p); }, + [](void* data) { delete static_cast(data); }, + new zip_progress_callback{std::move(callback)}); + } }; } // !libzip