// 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* utf8; UTF16* utf16; UTF16BE* utf16be; UTF16LE* utf16le; UTF32* utf32; UTF32BE* utf32be; UTF32LE* utf32le; ASCII* ascii; AutoUTF* autoutf; Transcoder, UTF8 >* transcoder; // allocators.h CrtAllocator* crtallocator; MemoryPoolAllocator* 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, void>* basereaderhandler; Reader* reader; // writer.h Writer, UTF8, CrtAllocator, 0>* writer; // prettywriter.h PrettyWriter, UTF8, 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 typedef Transcoder, UTF8<> > TranscoderUtf8ToUtf8; typedef BaseReaderHandler, void> BaseReaderHandlerUtf8Void; 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)), transcoder(RAPIDJSON_NEW(TranscoderUtf8ToUtf8)), // allocators.h crtallocator(RAPIDJSON_NEW(CrtAllocator)), memorypoolallocator(RAPIDJSON_NEW(MemoryPoolAllocator<>)), // stream.h stringstream(RAPIDJSON_NEW(StringStream)(NULL)), insitustringstream(RAPIDJSON_NEW(InsituStringStream)(NULL)), // 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)(NULL, 0)), // reader.h basereaderhandler(RAPIDJSON_NEW(BaseReaderHandlerUtf8Void)), reader(RAPIDJSON_NEW(Reader)), // writer.h writer(RAPIDJSON_NEW(Writer)), // prettywriter.h prettywriter(RAPIDJSON_NEW(PrettyWriter)), // 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