blob: e9c707805a54653c4b3ebc003e6261cdcb5b3ff6 [file] [log] [blame]
// 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.
//
// 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
typedef Transcoder<UTF8<>, UTF8<> > TranscoderUtf8ToUtf8;
typedef BaseReaderHandler<UTF8<>, 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<unsigned>)),
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<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