Sha256: 9f7a1eacf6f65be85571cd5ccc09be3413bd3f63cb208bdea37e1738408e3d36
Contents?: true
Size: 1.78 KB
Versions: 1
Compression:
Stored size: 1.78 KB
Contents
#ifndef FLOAT_STRING_MAP_HPP_ #define FLOAT_STRING_MAP_HPP_ #include <ruby.h> #include <unordered_map> #include <string> class FloatStringMap { std::unordered_map<double, std::string> container; public: FloatStringMap(); ~FloatStringMap(); std::string bracket(const double key); std::string bracket_equal(const double key, const std::string value); }; FloatStringMap::FloatStringMap() {} FloatStringMap::~FloatStringMap() {} std::string FloatStringMap::bracket(const double key) { return this->container[key]; } std::string FloatStringMap::bracket_equal(const double key, const std::string value) { return this->container[key] = value; } static FloatStringMap* getFloatStringMap(VALUE self) { FloatStringMap *ptr; Data_Get_Struct(self, FloatStringMap, ptr); return ptr; } static void wrap_float_string_map_free(FloatStringMap *ptr) { ptr->~FloatStringMap(); ruby_xfree(ptr); } static VALUE wrap_float_string_map_alloc(VALUE klass) { void *p = ruby_xmalloc(sizeof(FloatStringMap)); p = new FloatStringMap; return Data_Wrap_Struct(klass, NULL, wrap_float_string_map_free, p); } static VALUE wrap_float_string_map_init(VALUE self) { FloatStringMap *p = getFloatStringMap(self); p = new FloatStringMap; return Qnil; } static VALUE wrap_float_string_map_bracket(VALUE self, VALUE key) { const double k = NUM2DBL(key); const std::string value = getFloatStringMap(self)->bracket(k); VALUE result = rb_str_new(value.c_str(), value.size()); return result; } static VALUE wrap_float_string_map_bracket_equal(VALUE self, VALUE key, VALUE value) { const double k = NUM2DBL(key); const std::string v = StringValueCStr(value); getFloatStringMap(self)->bracket_equal(k, v); return value; } #endif
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tatara-0.3.0 | ext/tatara/map/float/float_string_map.hpp |