Home | History | Annotate | Download | only in json
      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    {
     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