Sha256: 2aa4f8611b455df1a5ab59f652bf324ae8b58f7df64e3b3f4c47ed4f0f5361ca

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

#include <sstream>

#include <cpc_sketch.hpp>

#include <rice/Constructor.hpp>
#include <rice/Module.hpp>

void init_cpc(Rice::Module& m) {
  Rice::define_class_under<datasketches::cpc_sketch>(m, "CpcSketch")
    .define_constructor(Rice::Constructor<datasketches::cpc_sketch, uint8_t>())
    .define_method("lg_k", &datasketches::cpc_sketch::get_lg_k)
    .define_method("empty?", &datasketches::cpc_sketch::is_empty)
    .define_method("lower_bound", &datasketches::cpc_sketch::get_lower_bound)
    .define_method("upper_bound", &datasketches::cpc_sketch::get_upper_bound)
    .define_method(
      "update",
      *[](datasketches::cpc_sketch& self, Rice::Object datum) {
        if (FIXNUM_P(datum.value())) {
          return self.update(from_ruby<int64_t>(datum));
        } else if (datum.is_a(rb_cNumeric)) {
          return self.update(from_ruby<double>(datum));
        } else {
          return self.update(datum.to_s().str());
        }
      })
    .define_method(
      "estimate",
      *[](datasketches::cpc_sketch& self) {
        return self.get_estimate();
      })
    .define_method(
      "serialize",
      *[](datasketches::cpc_sketch& self) {
        std::ostringstream oss;
        self.serialize(oss);
        return oss.str();
      })
    // TODO change to summary?
    .define_method(
      "to_string",
      *[](datasketches::cpc_sketch& self) {
        return self.to_string();
      })
    .define_singleton_method(
      "deserialize",
      *[](std::string& is) {
        std::istringstream iss(is);
        return datasketches::cpc_sketch::deserialize(iss);
      });
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
datasketches-0.1.1 ext/datasketches/cpc_wrapper.cpp