/* Copyright (C) 2017 Eric Wasylishen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA See file, 'COPYING', for details. */ #pragma once // JSON & formatters for our types #include #include template Json::Value to_json(const qvec &p) { auto j = Json::Value(Json::arrayValue); for (auto &v : p) { j.append(v); } return j; } template Json::Value to_json(const std::vector &vec) { auto j = Json::Value(Json::arrayValue); for (auto &v : vec) { j.append(v); } return j; } template Json::Value to_json(const std::array &arr) { auto j = Json::Value(Json::arrayValue); for (auto &v : arr) { j.append(v); } return j; } template Json::Value json_array(std::initializer_list args) { auto j = Json::Value(Json::arrayValue); for (auto &v : args) { j.append(v); } return j; } template qvec from_json(const Json::Value &j) { qvec p; for (unsigned int i = 0; i < N; i++) { p[i] = j[i].as(); } return p; } static Json::Value parse_json(const uint8_t *begin, const uint8_t *end) { Json::Value result; Json::CharReaderBuilder rbuilder; auto reader = std::unique_ptr(rbuilder.newCharReader()); reader->parse(reinterpret_cast(begin), reinterpret_cast(end), &result, nullptr); return result; }