6#ifndef WIZARD_VECTOR_UTILS_H
7#define WIZARD_VECTOR_UTILS_H
10#include "serializable.h"
11#include "unique_serializable.h"
12#include "../../rapidjson/include/rapidjson/document.h"
13#include "../game_state/player/player.h"
16namespace vector_utils {
19 static void constraints(T* p) { B* pb = p; }
25 static rapidjson::Value serialize_vector(
const std::vector<T*>& serializables, rapidjson::Document::AllocatorType& allocator) {
27 rapidjson::Value arr_val(rapidjson::kArrayType);
28 for (
int i = 0; i < serializables.size(); i++) {
29 rapidjson::Value elem(rapidjson::kObjectType);
30 serializables[i]->write_into_json(elem, allocator);
31 arr_val.PushBack(elem, allocator);
36 static rapidjson::Value serialize_cards_vector(
37 const std::vector<std::pair<card*, player*>>& cards,
38 rapidjson::Document::AllocatorType& allocator) {
39 rapidjson::Value arr_val(rapidjson::kArrayType);
40 for (
const auto& pair : cards) {
41 rapidjson::Value obj(rapidjson::kObjectType);
44 rapidjson::Value card_val(rapidjson::kObjectType);
45 pair.first->write_into_json(card_val, allocator);
46 obj.AddMember(
"card", card_val, allocator);
48 rapidjson::Value player_val(rapidjson::kObjectType);
49 pair.second->write_into_json(player_val, allocator);
50 obj.AddMember(
"player", player_val, allocator);
52 arr_val.PushBack(obj, allocator);
Definition vector_utils.h:18