Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved customization of RAPIDJSON_NEW macro #811

Merged
merged 3 commits into from
Dec 23, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion include/rapidjson/allocators.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ class MemoryPoolAllocator {
*/
bool AddChunk(size_t capacity) {
if (!baseAllocator_)
ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator());
ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator)();
if (ChunkHeader* chunk = reinterpret_cast<ChunkHeader*>(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity))) {
chunk->capacity = capacity;
chunk->size = 0;
Expand Down
4 changes: 2 additions & 2 deletions include/rapidjson/document.h
Original file line number Diff line number Diff line change
Expand Up @@ -2088,7 +2088,7 @@ class GenericDocument : public GenericValue<Encoding, Allocator> {
GenericValue<Encoding, Allocator>(type), allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()
{
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();
}

//! Constructor
Expand All @@ -2101,7 +2101,7 @@ class GenericDocument : public GenericValue<Encoding, Allocator> {
allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()
{
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();
}

#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
Expand Down
2 changes: 1 addition & 1 deletion include/rapidjson/internal/regex.h
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ class GenericRegexSearch {
{
RAPIDJSON_ASSERT(regex_.IsValid());
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();
stateSet_ = static_cast<unsigned*>(allocator_->Malloc(GetStateSetSize()));
state0_.template Reserve<SizeType>(regex_.stateCount_);
state1_.template Reserve<SizeType>(regex_.stateCount_);
Expand Down
2 changes: 1 addition & 1 deletion include/rapidjson/internal/stack.h
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ class Stack {
size_t newCapacity;
if (stack_ == 0) {
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();
newCapacity = initialCapacity_;
} else {
newCapacity = GetCapacity();
Expand Down
4 changes: 2 additions & 2 deletions include/rapidjson/pointer.h
Original file line number Diff line number Diff line change
Expand Up @@ -758,7 +758,7 @@ class GenericPointer {
*/
Ch* CopyFromRaw(const GenericPointer& rhs, size_t extraToken = 0, size_t extraNameBufferSize = 0) {
if (!allocator_) // allocator is independently owned.
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();

size_t nameBufferSize = rhs.tokenCount_; // null terminators for tokens
for (Token *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t)
Expand Down Expand Up @@ -806,7 +806,7 @@ class GenericPointer {

// Create own allocator if user did not supply.
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();

// Count number of '/' as tokenCount
tokenCount_ = 0;
Expand Down
2 changes: 1 addition & 1 deletion include/rapidjson/rapidjson.h
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ RAPIDJSON_NAMESPACE_END

#ifndef RAPIDJSON_NEW
///! customization point for global \c new
#define RAPIDJSON_NEW(x) new x
#define RAPIDJSON_NEW(TypeName) new TypeName
#endif
#ifndef RAPIDJSON_DELETE
///! customization point for global \c delete
Expand Down
4 changes: 2 additions & 2 deletions include/rapidjson/schema.h
Original file line number Diff line number Diff line change
Expand Up @@ -1344,7 +1344,7 @@ class GenericSchemaDocument {
schemaRef_(allocator, kInitialSchemaRefSize)
{
if (!allocator_)
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator)();

typeless_ = static_cast<SchemaType*>(allocator_->Malloc(sizeof(SchemaType)));
new (typeless_) SchemaType(this, PointerType(), ValueType(kObjectType).Move(), ValueType(kObjectType).Move(), 0);
Expand Down Expand Up @@ -1823,7 +1823,7 @@ RAPIDJSON_MULTILINEMACRO_END

StateAllocator& GetStateAllocator() {
if (!stateAllocator_)
stateAllocator_ = ownStateAllocator_ = RAPIDJSON_NEW(StateAllocator());
stateAllocator_ = ownStateAllocator_ = RAPIDJSON_NEW(StateAllocator)();
return *stateAllocator_;
}

Expand Down
25 changes: 14 additions & 11 deletions test/unittest/fwdtest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ struct Foo {
#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<>)),
Expand All @@ -111,40 +114,40 @@ Foo::Foo() :
utf32le(RAPIDJSON_NEW(UTF32LE<>)),
ascii(RAPIDJSON_NEW(ASCII<>)),
autoutf(RAPIDJSON_NEW(AutoUTF<unsigned>)),
transcoder(RAPIDJSON_NEW((Transcoder<UTF8<>, UTF8<> >))),
transcoder(RAPIDJSON_NEW(TranscoderUtf8ToUtf8)),

// allocators.h
crtallocator(RAPIDJSON_NEW(CrtAllocator)),
memorypoolallocator(RAPIDJSON_NEW(MemoryPoolAllocator<>)),

// stream.h
stringstream(RAPIDJSON_NEW(StringStream(0))),
insitustringstream(RAPIDJSON_NEW(InsituStringStream(0))),
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)))),
// filereadstream(RAPIDJSON_NEW(FileReadStream)(stdout, buffer, sizeof(buffer))),

// // filewritestream.h
// filewritestream(RAPIDJSON_NEW(FileWriteStream(stdout, buffer, sizeof(buffer)))),
// filewritestream(RAPIDJSON_NEW(FileWriteStream)(stdout, buffer, sizeof(buffer))),

// memorybuffer.h
memorybuffer(RAPIDJSON_NEW(MemoryBuffer)),

// memorystream.h
memorystream(RAPIDJSON_NEW(MemoryStream(0, 0))),
memorystream(RAPIDJSON_NEW(MemoryStream)(NULL, 0)),

// reader.h
basereaderhandler(RAPIDJSON_NEW((BaseReaderHandler<UTF8<>, void>))),
basereaderhandler(RAPIDJSON_NEW(BaseReaderHandlerUtf8Void)),
reader(RAPIDJSON_NEW(Reader)),

// writer.h
writer(RAPIDJSON_NEW((Writer<StringBuffer>))),
writer(RAPIDJSON_NEW(Writer<StringBuffer>)),

// prettywriter.h
prettywriter(RAPIDJSON_NEW((PrettyWriter<StringBuffer>))),
prettywriter(RAPIDJSON_NEW(PrettyWriter<StringBuffer>)),

// document.h
value(RAPIDJSON_NEW(Value)),
Expand All @@ -154,8 +157,8 @@ Foo::Foo() :
pointer(RAPIDJSON_NEW(Pointer)),

// schema.h
schemadocument(RAPIDJSON_NEW(SchemaDocument(*document))),
schemavalidator(RAPIDJSON_NEW(SchemaValidator(*schemadocument)))
schemadocument(RAPIDJSON_NEW(SchemaDocument)(*document)),
schemavalidator(RAPIDJSON_NEW(SchemaValidator)(*schemadocument))
{

}
Expand Down