21 #include "cafObjectHandle.h" 23 #include <nlohmann/json.hpp> 41 enum class SerializationType
49 using FieldSelector = std::function<bool( const FieldHandle* )>;
51 static std::string serializationTypeLabel( SerializationType type );
66 template <DerivesFromObjectHandle ObjectType>
67 std::shared_ptr<ObjectType>
cloneObject(
const ObjectType*
object )
const 70 return std::dynamic_pointer_cast<ObjectType>( basePointer );
126 bool isClient()
const;
166 const std::string& destinationClassKeyword )
const;
189 void readObjectFromJson(
ObjectHandle*
object,
const nlohmann::json& jsonObject )
const;
190 void writeObjectToJson(
const ObjectHandle*
object, nlohmann::json& jsonObject )
const;
195 FieldSelector m_fieldSelector;
197 SerializationType m_serializationType;
198 bool m_serializeUuids;
208 template <
typename Clock,
typename Duration>
209 struct adl_serializer<std::chrono::time_point<Clock, Duration>>
211 static void to_json( json& j,
const std::chrono::time_point<Clock, Duration>& tp )
213 j = std::chrono::duration_cast<Duration>( tp.time_since_epoch() ).count();
216 static void from_json(
const json& j, std::chrono::time_point<Clock, Duration>& tp )
218 Duration duration( j.get<int64_t>() );
219 tp = std::chrono::steady_clock::time_point( duration );
226 template <
typename IntType,
typename Period>
227 struct adl_serializer<std::chrono::duration<IntType, Period>>
229 static void to_json( json& j,
const std::chrono::duration<IntType, Period>& duration )
231 j =
static_cast<IntType
>( duration.count() );
234 static void from_json(
const json& j, std::chrono::duration<IntType, Period>& duration )
236 duration = std::chrono::duration<IntType, Period>( j.get<IntType>() );
SerializationType serializationType() const
Definition: cafJsonSerializer.cpp:92
std::string writeObjectToString(const ObjectHandle *object) const
Definition: cafJsonSerializer.cpp:345
void writeStream(const ObjectHandle *object, std::ostream &stream) const
Definition: cafJsonSerializer.cpp:437
JsonSerializer(ObjectFactory *objectFactory=nullptr)
Definition: cafJsonSerializer.cpp:56
JsonSerializer & setFieldSelector(FieldSelector fieldSelector)
Definition: cafJsonSerializer.cpp:64
void readObjectFromString(ObjectHandle *object, const std::string &string) const
Definition: cafJsonSerializer.cpp:336
JsonSerializer & setSerializeUuids(bool serializeUuids)
Definition: cafJsonSerializer.cpp:76
ObjectFactory * objectFactory() const
Definition: cafJsonSerializer.cpp:82
Definition: cafObjectFactory.h:36
JsonSerializer & setSerializationType(SerializationType type)
Definition: cafJsonSerializer.cpp:70
Definition: cafJsonSerializer.h:206
bool serializeUuids() const
Definition: cafJsonSerializer.cpp:97
Definition: cafObjectHandle.h:47
std::shared_ptr< ObjectHandle > copyAndCastBySerialization(const ObjectHandle *object, const std::string &destinationClassKeyword) const
Definition: cafJsonSerializer.cpp:368
FieldSelector fieldSelector() const
Definition: cafJsonSerializer.cpp:87
Definition: cafJsonSerializer.h:38
std::shared_ptr< ObjectType > cloneObject(const ObjectType *object) const
Definition: cafJsonSerializer.h:67
std::shared_ptr< ObjectHandle > createObjectFromString(const std::string &string) const
Definition: cafJsonSerializer.cpp:391
void readStream(ObjectHandle *object, std::istream &stream) const
Definition: cafJsonSerializer.cpp:426
Main Caffa namespace.
Definition: cafApplication.h:30
std::string readUUIDFromObjectString(const std::string &string) const
Definition: cafJsonSerializer.cpp:321
std::shared_ptr< ObjectHandle > copyBySerialization(const ObjectHandle *object) const
Definition: cafJsonSerializer.cpp:355