GALib-Parallel
Header-only C++ library for parallel evolutionary algorithms
Loading...
Searching...
No Matches
Serializer.h
Go to the documentation of this file.
1#ifndef SERIALIZER_H
2#define SERIALIZER_H
3
4#pragma once
5
6#include "core/Individual.h"
7#include <vector>
8#include <cstdint>
9
10namespace galib::internal {
18 template <typename GeneType>
19 class Serializer {
20 public:
21 virtual ~Serializer() = default;
22
28 virtual std::vector<std::uint8_t> serialize(const std::vector<Individual<GeneType>>& individuals) const = 0;
29
35 virtual std::vector<std::uint8_t> serialize(const Individual<GeneType>& individual) const = 0;
36
42 virtual std::vector<Individual<GeneType>> deserialize(const std::vector<std::uint8_t>& individuals_serialized) const = 0;
43
50 virtual std::vector<Individual<GeneType>> deserialize(const std::uint8_t* data, std::size_t size) const = 0;
51
58 [[nodiscard]] virtual std::size_t getSerializedSize(std::size_t individuals_count, std::size_t genes_count) const = 0;
59 };
60}
61
62
63#endif // SERIALIZER_H
Represents a single candidate solution in the population.
Definition Individual.h:23
Interface for converting individuals to/from byte streams for network transport.
Definition Serializer.h:19
virtual ~Serializer()=default
virtual std::size_t getSerializedSize(std::size_t individuals_count, std::size_t genes_count) const =0
Calculates the exact size required to serialize a specific number of individuals.
virtual std::vector< std::uint8_t > serialize(const std::vector< Individual< GeneType > > &individuals) const =0
Serializes multiple individuals into a byte vector.
virtual std::vector< Individual< GeneType > > deserialize(const std::vector< std::uint8_t > &individuals_serialized) const =0
Deserializes a byte vector into individuals.
virtual std::vector< std::uint8_t > serialize(const Individual< GeneType > &individual) const =0
Serializes a single individual.
virtual std::vector< Individual< GeneType > > deserialize(const std::uint8_t *data, std::size_t size) const =0
Deserializes from a raw pointer.