features.h revision f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2e
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 13namespace 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 { 21 public: 22 /** \brief A configuration that allows all features and assumes all strings 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 specification. 30 * - Comments are forbidden. 31 * - Root object must be either an array or an object value. 32 * - Assumes Value strings are encoded in UTF-8 33 */ 34 static Features strictMode(); 35 36 /** \brief Initialize the configuration like JsonConfig::allFeatures; 37 */ 38 Features(); 39 40 /// \c true if comments are allowed. Default: \c true. 41 bool allowComments_; 42 43 /// \c true if root must be either an array or an object value. Default: \c false. 44 bool strictRoot_; 45 }; 46 47} // namespace Json 48 49#endif // CPPTL_JSON_FEATURES_H_INCLUDED 50