Caffa  1.1.0
C++ Application Framework for Embedded Systems with introspection
cafSerializer.h
1 // ##################################################################################################
2 //
3 // Caffa
4 // Copyright (C) 2021- 3D-Radar AS
5 //
6 // GNU Lesser General Public License Usage
7 // This library is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU Lesser General Public License as published by
9 // the Free Software Foundation; either version 2.1 of the License, or
10 // (at your option) any later version.
11 //
12 // This library is distributed in the hope that it will be useful, but WITHOUT ANY
13 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 // FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // See the GNU Lesser General Public License at <<http://www.gnu.org/licenses/lgpl-2.1.html>>
17 // for more details.
18 //
19 #pragma once
20 
21 #include "cafFieldHandle.h"
22 
23 #include <functional>
24 #include <iostream>
25 #include <memory>
26 
27 namespace caffa
28 {
29 class ObjectHandle;
30 class ObjectFactory;
31 
36 {
37 public:
38  enum class SerializationType
39  {
40  DATA_FULL,
41  DATA_SKELETON,
42  SCHEMA,
43  };
44 
45  using FieldSelector = std::function<bool( const FieldHandle* )>;
46 
47  static std::string serializationTypeLabel( SerializationType type );
48 
54 
61  virtual std::string readUUIDFromObjectString( const std::string& string ) const = 0;
62 
68  virtual void readObjectFromString( ObjectHandle* object, const std::string& string ) const = 0;
69 
75  virtual std::string writeObjectToString( const ObjectHandle* object ) const = 0;
76 
82  virtual std::shared_ptr<ObjectHandle> copyBySerialization( const ObjectHandle* object ) const = 0;
83 
92  virtual std::shared_ptr<ObjectHandle>
93  copyAndCastBySerialization( const ObjectHandle* object, const std::string& destinationClassKeyword ) const = 0;
94 
100  virtual std::shared_ptr<ObjectHandle> createObjectFromString( const std::string& string ) const = 0;
101 
107  virtual void readStream( ObjectHandle* object, std::istream& stream ) const = 0;
108 
114  virtual void writeStream( const ObjectHandle* object, std::ostream& stream ) const = 0;
115 
123  Serializer& setFieldSelector( FieldSelector fieldSelector );
124 
132  Serializer& setSerializationType( SerializationType type );
133 
142 
147  ObjectFactory* objectFactory() const;
148 
153  FieldSelector fieldSelector() const;
154 
159  SerializationType serializationType() const;
160 
166  bool serializeUuids() const;
167 
168 protected:
169  ObjectFactory* m_objectFactory;
170  FieldSelector m_fieldSelector;
171 
172  SerializationType m_serializationType;
173  bool m_serializeUuids;
174 };
175 
176 } // End of namespace caffa
Base class for all fields, making it possible to handle them generically.
Definition: cafFieldHandle.h:23
Definition: cafObjectFactory.h:39
Definition: cafObjectHandle.h:55
Definition: cafSerializer.h:36
SerializationType serializationType() const
Definition: cafSerializer.cpp:73
virtual std::shared_ptr< ObjectHandle > copyAndCastBySerialization(const ObjectHandle *object, const std::string &destinationClassKeyword) const =0
virtual std::shared_ptr< ObjectHandle > copyBySerialization(const ObjectHandle *object) const =0
Serializer(ObjectFactory *objectFactory)
Definition: cafSerializer.cpp:38
bool serializeUuids() const
Definition: cafSerializer.cpp:78
virtual void readStream(ObjectHandle *object, std::istream &stream) const =0
Serializer & setFieldSelector(FieldSelector fieldSelector)
Definition: cafSerializer.cpp:45
virtual std::string writeObjectToString(const ObjectHandle *object) const =0
FieldSelector fieldSelector() const
Definition: cafSerializer.cpp:68
Serializer & setSerializationType(SerializationType type)
Definition: cafSerializer.cpp:51
virtual std::string readUUIDFromObjectString(const std::string &string) const =0
ObjectFactory * objectFactory() const
Definition: cafSerializer.cpp:63
virtual void writeStream(const ObjectHandle *object, std::ostream &stream) const =0
Serializer & setSerializeUuids(bool serializeUuids)
Definition: cafSerializer.cpp:57
virtual std::shared_ptr< ObjectHandle > createObjectFromString(const std::string &string) const =0
virtual void readObjectFromString(ObjectHandle *object, const std::string &string) const =0
Main Caffa namespace.
Definition: __init__.py:1