inline bool check_json_type( json_config_iarchive_cast& js, jubatus::util::text::json::json::json_type_t t) { if (js.get().type() != t) { type_error e(js.get_config().path(), t, js.get().type()); if (js.trace_error()) { js.push_error(e); } else { throw JUBATUS_EXCEPTION(e); } return false; } return true; }
inline bool check_json_float(json_config_iarchive_cast& js) { if (js.get().type() != pfi::text::json::json::Float && js.get().type() != pfi::text::json::json::Integer) { type_error e( js.get_config().path(), pfi::text::json::json::Float, js.get().type()); if (js.trace_error()) { js.push_error(e); } else { throw JUBATUS_EXCEPTION(e); } return false; } return true; }
inline bool check_json_type( json_config_iarchive_cast& js, pfi::text::json::json::json_type_t t) { if (js.get().type() != t) { // int -> float is valid if (js.get().type() == pfi::text::json::json::Integer && t == pfi::text::json::json::Float) { return true; } type_error e(js.get_config().path(), t, js.get().type()); if (js.trace_error()) { js.push_error(e); } else { throw e; } return false; } return true; }
inline void serialize(json_config_iarchive_cast& js, T& v) { if (js.get().type() == jubatus::util::text::json::json::Object) { member_collector collector; jubatus::util::data::serialization::access::serialize(collector, v); std::set<std::string> members(collector.get_members().begin(), collector.get_members().end()); for (jubatus::util::text::json::json::const_iterator it = js.get().begin(); it != js.get().end(); ++it) { const std::string& key = it->first; if (members.count(key) == 0) { redundant_key e(js.get_config().path(), key); if (js.trace_error()) { js.push_error(e); } else { throw JUBATUS_EXCEPTION(e); } } } } jubatus::util::data::serialization::access::serialize(js, v); }
inline void serialize(json_config_iarchive_cast& js, config& v) { v = config(js.get(), js.get_config().path()); }
inline void serialize( json_config_iarchive_cast& js, jubatus::util::text::json::json& v) { v = js.get(); }
inline void serialize(json_config_iarchive_cast& js, pfi::text::json::json& v) { v = js.get(); }