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