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