17 #ifndef JUBATUS_CORE_STORAGE_STORAGE_TYPE_HPP_
18 #define JUBATUS_CORE_STORAGE_STORAGE_TYPE_HPP_
26 #include <msgpack.hpp>
27 #include "jubatus/util/data/unordered_map.h"
28 #include "../common/assoc_vector.hpp"
29 #include "../common/version.hpp"
37 typedef jubatus::util::data::unordered_map<std::string, row_t>
tbl_t;
39 typedef jubatus::util::data::unordered_map<std::string, bit_vector>
bit_table_t;
41 typedef jubatus::util::data::unordered_map<std::string, float>
map_float_t;
42 typedef jubatus::util::data::unordered_map<uint64_t, float>
imap_float_t;
59 return v1 == v.
v1 && v2 == v.
v2;
63 return (v1 != v.
v1) ? v1 < v.
v1 : v2 < v.
v2;
133 return v1 == v.
v1 && v2 == v.
v2 && v3 == v.
v3;
137 return (v1 != v.
v1) ? v1 < v.
v1 : (v2 != v.
v2) ? v2 < v.
v2 : v3 < v.
v3;
204 os <<
"{v1: " << v.
v1 <<
", v2: " << v.
v2 <<
", v3: " << v.
v3 <<
"}";
213 typedef std::vector<std::pair<std::string, feature_val1_t> >
features1_t;
214 typedef std::vector<std::pair<std::string, feature_val2_t> >
features2_t;
215 typedef std::vector<std::pair<std::string, feature_val3_t> >
features3_t;
217 typedef jubatus::util::data::unordered_map<std::string, val1_t>
219 typedef jubatus::util::data::unordered_map<std::string, val3_t>
221 typedef jubatus::util::data::unordered_map<std::string, map_feature_val3_t>
232 template <
class E,
class F>
233 std::vector<std::pair<std::string, E> >&
binop(
234 std::vector<std::pair<std::string, E> >& lhs,
235 std::vector<std::pair<std::string, E> > rhs,
237 E default_value = E()) {
238 std::sort(lhs.begin(), lhs.end());
239 std::sort(rhs.begin(), rhs.end());
242 size_t lsize = lhs.size();
243 for (
size_t ri = 0; ri < rhs.size(); ++ri) {
244 while (li < lsize && lhs[li].first < rhs[ri].first) {
245 lhs[li].second = f(lhs[li].second, default_value);
249 if (li < lsize && lhs[li].first == rhs[ri].first) {
250 lhs[li].second = f(lhs[li].second, rhs[ri].second);
253 lhs.push_back(make_pair(rhs[ri].first, f(default_value, rhs[ri].second)));
257 lhs[li].second = f(lhs[li].second, default_value);
266 std::vector<std::pair<std::string, E> >& lhs,
268 for (
size_t i = 0; i < lhs.size(); ++i) {
269 lhs[i].second = lhs[i].second * d;
278 std::vector<std::pair<std::string, E> > lhs,
279 const std::vector<std::pair<std::string, E> >& rhs) {
284 inline std::vector<std::pair<std::string, E> >&
286 const std::vector<std::pair<std::string, E> >& rhs) {
292 std::vector<std::pair<std::string, E> > lhs,
293 const std::vector<std::pair<std::string, E> >& rhs) {
298 inline std::vector<std::pair<std::string, E> >&
300 const std::vector<std::pair<std::string, E> >& rhs) {
306 std::vector<std::pair<std::string, E> > lhs,
307 const std::vector<std::pair<std::string, E> >& rhs) {
312 inline std::vector<std::pair<std::string, E> >&
314 const std::vector<std::pair<std::string, E> >& rhs) {
320 std::vector<std::pair<std::string, E> > lhs,
321 const std::vector<std::pair<std::string, E> >& rhs) {
327 std::vector<std::pair<std::string, E> >& lhs,
328 const std::vector<std::pair<std::string, E> >& rhs) {
334 std::vector<std::pair<std::string, E> > lhs,
341 std::vector<std::pair<std::string, E> >& lhs,
348 std::vector<std::pair<std::string, E> > lhs,
355 std::vector<std::pair<std::string, E> >& lhs,
364 #endif // JUBATUS_CORE_STORAGE_STORAGE_TYPE_HPP_
val3_t(double v1, double v2, double v3)
val2_t(double v1, double v2)
val2_t & operator-=(const val2_t &r)
std::vector< std::pair< std::string, feature_val3_t > > features3_t
std::vector< std::pair< std::string, E > > & operator*=(std::vector< std::pair< std::string, E > > &lhs, const std::vector< std::pair< std::string, E > > &rhs)
val3_t operator*(const val3_t &r) const
val2_t operator/(const val2_t &r) const
std::vector< std::pair< std::string, E > > & operator/=(std::vector< std::pair< std::string, E > > &lhs, const std::vector< std::pair< std::string, E > > &rhs)
MSGPACK_DEFINE(diff, expect_version)
jubatus::util::data::unordered_map< std::string, val1_t > map_feature_val1_t
std::vector< std::pair< std::string, E > > & operator-=(std::vector< std::pair< std::string, E > > &lhs, const std::vector< std::pair< std::string, E > > &rhs)
val3_t & operator*=(const val3_t &r)
std::vector< std::pair< std::string, E > > & mult_scalar(std::vector< std::pair< std::string, E > > &lhs, double d)
bool operator==(const val3_t &v) const
bool operator<(const val3_t &v) const
std::vector< std::pair< std::string, feature_val1_t > > features1_t
std::vector< std::pair< std::string, E > > & operator+=(std::vector< std::pair< std::string, E > > &lhs, const std::vector< std::pair< std::string, E > > &rhs)
friend std::ostream & operator<<(std::ostream &os, const val3_t &v)
jubatus::util::data::unordered_map< std::string, val3_t > map_feature_val3_t
std::vector< std::pair< std::string, feature_val2_t > > features2_t
jubatus::util::data::unordered_map< std::string, map_feature_val3_t > map_features3_t
std::vector< std::pair< std::string, val1_t > > feature_val1_t
val3_t & operator/=(const val3_t &r)
std::vector< std::pair< std::string, E > > operator/(std::vector< std::pair< std::string, E > > lhs, const std::vector< std::pair< std::string, E > > &rhs)
val3_t operator/(const val3_t &r) const
jubatus::util::data::unordered_map< std::string, bit_vector > bit_table_t
jubatus::util::data::unordered_map< uint64_t, float > imap_float_t
jubatus::util::data::unordered_map< std::string, float > map_float_t
val2_t & operator*=(const val2_t &r)
val2_t & operator/=(const val2_t &r)
bool operator==(const val2_t &v) const
val3_t operator-(const val3_t &r) const
std::vector< std::pair< std::string, val3_t > > feature_val3_t
std::vector< std::pair< std::string, E > > operator-(std::vector< std::pair< std::string, E > > lhs, const std::vector< std::pair< std::string, E > > &rhs)
jubatus::util::data::unordered_map< std::string, row_t > tbl_t
bool operator<(const val2_t &v) const
std::vector< std::pair< std::string, val2_t > > feature_val2_t
std::vector< std::pair< std::string, E > > operator*(std::vector< std::pair< std::string, E > > lhs, const std::vector< std::pair< std::string, E > > &rhs)
MSGPACK_DEFINE(v1, v2, v3)
val2_t operator*(const val2_t &r) const
val2_t & operator+=(const val2_t &r)
val2_t operator-(const val2_t &r) const
std::vector< std::pair< std::string, E > > & binop(std::vector< std::pair< std::string, E > > &lhs, std::vector< std::pair< std::string, E > > rhs, F f, E default_value=E())
jubatus::core::common::assoc_vector< uint64_t, float > row_t
std::vector< std::pair< std::string, E > > operator+(std::vector< std::pair< std::string, E > > lhs, const std::vector< std::pair< std::string, E > > &rhs)
val3_t & operator+=(const val3_t &r)
val2_t operator+(const val2_t &r) const
val3_t & operator-=(const val3_t &r)
val3_t operator+(const val3_t &r) const