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