Ariles
rapidjson.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4 
5  @copyright 2017-2020 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
6  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
7 
8  @brief
9 */
10 
11 #pragma once
12 
13 #define ARILES_VISITOR_INCLUDED_rapidjson
14 
16 #include <ariles/internal/node.h>
17 #include <ariles/visitors/config.h>
18 
19 
20 namespace ariles
21 {
22  namespace ns_rapidjson
23  {
24  class ARILES_VISIBILITY_ATTRIBUTE Flags : public ariles::Flags<unsigned int, Flags>
25  {
26  public:
27  enum Enum
28  {
29  RESET = 0,
30  /// Floats are stored as strings by default to allow NaN and Inf (writer only)
31  DISABLE_STRING_FLOATS = 1 << 0,
32 
33  DEFAULT = RESET
34  };
35 
36 
37  public:
39  {
40  setDefaults();
41  }
42 
43 
44  Flags(const unsigned int flags, const Action action_type = REPLACE)
45  {
46  initialize(flags, action_type);
47  }
48 
49 
50  void setDefaults()
51  {
52  flags_ = DEFAULT;
53  }
54  };
55 
56 
57  template <class t_Base, class t_Implementation>
59  {
60  protected:
61  typedef t_Implementation Impl;
62  typedef ARILES_SHARED_PTR<t_Implementation> ImplPtr;
63 
64  protected:
67 
68 
69  private:
70  Base(const Base &);
71  Base &operator=(const Base &);
72 
73  protected:
74  Base(){};
75  ~Base(){};
76  Base(const Flags &flags) : flags_(flags){};
77 
78 
79  public:
81  {
82  static serialization::Features parameters(
85  return (parameters);
86  }
87  };
88  } // namespace ns_rapidjson
89 } // namespace ariles
90 
91 
92 #include "./rapidjson/reader.h"
93 #include "./rapidjson/writer.h"
94 
95 
96 #ifndef ARILES_BRIDGE_INCLUDED_rapidjson
97 namespace ariles
98 {
99  /**
100  * @brief JSON visitor.
101  */
103  {
105 
108 
111  };
112 } // namespace ariles
113 #endif
t_Implementation Impl
Definition: rapidjson.h:61
ariles::cfgwrite::Visitor< ns_rapidjson::Writer > Writer
Definition: rapidjson.h:110
ns_rapidjson::Writer WriterBase
Definition: rapidjson.h:107
const serialization::Features & getSerializationFeatures() const
Definition: rapidjson.h:80
ARILES_SHARED_PTR< t_Implementation > ImplPtr
Definition: rapidjson.h:62
Configuration writer class.
Definition: writer.h:26
ariles::cfgread::Visitor< ns_rapidjson::Reader > Reader
Definition: rapidjson.h:109
Flags(const unsigned int flags, const Action action_type=REPLACE)
Definition: rapidjson.h:44
Configuration reader class.
Definition: reader.h:26
Base(const Flags &flags)
Definition: rapidjson.h:76
ariles::ns_rapidjson::Flags Flags
Definition: rapidjson.h:104
#define ARILES_VISIBILITY_ATTRIBUTE
Definition: helpers.h:69
ns_rapidjson::Reader ReaderBase
Definition: rapidjson.h:106
Definition: basic.h:17