mirror of
				https://github.com/Tencent/rapidjson.git
				synced 2025-11-04 04:10:01 +01:00 
			
		
		
		
	Merge remote-tracking branch 'origin/master' into issue120floatprecision_customstrtod
This commit is contained in:
		@@ -1862,6 +1862,8 @@ private:
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    //! Prohibit copying
 | 
			
		||||
    GenericDocument(const GenericDocument&);
 | 
			
		||||
    //! Prohibit assignment
 | 
			
		||||
    GenericDocument& operator=(const GenericDocument&);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ RAPIDJSON_DIAG_OFF(effc++)
 | 
			
		||||
struct DiyFp {
 | 
			
		||||
    DiyFp() {}
 | 
			
		||||
 | 
			
		||||
    DiyFp(uint64_t f, int e) : f(f), e(e) {}
 | 
			
		||||
    DiyFp(uint64_t fp, int exp) : f(fp), e(exp) {}
 | 
			
		||||
 | 
			
		||||
    explicit DiyFp(double d) {
 | 
			
		||||
        union {
 | 
			
		||||
 
 | 
			
		||||
@@ -59,12 +59,14 @@ public:
 | 
			
		||||
 | 
			
		||||
    //! Constructor
 | 
			
		||||
    /*! \param os Output stream.
 | 
			
		||||
        \param allocator User supplied allocator. If it is null, it will create a private one.
 | 
			
		||||
        \param stackAllocator User supplied allocator. If it is null, it will create a private one.
 | 
			
		||||
        \param levelDepth Initial capacity of stack.
 | 
			
		||||
    */
 | 
			
		||||
    explicit
 | 
			
		||||
    Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : 
 | 
			
		||||
        os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), hasRoot_(false) {}
 | 
			
		||||
 | 
			
		||||
    explicit
 | 
			
		||||
    Writer(StackAllocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) :
 | 
			
		||||
        os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), hasRoot_(false) {}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -97,4 +97,4 @@ The following diagram shows the process.
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
More [examples](example/) are available.
 | 
			
		||||
More [examples](https://github.com/miloyip/rapidjson/tree/master/example) are available.
 | 
			
		||||
 
 | 
			
		||||
@@ -232,26 +232,38 @@ TEST(Document, UTF16_Document) {
 | 
			
		||||
#include <type_traits>
 | 
			
		||||
 | 
			
		||||
TEST(Document, Traits) {
 | 
			
		||||
  static_assert( std::is_constructible<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_default_constructible<Document>::value, "");
 | 
			
		||||
  static_assert(!std::is_copy_constructible<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_move_constructible<Document>::value, "");
 | 
			
		||||
    static_assert(std::is_constructible<Document>::value, "");
 | 
			
		||||
    static_assert(std::is_default_constructible<Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(!std::is_copy_constructible<Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(std::is_move_constructible<Document>::value, "");
 | 
			
		||||
 | 
			
		||||
  static_assert(!std::is_nothrow_constructible<Document>::value, "");
 | 
			
		||||
  static_assert(!std::is_nothrow_default_constructible<Document>::value, "");
 | 
			
		||||
  static_assert(!std::is_nothrow_copy_constructible<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_move_constructible<Document>::value, "");
 | 
			
		||||
    static_assert(!std::is_nothrow_constructible<Document>::value, "");
 | 
			
		||||
    static_assert(!std::is_nothrow_default_constructible<Document>::value, "");
 | 
			
		||||
    static_assert(!std::is_nothrow_copy_constructible<Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_move_constructible<Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_assignable<Document,Document>::value, "");
 | 
			
		||||
    static_assert(std::is_assignable<Document,Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
  static_assert(!std::is_copy_assignable<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_move_assignable<Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(std::is_move_assignable<Document>::value, "");
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_nothrow_assignable<Document,Document>::value, "");
 | 
			
		||||
  static_assert(!std::is_nothrow_copy_assignable<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_move_assignable<Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_assignable<Document, Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(!std::is_nothrow_copy_assignable<Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_move_assignable<Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_destructible<Document>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_destructible<Document>::value, "");
 | 
			
		||||
    static_assert( std::is_destructible<Document>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_destructible<Document>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <typename Allocator>
 | 
			
		||||
 
 | 
			
		||||
@@ -43,27 +43,41 @@ TEST(Value, DefaultConstructor) {
 | 
			
		||||
#include <type_traits>
 | 
			
		||||
 | 
			
		||||
TEST(Value, Traits) {
 | 
			
		||||
  typedef GenericValue<UTF8<>, CrtAllocator> Value;
 | 
			
		||||
  static_assert( std::is_constructible<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_default_constructible<Value>::value, "");
 | 
			
		||||
  static_assert(!std::is_copy_constructible<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_move_constructible<Value>::value, "");
 | 
			
		||||
    typedef GenericValue<UTF8<>, CrtAllocator> Value;
 | 
			
		||||
    static_assert(std::is_constructible<Value>::value, "");
 | 
			
		||||
    static_assert(std::is_default_constructible<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(!std::is_copy_constructible<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(std::is_move_constructible<Value>::value, "");
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_nothrow_constructible<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_default_constructible<Value>::value, "");
 | 
			
		||||
  static_assert(!std::is_nothrow_copy_constructible<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_move_constructible<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_constructible<Value>::value, "");
 | 
			
		||||
    static_assert(std::is_nothrow_default_constructible<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(!std::is_nothrow_copy_constructible<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_move_constructible<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_assignable<Value,Value>::value, "");
 | 
			
		||||
  static_assert(!std::is_copy_assignable<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_move_assignable<Value>::value, "");
 | 
			
		||||
    static_assert(std::is_assignable<Value,Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(!std::is_copy_assignable<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(std::is_move_assignable<Value>::value, "");
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_nothrow_assignable<Value,Value>::value, "");
 | 
			
		||||
  static_assert(!std::is_nothrow_copy_assignable<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_move_assignable<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_assignable<Value, Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
    static_assert(!std::is_nothrow_copy_assignable<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_move_assignable<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  static_assert( std::is_destructible<Value>::value, "");
 | 
			
		||||
  static_assert( std::is_nothrow_destructible<Value>::value, "");
 | 
			
		||||
    static_assert(std::is_destructible<Value>::value, "");
 | 
			
		||||
#ifndef _MSC_VER
 | 
			
		||||
    static_assert(std::is_nothrow_destructible<Value>::value, "");
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(Value, MoveConstructor) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user