diff --git a/include/json/forwards.h b/include/json/forwards.h index ee76071..d0ce830 100644 --- a/include/json/forwards.h +++ b/include/json/forwards.h @@ -5,14 +5,19 @@ namespace Json { + // writer.h class FastWriter; - class Reader; class StyledWriter; + // reader.h + class Reader; + // features.h class Features; // value.h + typedef int Int; + typedef unsigned int UInt; class StaticString; class Path; class PathArgument; diff --git a/include/json/value.h b/include/json/value.h index ce3d3cd..d575b70 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -117,10 +117,10 @@ namespace Json { # endif public: typedef std::vector Members; - typedef int Int; - typedef unsigned int UInt; typedef ValueIterator iterator; typedef ValueConstIterator const_iterator; + typedef Json::UInt UInt; + typedef Json::Int Int; typedef UInt ArrayIndex; static const Value null; @@ -186,6 +186,7 @@ namespace Json { Value( UInt value ); Value( double value ); Value( const char *value ); + Value( const char *beginValue, const char *endValue ); /** \brief Constructs a value from a static string. * Like other value string constructor but do not duplicate the string for @@ -453,7 +454,7 @@ namespace Json { friend class Path; PathArgument(); - PathArgument( Value::UInt index ); + PathArgument( UInt index ); PathArgument( const char *key ); PathArgument( const std::string &key ); @@ -465,7 +466,7 @@ namespace Json { kindKey }; std::string key_; - Value::UInt index_; + UInt index_; Kind kind_; }; @@ -909,7 +910,7 @@ public: // overridden from ValueArrayAllocator Value key() const; /// Return the index of the referenced Value. -1 if it is not an arrayValue. - Value::UInt index() const; + UInt index() const; /// Return the member name of the referenced Value. "" if it is not an objectValue. const char *memberName() const; diff --git a/include/json/writer.h b/include/json/writer.h index cfa92c6..5f4b83b 100644 --- a/include/json/writer.h +++ b/include/json/writer.h @@ -157,8 +157,8 @@ namespace Json { bool addChildValues_; }; - std::string JSON_API valueToString( Value::Int value ); - std::string JSON_API valueToString( Value::UInt value ); + std::string JSON_API valueToString( Int value ); + std::string JSON_API valueToString( UInt value ); std::string JSON_API valueToString( double value ); std::string JSON_API valueToString( bool value ); std::string JSON_API valueToQuotedString( const char *value ); diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index 734bf16..573205f 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -20,9 +20,9 @@ namespace Json { const Value Value::null; -const Value::Int Value::minInt = Value::Int( ~(Value::UInt(-1)/2) ); -const Value::Int Value::maxInt = Value::Int( Value::UInt(-1)/2 ); -const Value::UInt Value::maxUInt = Value::UInt(-1); +const Int Value::minInt = Int( ~(UInt(-1)/2) ); +const Int Value::maxInt = Int( UInt(-1)/2 ); +const UInt Value::maxUInt = UInt(-1); // A "safe" implementation of strdup. Allow null pointer to be passed. // Also avoid warning on msvc80. @@ -351,6 +351,21 @@ Value::Value( const char *value ) value_.string_ = valueAllocator()->duplicateStringValue( value ); } + +Value::Value( const char *beginValue, + const char *endValue ) + : type_( stringValue ) + , allocated_( true ) + , comments_( 0 ) +# ifdef JSON_VALUE_USE_INTERNAL_MAP + , itemIsUsed_( 0 ) +#endif +{ + value_.string_ = valueAllocator()->duplicateStringValue( beginValue, + UInt(endValue - beginValue) ); +} + + Value::Value( const std::string &value ) : type_( stringValue ) , allocated_( true ) diff --git a/src/lib_json/json_valueiterator.inl b/src/lib_json/json_valueiterator.inl index 898c358..736e260 100644 --- a/src/lib_json/json_valueiterator.inl +++ b/src/lib_json/json_valueiterator.inl @@ -176,7 +176,7 @@ ValueIteratorBase::key() const } -Value::UInt +UInt ValueIteratorBase::index() const { #ifndef JSON_VALUE_USE_INTERNAL_MAP diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index f2f8311..cdf4188 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -39,14 +39,14 @@ static void uintToString( unsigned int value, while ( value != 0 ); } -std::string valueToString( Value::Int value ) +std::string valueToString( Int value ) { char buffer[32]; char *current = buffer + sizeof(buffer); bool isNegative = value < 0; if ( isNegative ) value = -value; - uintToString( Value::UInt(value), current ); + uintToString( UInt(value), current ); if ( isNegative ) *--current = '-'; assert( current >= buffer ); @@ -54,7 +54,7 @@ std::string valueToString( Value::Int value ) } -std::string valueToString( Value::UInt value ) +std::string valueToString( UInt value ) { char buffer[32]; char *current = buffer + sizeof(buffer);