1 // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
2 // Distributed under MIT license, or public domain if desired and
3 // recognized in your jurisdiction.
4 // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
5 
6 #ifndef JSON_FEATURES_H_INCLUDED
7 #define JSON_FEATURES_H_INCLUDED
8 
9 #if !defined(JSON_IS_AMALGAMATION)
10 #include "forwards.h"
11 #endif // if !defined(JSON_IS_AMALGAMATION)
12 
13 #pragma pack(push, 8)
14 
15 namespace Json {
16 
17 /** \brief Configuration passed to reader and writer.
18  * This configuration object can be used to force the Reader or Writer
19  * to behave in a standard conforming way.
20  */
21 class JSON_API Features {
22 public:
23   /** \brief A configuration that allows all features and assumes all strings
24    * are UTF-8.
25    * - C & C++ comments are allowed
26    * - Root object can be any JSON value
27    * - Assumes Value strings are encoded in UTF-8
28    */
29   static Features all();
30 
31   /** \brief A configuration that is strictly compatible with the JSON
32    * specification.
33    * - Comments are forbidden.
34    * - Root object must be either an array or an object value.
35    * - Assumes Value strings are encoded in UTF-8
36    */
37   static Features strictMode();
38 
39   /** \brief Initialize the configuration like JsonConfig::allFeatures;
40    */
41   Features();
42 
43   /// \c true if comments are allowed. Default: \c true.
44   bool allowComments_{true};
45 
46   /// \c true if root must be either an array or an object value. Default: \c
47   /// false.
48   bool strictRoot_{false};
49 
50   /// \c true if dropped null placeholders are allowed. Default: \c false.
51   bool allowDroppedNullPlaceholders_{false};
52 
53   /// \c true if numeric object key are allowed. Default: \c false.
54   bool allowNumericKeys_{false};
55 };
56 
57 } // namespace Json
58 
59 #pragma pack(pop)
60 
61 #endif // JSON_FEATURES_H_INCLUDED
62