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