This is an automated email from the ASF dual-hosted git repository. alsay pushed a commit to branch no_sstream_in_to_string in repository https://gitbox.apache.org/repos/asf/datasketches-cpp.git
commit 9f421141ceef3cfe726c1fabc0c39cda9dee0ab6 Author: AlexanderSaydakov <[email protected]> AuthorDate: Tue Oct 12 14:18:30 2021 -0700 no sstream in to_string() --- sampling/include/var_opt_sketch.hpp | 7 +++-- sampling/include/var_opt_sketch_impl.hpp | 48 +++++++++++++++++--------------- sampling/include/var_opt_union.hpp | 1 + sampling/include/var_opt_union_impl.hpp | 18 ++++++------ 4 files changed, 40 insertions(+), 34 deletions(-) diff --git a/sampling/include/var_opt_sketch.hpp b/sampling/include/var_opt_sketch.hpp index a949899..80db599 100644 --- a/sampling/include/var_opt_sketch.hpp +++ b/sampling/include/var_opt_sketch.hpp @@ -186,6 +186,7 @@ class var_opt_sketch { * Prints a summary of the sketch. * @return the summary as a string */ + template<typename ToStr = ostream_based_to_string<T>> string<A> to_string() const; /** @@ -195,6 +196,7 @@ class var_opt_sketch { * T does not have such an operator defined. * @return a string with the sketch items */ + template<typename ToStr = ostream_based_to_string<T>> string<A> items_to_string() const; class const_iterator; @@ -202,8 +204,8 @@ class var_opt_sketch { const_iterator end() const; private: - typedef typename std::allocator_traits<A>::template rebind_alloc<double> AllocDouble; - typedef typename std::allocator_traits<A>::template rebind_alloc<bool> AllocBool; + using AllocDouble = typename std::allocator_traits<A>::template rebind_alloc<double>; + using AllocBool = typename std::allocator_traits<A>::template rebind_alloc<bool>; static const uint32_t MIN_LG_ARR_ITEMS = 3; @@ -270,6 +272,7 @@ class var_opt_sketch { var_opt_sketch(const var_opt_sketch& other, bool as_sketch, uint64_t adjusted_n); var_opt_sketch(T* data, double* weights, size_t len, uint32_t k, uint64_t n, uint32_t h_count, uint32_t r_count, double total_wt_r, const A& allocator); + template<typename ToStr = ostream_based_to_string<T>> string<A> items_to_string(bool print_gap) const; // internal-use-only update diff --git a/sampling/include/var_opt_sketch_impl.hpp b/sampling/include/var_opt_sketch_impl.hpp index ce0ac40..b28a25e 100644 --- a/sampling/include/var_opt_sketch_impl.hpp +++ b/sampling/include/var_opt_sketch_impl.hpp @@ -21,13 +21,11 @@ #define _VAR_OPT_SKETCH_IMPL_HPP_ #include <memory> -#include <sstream> #include <cmath> #include <random> #include <algorithm> #include "var_opt_sketch.hpp" -#include "serde.hpp" #include "bounds_binomial_proportions.hpp" #include "count_zeros.hpp" #include "memory_operations.hpp" @@ -730,51 +728,55 @@ void var_opt_sketch<T,S,A>::update(T&& item, double weight) { } template<typename T, typename S, typename A> +template<typename ToStr> string<A> var_opt_sketch<T,S,A>::to_string() const { - std::basic_ostringstream<char, std::char_traits<char>, AllocChar<A>> os; - os << "### VarOpt SUMMARY: " << std::endl; - os << " k : " << k_ << std::endl; - os << " h : " << h_ << std::endl; - os << " r : " << r_ << std::endl; - os << " weight_r : " << total_wt_r_ << std::endl; - os << " Current size : " << curr_items_alloc_ << std::endl; - os << " Resize factor: " << (1 << rf_) << std::endl; - os << "### END SKETCH SUMMARY" << std::endl; - return os.str(); + string<A> str(allocator_); + str.append("### VarOpt SUMMARY:\n"); + str.append(" k : ").append(std::to_string(k_)).append("\n"); + str.append(" h : ").append(std::to_string(h_)).append("\n"); + str.append(" r : ").append(std::to_string(r_)).append("\n"); + str.append(" weight_r : ").append(std::to_string(total_wt_r_)).append("\n"); + str.append(" Current size : ").append(std::to_string(curr_items_alloc_)).append("\n"); + str.append(" Resize factor: ").append(std::to_string(1 << rf_)).append("\n"); + str.append("### END SKETCH SUMMARY\n"); + return str; } template<typename T, typename S, typename A> +template<typename ToStr> string<A> var_opt_sketch<T,S,A>::items_to_string() const { - std::basic_ostringstream<char, std::char_traits<char>, AllocChar<A>> os; - os << "### Sketch Items" << std::endl; + string<A> str(allocator_); + str.append("### Sketch Items\n"); int idx = 0; for (auto record : *this) { - os << idx << ": " << record.first << "\twt = " << record.second << std::endl; + str.append(std::to_string(idx)).append(": ").append(ToStr()(record.first)).append("\twt = ") + .append(std::to_string(record.second)).append("\n"); ++idx; } - return os.str(); + return str; } template<typename T, typename S, typename A> +template<typename ToStr> string<A> var_opt_sketch<T,S,A>::items_to_string(bool print_gap) const { - std::basic_ostringstream<char, std::char_traits<char>, AllocChar<A>> os; - os << "### Sketch Items" << std::endl; + string<A> str(allocator_); + str.append("### Sketch Items\n"); const uint32_t array_length = (n_ < k_ ? n_ : k_ + 1); for (uint32_t i = 0, display_idx = 0; i < array_length; ++i) { if (i == h_ && print_gap) { - os << i << ": GAP" << std::endl; + str.append(std::to_string(i)).append(": GAP\n"); ++display_idx; } else { - os << i << ": " << data_[i] << "\twt = "; + str.append(std::to_string(i)).append(": ").append(ToStr()(data_[i])).append("\twt = "); if (weights_[i] == -1.0) { - os << get_tau() << "\t(-1.0)" << std::endl; + str.append(std::to_string(get_tau())).append("\t(-1.0)\n"); } else { - os << weights_[i] << std::endl; + str.append(std::to_string(weights_[i])).append("\n"); } ++display_idx; } } - return os.str(); + return str; } template<typename T, typename S, typename A> diff --git a/sampling/include/var_opt_union.hpp b/sampling/include/var_opt_union.hpp index d0e22ed..db3848c 100644 --- a/sampling/include/var_opt_union.hpp +++ b/sampling/include/var_opt_union.hpp @@ -134,6 +134,7 @@ public: * Prints a summary of the union as a string. * @return the summary as a string */ + template<typename ToStr = ostream_based_to_string<T>> string<A> to_string() const; diff --git a/sampling/include/var_opt_union_impl.hpp b/sampling/include/var_opt_union_impl.hpp index fe1ee49..bee25f4 100644 --- a/sampling/include/var_opt_union_impl.hpp +++ b/sampling/include/var_opt_union_impl.hpp @@ -23,7 +23,6 @@ #include "var_opt_union.hpp" #include <cmath> -#include <sstream> namespace datasketches { @@ -294,15 +293,16 @@ void var_opt_union<T,S,A>::reset() { } template<typename T, typename S, typename A> +template<typename ToStr> string<A> var_opt_union<T,S,A>::to_string() const { - std::basic_ostringstream<char, std::char_traits<char>, AllocChar<A>> os; - os << "### VarOpt Union SUMMARY: " << std::endl; - os << " . n : " << n_ << std::endl; - os << " Max k : " << max_k_ << std::endl; - os << " Gadget Summary: " << std::endl; - os << gadget_.to_string(); - os << "### END VarOpt Union SUMMARY: " << std::endl; - return os.str(); + string<A> str(gadget_.allocator_); + str.append("### VarOpt Union SUMMARY:\n"); + str.append(" n : ").append(std::to_string(n_)).append("\n"); + str.append(" Max k : ").append(std::to_string(max_k_)).append("\n"); + str.append(" Gadget Summary:\n"); + str.append(gadget_.to_string()); + str.append("### END VarOpt Union SUMMARY\n"); + return str; } template<typename T, typename S, typename A> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
