#include "tuple_generic_jaccard_shim.h"
#include "tuple_generic_jaccard.rs.h"
namespace apache_datasketches_rs {
namespace {
using dyn_jaccard = datasketches::jaccard_similarity_base<
dyn_union,
dyn_intersection,
datasketches::pair_extract_key<uint64_t, DynSummary>>;
TupleGenericJaccardBoundsFfi to_ffi(const std::array<double, 3>& result) {
return TupleGenericJaccardBoundsFfi{result[0], result[1], result[2]};
}
}
TupleGenericJaccardBoundsFfi tuple_generic_jaccard_sketch_sketch(const TupleGenericSketchShim& a, const TupleGenericSketchShim& b) {
return to_ffi(dyn_jaccard::jaccard(a.inner(), b.inner()));
}
TupleGenericJaccardBoundsFfi tuple_generic_jaccard_sketch_compact(const TupleGenericSketchShim& a, const CompactTupleGenericSketchShim& b) {
return to_ffi(dyn_jaccard::jaccard(a.inner(), b.inner()));
}
TupleGenericJaccardBoundsFfi tuple_generic_jaccard_compact_sketch(const CompactTupleGenericSketchShim& a, const TupleGenericSketchShim& b) {
return to_ffi(dyn_jaccard::jaccard(a.inner(), b.inner()));
}
TupleGenericJaccardBoundsFfi tuple_generic_jaccard_compact_compact(const CompactTupleGenericSketchShim& a, const CompactTupleGenericSketchShim& b) {
return to_ffi(dyn_jaccard::jaccard(a.inner(), b.inner()));
}
}