1 // Copyright 2007-2010 Baptiste Lepilleur
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 CPPTL_JSON_FEATURES_H_INCLUDED
7 #define CPPTL_JSON_FEATURES_H_INCLUDED
8 
9 #if !defined(JSON_IS_AMALGAMATION)
10 #include "forwards.h"
11 #endif // if !defined(JSON_IS_AMALGAMATION)
12 
13 namespace Json {
14 
15 /** \brief Configuration passed to reader and writer.
16  * This configuration object can be used to force the Reader or Writer
17  * to behave in a standard conforming way.
18  */
19 class JSON_API Features {
20 public:
21   /** \brief A configuration that allows all features and assumes all strings
22    * are UTF-8.
23    * - C & C++ comments are allowed
24    * - Root object can be any JSON value
25    * - Assumes Value strings are encoded in UTF-8
26    */
27   static Features all();
28 
29   /** \brief A configuration that is strictly compatible with the JSON
30    * specification.
31    * - Comments are forbidden.
32    * - Root object must be either an array or an object value.
33    * - Assumes Value strings are encoded in UTF-8
34    */
35   static Features strictMode();
36 
37   /** \brief Initialize the configuration like JsonConfig::allFeatures;
38    */
39   Features();
40 
41   /// \c true if comments are allowed. Default: \c true.
42   bool allowComments_;
43 
44   /// \c true if root must be either an array or an object value. Default: \c
45   /// false.
46   bool strictRoot_;
47 
48   /// \c true if dropped null placeholders are allowed. Default: \c false.
49   bool allowDroppedNullPlaceholders_;
50 
51   /// \c true if numeric object key are allowed. Default: \c false.
52   bool allowNumericKeys_;
53 };
54 
55 } // namespace Json
56 
57 #endif // CPPTL_JSON_FEATURES_H_INCLUDED
58