in cpc/include/cpc_compressor_impl.hpp [144:168]
void cpc_compressor<A>::compress(const cpc_sketch_alloc<A>& source, compressed_state<A>& result) const {
switch (source.determine_flavor()) {
case cpc_sketch_alloc<A>::flavor::EMPTY:
break;
case cpc_sketch_alloc<A>::flavor::SPARSE:
compress_sparse_flavor(source, result);
if (result.window_data.size() > 0) throw std::logic_error("window is not expected");
if (result.table_data.size() == 0) throw std::logic_error("table is expected");
break;
case cpc_sketch_alloc<A>::flavor::HYBRID:
compress_hybrid_flavor(source, result);
if (result.window_data.size() > 0) throw std::logic_error("window is not expected");
if (result.table_data.size() == 0) throw std::logic_error("table is expected");
break;
case cpc_sketch_alloc<A>::flavor::PINNED:
compress_pinned_flavor(source, result);
if (result.window_data.size() == 0) throw std::logic_error("window is not expected");
break;
case cpc_sketch_alloc<A>::flavor::SLIDING:
compress_sliding_flavor(source, result);
if (result.window_data.size() == 0) throw std::logic_error("window is expected");
break;
default: throw std::logic_error("Unknown sketch flavor");
}
}