mirror of
				https://github.com/Tencent/rapidjson.git
				synced 2025-11-04 12:17:41 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			228 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Tencent is pleased to support the open source community by making RapidJSON available.
 | 
						|
// 
 | 
						|
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
 | 
						|
//
 | 
						|
// Licensed under the MIT License (the "License"); you may not use this file except
 | 
						|
// in compliance with the License. You may obtain a copy of the License at
 | 
						|
//
 | 
						|
// http://opensource.org/licenses/MIT
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, software distributed 
 | 
						|
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
 | 
						|
// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
 | 
						|
// specific language governing permissions and limitations under the License.
 | 
						|
 | 
						|
#include "unittest.h"
 | 
						|
 | 
						|
// Using forward declared types here.
 | 
						|
 | 
						|
#include "rapidjson/fwd.h"
 | 
						|
 | 
						|
#ifdef __GNUC__
 | 
						|
RAPIDJSON_DIAG_PUSH
 | 
						|
RAPIDJSON_DIAG_OFF(effc++)
 | 
						|
#endif
 | 
						|
 | 
						|
using namespace rapidjson;
 | 
						|
 | 
						|
struct Foo {
 | 
						|
    Foo();
 | 
						|
    ~Foo();
 | 
						|
 | 
						|
    // encodings.h
 | 
						|
    UTF8<char>* utf8;
 | 
						|
    UTF16<wchar_t>* utf16;
 | 
						|
    UTF16BE<wchar_t>* utf16be;
 | 
						|
    UTF16LE<wchar_t>* utf16le;
 | 
						|
    UTF32<unsigned>* utf32;
 | 
						|
    UTF32BE<unsigned>* utf32be;
 | 
						|
    UTF32LE<unsigned>* utf32le;
 | 
						|
    ASCII<char>* ascii;
 | 
						|
    AutoUTF<unsigned>* autoutf;
 | 
						|
    Transcoder<UTF8<char>, UTF8<char> >* transcoder;
 | 
						|
 | 
						|
    // allocators.h
 | 
						|
    CrtAllocator* crtallocator;
 | 
						|
    MemoryPoolAllocator<CrtAllocator>* memorypoolallocator;
 | 
						|
 | 
						|
    // stream.h
 | 
						|
    StringStream* stringstream;
 | 
						|
    InsituStringStream* insitustringstream;
 | 
						|
 | 
						|
    // stringbuffer.h
 | 
						|
    StringBuffer* stringbuffer;
 | 
						|
 | 
						|
    // // filereadstream.h
 | 
						|
    // FileReadStream* filereadstream;
 | 
						|
 | 
						|
    // // filewritestream.h
 | 
						|
    // FileWriteStream* filewritestream;
 | 
						|
 | 
						|
    // memorybuffer.h
 | 
						|
    MemoryBuffer* memorybuffer;
 | 
						|
 | 
						|
    // memorystream.h
 | 
						|
    MemoryStream* memorystream;
 | 
						|
 | 
						|
    // reader.h
 | 
						|
    BaseReaderHandler<UTF8<char>, void>* basereaderhandler;
 | 
						|
    Reader* reader;
 | 
						|
 | 
						|
    // writer.h
 | 
						|
    Writer<StringBuffer, UTF8<char>, UTF8<char>, CrtAllocator, 0>* writer;
 | 
						|
 | 
						|
    // prettywriter.h
 | 
						|
    PrettyWriter<StringBuffer, UTF8<char>, UTF8<char>, CrtAllocator, 0>* prettywriter;
 | 
						|
 | 
						|
    // document.h
 | 
						|
    Value* value;
 | 
						|
    Document* document;
 | 
						|
 | 
						|
    // pointer.h
 | 
						|
    Pointer* pointer;
 | 
						|
 | 
						|
    // schema.h
 | 
						|
    SchemaDocument* schemadocument;
 | 
						|
    SchemaValidator* schemavalidator;
 | 
						|
 | 
						|
    // char buffer[16];
 | 
						|
};
 | 
						|
 | 
						|
// Using type definitions here.
 | 
						|
 | 
						|
#include "rapidjson/stringbuffer.h"
 | 
						|
#include "rapidjson/filereadstream.h"
 | 
						|
#include "rapidjson/filewritestream.h"
 | 
						|
#include "rapidjson/memorybuffer.h"
 | 
						|
#include "rapidjson/memorystream.h"
 | 
						|
#include "rapidjson/document.h" // -> reader.h
 | 
						|
#include "rapidjson/writer.h"
 | 
						|
#include "rapidjson/prettywriter.h"
 | 
						|
#include "rapidjson/schema.h"   // -> pointer.h
 | 
						|
 | 
						|
Foo::Foo() : 
 | 
						|
    // encodings.h
 | 
						|
    utf8(RAPIDJSON_NEW(UTF8<>)),
 | 
						|
    utf16(RAPIDJSON_NEW(UTF16<>)),
 | 
						|
    utf16be(RAPIDJSON_NEW(UTF16BE<>)),
 | 
						|
    utf16le(RAPIDJSON_NEW(UTF16LE<>)),
 | 
						|
    utf32(RAPIDJSON_NEW(UTF32<>)),
 | 
						|
    utf32be(RAPIDJSON_NEW(UTF32BE<>)),
 | 
						|
    utf32le(RAPIDJSON_NEW(UTF32LE<>)),
 | 
						|
    ascii(RAPIDJSON_NEW(ASCII<>)),
 | 
						|
    autoutf(RAPIDJSON_NEW(AutoUTF<unsigned>)),
 | 
						|
    transcoder(RAPIDJSON_NEW((Transcoder<UTF8<>, UTF8<> >))),
 | 
						|
 | 
						|
    // allocators.h
 | 
						|
    crtallocator(RAPIDJSON_NEW(CrtAllocator)),
 | 
						|
    memorypoolallocator(RAPIDJSON_NEW(MemoryPoolAllocator<>)),
 | 
						|
 | 
						|
    // stream.h
 | 
						|
    stringstream(RAPIDJSON_NEW(StringStream(0))),
 | 
						|
    insitustringstream(RAPIDJSON_NEW(InsituStringStream(0))),
 | 
						|
 | 
						|
    // stringbuffer.h
 | 
						|
    stringbuffer(RAPIDJSON_NEW(StringBuffer)),
 | 
						|
 | 
						|
    // // filereadstream.h
 | 
						|
    // filereadstream(RAPIDJSON_NEW(FileReadStream(stdout, buffer, sizeof(buffer)))),
 | 
						|
 | 
						|
    // // filewritestream.h
 | 
						|
    // filewritestream(RAPIDJSON_NEW(FileWriteStream(stdout, buffer, sizeof(buffer)))),
 | 
						|
 | 
						|
    // memorybuffer.h
 | 
						|
    memorybuffer(RAPIDJSON_NEW(MemoryBuffer)),
 | 
						|
 | 
						|
    // memorystream.h
 | 
						|
    memorystream(RAPIDJSON_NEW(MemoryStream(0, 0))),
 | 
						|
 | 
						|
    // reader.h
 | 
						|
    basereaderhandler(RAPIDJSON_NEW((BaseReaderHandler<UTF8<>, void>))),
 | 
						|
    reader(RAPIDJSON_NEW(Reader)),
 | 
						|
 | 
						|
    // writer.h
 | 
						|
    writer(RAPIDJSON_NEW((Writer<StringBuffer>))),
 | 
						|
 | 
						|
    // prettywriter.h
 | 
						|
    prettywriter(RAPIDJSON_NEW((PrettyWriter<StringBuffer>))),
 | 
						|
 | 
						|
    // document.h
 | 
						|
    value(RAPIDJSON_NEW(Value)),
 | 
						|
    document(RAPIDJSON_NEW(Document)),
 | 
						|
 | 
						|
    // pointer.h
 | 
						|
    pointer(RAPIDJSON_NEW(Pointer)),
 | 
						|
 | 
						|
    // schema.h
 | 
						|
    schemadocument(RAPIDJSON_NEW(SchemaDocument(*document))),
 | 
						|
    schemavalidator(RAPIDJSON_NEW(SchemaValidator(*schemadocument)))
 | 
						|
{
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
Foo::~Foo() {
 | 
						|
    // encodings.h
 | 
						|
    RAPIDJSON_DELETE(utf8);
 | 
						|
    RAPIDJSON_DELETE(utf16);
 | 
						|
    RAPIDJSON_DELETE(utf16be);
 | 
						|
    RAPIDJSON_DELETE(utf16le);
 | 
						|
    RAPIDJSON_DELETE(utf32);
 | 
						|
    RAPIDJSON_DELETE(utf32be);
 | 
						|
    RAPIDJSON_DELETE(utf32le);
 | 
						|
    RAPIDJSON_DELETE(ascii);
 | 
						|
    RAPIDJSON_DELETE(autoutf);
 | 
						|
    RAPIDJSON_DELETE(transcoder);
 | 
						|
 | 
						|
    // allocators.h
 | 
						|
    RAPIDJSON_DELETE(crtallocator);
 | 
						|
    RAPIDJSON_DELETE(memorypoolallocator);
 | 
						|
 | 
						|
    // stream.h
 | 
						|
    RAPIDJSON_DELETE(stringstream);
 | 
						|
    RAPIDJSON_DELETE(insitustringstream);
 | 
						|
 | 
						|
    // stringbuffer.h
 | 
						|
    RAPIDJSON_DELETE(stringbuffer);
 | 
						|
 | 
						|
    // // filereadstream.h
 | 
						|
    // RAPIDJSON_DELETE(filereadstream);
 | 
						|
 | 
						|
    // // filewritestream.h
 | 
						|
    // RAPIDJSON_DELETE(filewritestream);
 | 
						|
 | 
						|
    // memorybuffer.h
 | 
						|
    RAPIDJSON_DELETE(memorybuffer);
 | 
						|
 | 
						|
    // memorystream.h
 | 
						|
    RAPIDJSON_DELETE(memorystream);
 | 
						|
 | 
						|
    // reader.h
 | 
						|
    RAPIDJSON_DELETE(basereaderhandler);
 | 
						|
    RAPIDJSON_DELETE(reader);
 | 
						|
 | 
						|
    // writer.h
 | 
						|
    RAPIDJSON_DELETE(writer);
 | 
						|
 | 
						|
    // prettywriter.h
 | 
						|
    RAPIDJSON_DELETE(prettywriter);
 | 
						|
 | 
						|
    // document.h
 | 
						|
    RAPIDJSON_DELETE(value);
 | 
						|
    RAPIDJSON_DELETE(document);
 | 
						|
 | 
						|
    // pointer.h
 | 
						|
    RAPIDJSON_DELETE(pointer);
 | 
						|
 | 
						|
    // schema.h
 | 
						|
    RAPIDJSON_DELETE(schemadocument);
 | 
						|
    RAPIDJSON_DELETE(schemavalidator);
 | 
						|
}
 | 
						|
 | 
						|
TEST(Fwd, Fwd) {
 | 
						|
    Foo f;
 | 
						|
}
 | 
						|
 | 
						|
#ifdef __GNUC__
 | 
						|
RAPIDJSON_DIAG_POP
 | 
						|
#endif
 |