Container System 0.1.0
High-performance C++20 type-safe container framework with SIMD-accelerated serialization
Loading...
Searching...
No Matches
serializer_factory.cpp
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2021, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
6#include "binary_serializer.h"
7#include "json_serializer.h"
8#include "xml_serializer.h"
10
11namespace kcenon::container
12{
13
14std::unique_ptr<serializer_strategy>
15serializer_factory::create(serialization_format fmt) noexcept
16{
17 switch (fmt)
18 {
19 case serialization_format::binary:
20 return std::make_unique<binary_serializer>();
21
22 case serialization_format::json:
23 return std::make_unique<json_serializer>();
24
25 case serialization_format::xml:
26 return std::make_unique<xml_serializer>();
27
28 case serialization_format::msgpack:
29 return std::make_unique<msgpack_serializer>();
30
31 case serialization_format::auto_detect:
32 case serialization_format::unknown:
33 default:
34 return nullptr;
35 }
36}
37
38bool serializer_factory::is_supported(serialization_format fmt) noexcept
39{
40 switch (fmt)
41 {
42 case serialization_format::binary:
43 case serialization_format::json:
44 case serialization_format::xml:
45 case serialization_format::msgpack:
46 return true;
47
48 case serialization_format::auto_detect:
49 case serialization_format::unknown:
50 default:
51 return false;
52 }
53}
54
55} // namespace kcenon::container