Grail (C++)  1.2.0
A multi-platform, modular, universal engine for embedding advanced AI in games.
IDecisionSerializers.hh
1 // Copyright QED Software 2023.
2 
3 #ifndef GRAIL_DECISION_SERIALIZERS_H
4 #define GRAIL_DECISION_SERIALIZERS_H
5 
6 #include <iostream>
7 #include <memory>
8 #include <string>
9 
10 namespace grail
11 {
12 namespace simgames
13 {
14 namespace dt
15 {
19  template <class TDecisionType>
21  {
22  public:
24  virtual std::string Serialize(const TDecisionType& decision) = 0;
25 
27  virtual std::unique_ptr<TDecisionType> Deserialize(std::string decisionString) = 0;
28 
29  virtual ~IDecisionStringSerializer()
30  {
31  }
32  };
33 
37  template <class TDecisionType>
39  {
41  virtual void Serialize(const TDecisionType& decision, std::ostream& stream) = 0;
42 
44  virtual std::unique_ptr<TDecisionType> Deserialize(std::istream& stream) = 0;
45 
46  virtual ~IDecisionBinarySerializer()
47  {
48  }
49  };
50 }
51 }
52 }
53 
54 #endif //GRAIL_DECISION_SERIALIZERS_H
grail::simgames::dt::IDecisionBinarySerializer
Definition: IDecisionSerializers.hh:38
grail::simgames::dt::IDecisionBinarySerializer::Deserialize
virtual std::unique_ptr< TDecisionType > Deserialize(std::istream &stream)=0
Deserializes a decision to exactly the same form as is serialized using the Serialize() method.
grail::simgames::dt::IDecisionStringSerializer
Definition: IDecisionSerializers.hh:20
grail::simgames::dt::IDecisionStringSerializer::Deserialize
virtual std::unique_ptr< TDecisionType > Deserialize(std::string decisionString)=0
Deserializes a decision to exactly the same form as is serialized using the Serialize() method.
grail::simgames::dt::IDecisionBinarySerializer::Serialize
virtual void Serialize(const TDecisionType &decision, std::ostream &stream)=0
Writes a binary serialization of a decision using the writer.
grail::simgames::dt::IDecisionStringSerializer::Serialize
virtual std::string Serialize(const TDecisionType &decision)=0
Returns an exact representation of a decision as string.