Merge pull request #193 from pah/feature/custom-namespace
Allow customization of RapidJSON namespace
This commit is contained in:
commit
8d4405cf63
@ -32,6 +32,7 @@ before_script:
|
|||||||
script:
|
script:
|
||||||
- make -C build/gmake -f test.make config=${CONF}${BITS}
|
- make -C build/gmake -f test.make config=${CONF}${BITS}
|
||||||
- make -C build/gmake -f example.make config=${CONF}${BITS}
|
- make -C build/gmake -f example.make config=${CONF}${BITS}
|
||||||
|
- if [ "$CONF" = "debug" ] && ( objdump -t -C intermediate/${CONF}/gmake/unittest/x${BITS}/namespacetest.o | grep rapidjson ) ; then echo "Symbol check failed!" ; false; fi
|
||||||
- pushd bin
|
- pushd bin
|
||||||
- ./unittest_${CONF}_x${BITS}_gmake
|
- ./unittest_${CONF}_x${BITS}_gmake
|
||||||
- valgrind --leak-check=full --error-exitcode=1 ./unittest_${CONF}_x${BITS}_gmake
|
- valgrind --leak-check=full --error-exitcode=1 ./unittest_${CONF}_x${BITS}_gmake
|
||||||
|
@ -1993,6 +1993,8 @@ INCLUDE_FILE_PATTERNS =
|
|||||||
|
|
||||||
PREDEFINED = \
|
PREDEFINED = \
|
||||||
RAPIDJSON_DOXYGEN_RUNNING \
|
RAPIDJSON_DOXYGEN_RUNNING \
|
||||||
|
RAPIDJSON_NAMESPACE_BEGIN="namespace rapidjson {" \
|
||||||
|
RAPIDJSON_NAMESPACE_END="}" \
|
||||||
RAPIDJSON_REMOVEFPTR_(x)=x \
|
RAPIDJSON_REMOVEFPTR_(x)=x \
|
||||||
RAPIDJSON_ENABLEIF_RETURN(cond,returntype)="RAPIDJSON_REMOVEFPTR_ returntype" \
|
RAPIDJSON_ENABLEIF_RETURN(cond,returntype)="RAPIDJSON_REMOVEFPTR_ returntype" \
|
||||||
RAPIDJSON_DISABLEIF_RETURN(cond,returntype)="RAPIDJSON_REMOVEFPTR_ returntype"
|
RAPIDJSON_DISABLEIF_RETURN(cond,returntype)="RAPIDJSON_REMOVEFPTR_ returntype"
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Allocator
|
// Allocator
|
||||||
@ -240,6 +240,6 @@ private:
|
|||||||
BaseAllocator* ownBaseAllocator_; //!< base allocator created by this object.
|
BaseAllocator* ownBaseAllocator_; //!< base allocator created by this object.
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_ENCODINGS_H_
|
#endif // RAPIDJSON_ENCODINGS_H_
|
||||||
|
@ -66,7 +66,7 @@ RAPIDJSON_DIAG_OFF(effc++)
|
|||||||
#include <utility> // std::move
|
#include <utility> // std::move
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
// Forward declaration.
|
// Forward declaration.
|
||||||
template <typename Encoding, typename Allocator>
|
template <typename Encoding, typename Allocator>
|
||||||
@ -1899,7 +1899,7 @@ GenericValue<Encoding,Allocator>::GenericValue(const GenericValue<Encoding,Sourc
|
|||||||
RawAssign(*d.stack_.template Pop<GenericValue>(1));
|
RawAssign(*d.stack_.template Pop<GenericValue>(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__GNUC__)
|
#if defined(_MSC_VER) || defined(__GNUC__)
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
@ -28,7 +28,7 @@ RAPIDJSON_DIAG_PUSH
|
|||||||
RAPIDJSON_DIAG_OFF(effc++)
|
RAPIDJSON_DIAG_OFF(effc++)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Input byte stream wrapper with a statically bound encoding.
|
//! Input byte stream wrapper with a statically bound encoding.
|
||||||
/*!
|
/*!
|
||||||
@ -281,7 +281,7 @@ private:
|
|||||||
|
|
||||||
#undef RAPIDJSON_ENCODINGS_FUNC
|
#undef RAPIDJSON_ENCODINGS_FUNC
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
@ -32,7 +32,7 @@ RAPIDJSON_DIAG_PUSH
|
|||||||
RAPIDJSON_DIAG_OFF(effc++)
|
RAPIDJSON_DIAG_OFF(effc++)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Encoding
|
// Encoding
|
||||||
@ -621,7 +621,7 @@ struct Transcoder<Encoding, Encoding> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#if defined(__GNUC__) || defined(_MSV_VER)
|
#if defined(__GNUC__) || defined(_MSV_VER)
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "error.h"
|
#include "error.h"
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Maps error code of parsing into error message.
|
//! Maps error code of parsing into error message.
|
||||||
/*!
|
/*!
|
||||||
@ -66,6 +66,6 @@ inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_ERROR_EN_H__
|
#endif // RAPIDJSON_ERROR_EN_H__
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
#define RAPIDJSON_ERROR_STRING(x) x
|
#define RAPIDJSON_ERROR_STRING(x) x
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// ParseErrorCode
|
// ParseErrorCode
|
||||||
@ -145,6 +145,6 @@ private:
|
|||||||
*/
|
*/
|
||||||
typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode);
|
typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode);
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_ERROR_ERROR_H__
|
#endif // RAPIDJSON_ERROR_ERROR_H__
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! File byte stream for input using fread().
|
//! File byte stream for input using fread().
|
||||||
/*!
|
/*!
|
||||||
@ -89,6 +89,6 @@ private:
|
|||||||
bool eof_;
|
bool eof_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_FILESTREAM_H_
|
#endif // RAPIDJSON_FILESTREAM_H_
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! (Deprecated) Wrapper of C file stream for input or output.
|
//! (Deprecated) Wrapper of C file stream for input or output.
|
||||||
/*!
|
/*!
|
||||||
@ -68,6 +68,6 @@ private:
|
|||||||
size_t count_;
|
size_t count_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_FILESTREAM_H_
|
#endif // RAPIDJSON_FILESTREAM_H_
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Wrapper of C file stream for input using fread().
|
//! Wrapper of C file stream for input using fread().
|
||||||
/*!
|
/*!
|
||||||
@ -92,6 +92,6 @@ inline void PutN(FileWriteStream& stream, char c, size_t n) {
|
|||||||
stream.PutN(c, n);
|
stream.PutN(c, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_FILESTREAM_H_
|
#endif // RAPIDJSON_FILESTREAM_H_
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#include "itoa.h" // GetDigitsLut()
|
#include "itoa.h" // GetDigitsLut()
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
@ -413,6 +413,6 @@ RAPIDJSON_DIAG_POP
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_DTOA_
|
#endif // RAPIDJSON_DTOA_
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#ifndef RAPIDJSON_ITOA_
|
#ifndef RAPIDJSON_ITOA_
|
||||||
#define RAPIDJSON_ITOA_
|
#define RAPIDJSON_ITOA_
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
inline const char* GetDigitsLut() {
|
inline const char* GetDigitsLut() {
|
||||||
@ -301,6 +301,6 @@ inline char* i64toa(int64_t value, char* buffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_ITOA_
|
#endif // RAPIDJSON_ITOA_
|
||||||
|
@ -39,7 +39,7 @@ RAPIDJSON_DIAG_OFF(6334)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//@cond RAPIDJSON_INTERNAL
|
//@cond RAPIDJSON_INTERNAL
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching
|
// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching
|
||||||
@ -157,29 +157,29 @@ template <typename T> struct RemoveSfinaeTag;
|
|||||||
template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type; };
|
template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type; };
|
||||||
|
|
||||||
#define RAPIDJSON_REMOVEFPTR_(type) \
|
#define RAPIDJSON_REMOVEFPTR_(type) \
|
||||||
typename ::rapidjson::internal::RemoveSfinaeTag \
|
typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \
|
||||||
< ::rapidjson::internal::SfinaeTag&(*) type>::Type
|
< ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&(*) type>::Type
|
||||||
|
|
||||||
#define RAPIDJSON_ENABLEIF(cond) \
|
#define RAPIDJSON_ENABLEIF(cond) \
|
||||||
typename ::rapidjson::internal::EnableIf \
|
typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \
|
||||||
<RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
|
<RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
|
||||||
|
|
||||||
#define RAPIDJSON_DISABLEIF(cond) \
|
#define RAPIDJSON_DISABLEIF(cond) \
|
||||||
typename ::rapidjson::internal::DisableIf \
|
typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \
|
||||||
<RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
|
<RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
|
||||||
|
|
||||||
#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \
|
#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \
|
||||||
typename ::rapidjson::internal::EnableIf \
|
typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \
|
||||||
<RAPIDJSON_REMOVEFPTR_(cond), \
|
<RAPIDJSON_REMOVEFPTR_(cond), \
|
||||||
RAPIDJSON_REMOVEFPTR_(returntype)>::Type
|
RAPIDJSON_REMOVEFPTR_(returntype)>::Type
|
||||||
|
|
||||||
#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \
|
#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \
|
||||||
typename ::rapidjson::internal::DisableIf \
|
typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \
|
||||||
<RAPIDJSON_REMOVEFPTR_(cond), \
|
<RAPIDJSON_REMOVEFPTR_(cond), \
|
||||||
RAPIDJSON_REMOVEFPTR_(returntype)>::Type
|
RAPIDJSON_REMOVEFPTR_(returntype)>::Type
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
//@endcond
|
//@endcond
|
||||||
|
|
||||||
#if defined(__GNUC__) || defined(_MSC_VER)
|
#if defined(__GNUC__) || defined(_MSC_VER)
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#ifndef RAPIDJSON_POW10_
|
#ifndef RAPIDJSON_POW10_
|
||||||
#define RAPIDJSON_POW10_
|
#define RAPIDJSON_POW10_
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
//! Computes integer powers of 10 in double (10.0^n).
|
//! Computes integer powers of 10 in double (10.0^n).
|
||||||
@ -54,6 +54,6 @@ inline double Pow10(int n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_POW10_
|
#endif // RAPIDJSON_POW10_
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#ifndef RAPIDJSON_INTERNAL_STACK_H_
|
#ifndef RAPIDJSON_INTERNAL_STACK_H_
|
||||||
#define RAPIDJSON_INTERNAL_STACK_H_
|
#define RAPIDJSON_INTERNAL_STACK_H_
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -178,6 +178,6 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_STACK_H_
|
#endif // RAPIDJSON_STACK_H_
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
|
#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
|
||||||
#define RAPIDJSON_INTERNAL_STRFUNC_H_
|
#define RAPIDJSON_INTERNAL_STRFUNC_H_
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
//! Custom strlen() which works on different character types.
|
//! Custom strlen() which works on different character types.
|
||||||
@ -38,6 +38,6 @@ inline SizeType StrLen(const Ch* s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_INTERNAL_STRFUNC_H_
|
#endif // RAPIDJSON_INTERNAL_STRFUNC_H_
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
#include "internal/stack.h"
|
#include "internal/stack.h"
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Represents an in-memory output byte stream.
|
//! Represents an in-memory output byte stream.
|
||||||
/*!
|
/*!
|
||||||
@ -71,6 +71,6 @@ inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) {
|
|||||||
std::memset(memoryBuffer.stack_.Push<char>(n), c, n * sizeof(c));
|
std::memset(memoryBuffer.stack_.Push<char>(n), c, n * sizeof(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_MEMORYBUFFER_H_
|
#endif // RAPIDJSON_MEMORYBUFFER_H_
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Represents an in-memory input byte stream.
|
//! Represents an in-memory input byte stream.
|
||||||
/*!
|
/*!
|
||||||
@ -62,6 +62,6 @@ struct MemoryStream {
|
|||||||
size_t size_; //!< Size of the stream.
|
size_t size_; //!< Size of the stream.
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_MEMORYBUFFER_H_
|
#endif // RAPIDJSON_MEMORYBUFFER_H_
|
||||||
|
@ -28,7 +28,7 @@ RAPIDJSON_DIAG_PUSH
|
|||||||
RAPIDJSON_DIAG_OFF(effc++)
|
RAPIDJSON_DIAG_OFF(effc++)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Writer with indentation and spacing.
|
//! Writer with indentation and spacing.
|
||||||
/*!
|
/*!
|
||||||
@ -196,7 +196,7 @@ private:
|
|||||||
PrettyWriter& operator=(const PrettyWriter&);
|
PrettyWriter& operator=(const PrettyWriter&);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
@ -48,6 +48,52 @@
|
|||||||
#include <cstdlib> // malloc(), realloc(), free(), size_t
|
#include <cstdlib> // malloc(), realloc(), free(), size_t
|
||||||
#include <cstring> // memset(), memcpy(), memmove(), memcmp()
|
#include <cstring> // memset(), memcpy(), memmove(), memcmp()
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
// RAPIDJSON_NAMESPACE_(BEGIN|END)
|
||||||
|
/*! \def RAPIDJSON_NAMESPACE
|
||||||
|
\ingroup RAPIDJSON_CONFIG
|
||||||
|
\brief provide custom rapidjson namespace
|
||||||
|
|
||||||
|
In order to avoid symbol clashes and/or "One Definition Rule" errors
|
||||||
|
between multiple inclusions of (different versions of) RapidJSON in
|
||||||
|
a single binary, users can customize the name of the main RapidJSON
|
||||||
|
namespace.
|
||||||
|
|
||||||
|
In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE
|
||||||
|
to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple
|
||||||
|
levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref
|
||||||
|
RAPIDJSON_NAMESPACE_END need to be defined as well:
|
||||||
|
|
||||||
|
\code
|
||||||
|
// in some .cpp file
|
||||||
|
#define RAPIDJSON_NAMESPACE my::rapidjson
|
||||||
|
#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {
|
||||||
|
#define RAPIDJSON_NAMESPACE_END } }
|
||||||
|
#include "rapidjson/..."
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\see rapidjson
|
||||||
|
*/
|
||||||
|
/*! \def RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
\ingroup RAPIDJSON_CONFIG
|
||||||
|
\brief provide custom rapidjson namespace (opening expression)
|
||||||
|
\see RAPIDJSON_NAMESPACE
|
||||||
|
*/
|
||||||
|
/*! \def RAPIDJSON_NAMESPACE_END
|
||||||
|
\ingroup RAPIDJSON_CONFIG
|
||||||
|
\brief provide custom rapidjson namespace (closing expression)
|
||||||
|
\see RAPIDJSON_NAMESPACE
|
||||||
|
*/
|
||||||
|
#ifndef RAPIDJSON_NAMESPACE
|
||||||
|
#define RAPIDJSON_NAMESPACE rapidjson
|
||||||
|
#endif
|
||||||
|
#ifndef RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {
|
||||||
|
#endif
|
||||||
|
#ifndef RAPIDJSON_NAMESPACE_END
|
||||||
|
#define RAPIDJSON_NAMESPACE_END }
|
||||||
|
#endif
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// RAPIDJSON_NO_INT64DEFINE
|
// RAPIDJSON_NO_INT64DEFINE
|
||||||
|
|
||||||
@ -238,20 +284,20 @@
|
|||||||
#ifdef RAPIDJSON_DOXYGEN_RUNNING
|
#ifdef RAPIDJSON_DOXYGEN_RUNNING
|
||||||
#define RAPIDJSON_NO_SIZETYPEDEFINE
|
#define RAPIDJSON_NO_SIZETYPEDEFINE
|
||||||
#endif
|
#endif
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
//! Size type (for string lengths, array sizes, etc.)
|
//! Size type (for string lengths, array sizes, etc.)
|
||||||
/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
|
/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
|
||||||
instead of using \c size_t. Users may override the SizeType by defining
|
instead of using \c size_t. Users may override the SizeType by defining
|
||||||
\ref RAPIDJSON_NO_SIZETYPEDEFINE.
|
\ref RAPIDJSON_NO_SIZETYPEDEFINE.
|
||||||
*/
|
*/
|
||||||
typedef unsigned SizeType;
|
typedef unsigned SizeType;
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// always import std::size_t to rapidjson namespace
|
// always import std::size_t to rapidjson namespace
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
using std::size_t;
|
using std::size_t;
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// RAPIDJSON_ASSERT
|
// RAPIDJSON_ASSERT
|
||||||
@ -275,12 +321,11 @@ using std::size_t;
|
|||||||
// Adopt from boost
|
// Adopt from boost
|
||||||
#ifndef RAPIDJSON_STATIC_ASSERT
|
#ifndef RAPIDJSON_STATIC_ASSERT
|
||||||
//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
|
//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
template <bool x> struct STATIC_ASSERTION_FAILURE;
|
template <bool x> struct STATIC_ASSERTION_FAILURE;
|
||||||
template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
|
template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
|
||||||
template<int x> struct StaticAssertTest {};
|
template<int x> struct StaticAssertTest {};
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)
|
#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)
|
||||||
#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)
|
#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)
|
||||||
@ -298,8 +343,9 @@ template<int x> struct StaticAssertTest {};
|
|||||||
\param x compile-time condition
|
\param x compile-time condition
|
||||||
\hideinitializer
|
\hideinitializer
|
||||||
*/
|
*/
|
||||||
#define RAPIDJSON_STATIC_ASSERT(x) typedef ::rapidjson::StaticAssertTest<\
|
#define RAPIDJSON_STATIC_ASSERT(x) \
|
||||||
sizeof(::rapidjson::STATIC_ASSERTION_FAILURE<bool(x) >)>\
|
typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \
|
||||||
|
sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \
|
||||||
RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
|
RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -418,8 +464,11 @@ template<int x> struct StaticAssertTest {};
|
|||||||
#include "allocators.h"
|
#include "allocators.h"
|
||||||
#include "encodings.h"
|
#include "encodings.h"
|
||||||
|
|
||||||
//! main RapidJSON namespace
|
/*! \namespace rapidjson
|
||||||
namespace rapidjson {
|
\brief main RapidJSON namespace
|
||||||
|
\see RAPIDJSON_NAMESPACE
|
||||||
|
*/
|
||||||
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// Stream
|
// Stream
|
||||||
@ -574,6 +623,6 @@ enum Type {
|
|||||||
kNumberType = 6 //!< number
|
kNumberType = 6 //!< number
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_RAPIDJSON_H_
|
#endif // RAPIDJSON_RAPIDJSON_H_
|
||||||
|
@ -116,7 +116,7 @@ RAPIDJSON_DIAG_OFF(4702) // unreachable code
|
|||||||
|
|
||||||
#include "error/error.h" // ParseErrorCode, ParseResult
|
#include "error/error.h" // ParseErrorCode, ParseResult
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
// ParseFlag
|
// ParseFlag
|
||||||
@ -1360,7 +1360,7 @@ private:
|
|||||||
//! Reader with UTF8 encoding and default allocator.
|
//! Reader with UTF8 encoding and default allocator.
|
||||||
typedef GenericReader<UTF8<>, UTF8<> > Reader;
|
typedef GenericReader<UTF8<>, UTF8<> > Reader;
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "rapidjson.h"
|
#include "rapidjson.h"
|
||||||
#include "internal/stack.h"
|
#include "internal/stack.h"
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! Represents an in-memory output stream.
|
//! Represents an in-memory output stream.
|
||||||
/*!
|
/*!
|
||||||
@ -74,6 +74,6 @@ inline void PutN(GenericStringBuffer<UTF8<> >& stream, char c, size_t n) {
|
|||||||
std::memset(stream.stack_.Push<char>(n), c, n * sizeof(c));
|
std::memset(stream.stack_.Push<char>(n), c, n * sizeof(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#endif // RAPIDJSON_STRINGBUFFER_H_
|
#endif // RAPIDJSON_STRINGBUFFER_H_
|
||||||
|
@ -34,7 +34,7 @@ RAPIDJSON_DIAG_PUSH
|
|||||||
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
|
RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rapidjson {
|
RAPIDJSON_NAMESPACE_BEGIN
|
||||||
|
|
||||||
//! JSON writer
|
//! JSON writer
|
||||||
/*! Writer implements the concept Handler.
|
/*! Writer implements the concept Handler.
|
||||||
@ -380,7 +380,7 @@ inline bool Writer<StringBuffer>::WriteDouble(double d) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace rapidjson
|
RAPIDJSON_NAMESPACE_END
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
RAPIDJSON_DIAG_POP
|
RAPIDJSON_DIAG_POP
|
||||||
|
76
test/unittest/namespacetest.cpp
Normal file
76
test/unittest/namespacetest.cpp
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
// Copyright (C) 2011 Milo Yip
|
||||||
|
//
|
||||||
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
|
// in the Software without restriction, including without limitation the rights
|
||||||
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
// copies of the Software, and to permit persons to whom the Software is
|
||||||
|
// furnished to do so, subject to the following conditions:
|
||||||
|
//
|
||||||
|
// The above copyright notice and this permission notice shall be included in
|
||||||
|
// all copies or substantial portions of the Software.
|
||||||
|
//
|
||||||
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
// THE SOFTWARE.
|
||||||
|
|
||||||
|
#include "unittest.h"
|
||||||
|
|
||||||
|
// test another instantiation of RapidJSON in a different namespace
|
||||||
|
|
||||||
|
#define RAPIDJSON_NAMESPACE my::rapid::json
|
||||||
|
#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapid { namespace json {
|
||||||
|
#define RAPIDJSON_NAMESPACE_END } } }
|
||||||
|
|
||||||
|
// include lots of RapidJSON files
|
||||||
|
|
||||||
|
#include "rapidjson/document.h"
|
||||||
|
#include "rapidjson/writer.h"
|
||||||
|
#include "rapidjson/filereadstream.h"
|
||||||
|
#include "rapidjson/filewritestream.h"
|
||||||
|
#include "rapidjson/encodedstream.h"
|
||||||
|
#include "rapidjson/stringbuffer.h"
|
||||||
|
|
||||||
|
static const char json[] = "{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3,4]}";
|
||||||
|
|
||||||
|
TEST(NamespaceTest,Using) {
|
||||||
|
using namespace RAPIDJSON_NAMESPACE;
|
||||||
|
typedef GenericDocument<UTF8<>, CrtAllocator> DocumentType;
|
||||||
|
DocumentType doc;
|
||||||
|
|
||||||
|
doc.Parse(json);
|
||||||
|
EXPECT_TRUE(!doc.HasParseError());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(NamespaceTest,Direct) {
|
||||||
|
typedef RAPIDJSON_NAMESPACE::Document Document;
|
||||||
|
typedef RAPIDJSON_NAMESPACE::Reader Reader;
|
||||||
|
typedef RAPIDJSON_NAMESPACE::StringStream StringStream;
|
||||||
|
typedef RAPIDJSON_NAMESPACE::StringBuffer StringBuffer;
|
||||||
|
typedef RAPIDJSON_NAMESPACE::Writer<StringBuffer> WriterType;
|
||||||
|
|
||||||
|
StringStream s(json);
|
||||||
|
StringBuffer buffer;
|
||||||
|
WriterType writer(buffer);
|
||||||
|
buffer.ShrinkToFit();
|
||||||
|
Reader reader;
|
||||||
|
reader.Parse(s, writer);
|
||||||
|
|
||||||
|
EXPECT_STREQ(json, buffer.GetString());
|
||||||
|
EXPECT_EQ(sizeof(json)-1, buffer.GetSize());
|
||||||
|
EXPECT_TRUE(writer.IsComplete());
|
||||||
|
|
||||||
|
Document doc;
|
||||||
|
doc.Parse(buffer.GetString());
|
||||||
|
EXPECT_TRUE(!doc.HasParseError());
|
||||||
|
|
||||||
|
buffer.Clear();
|
||||||
|
writer.Reset(buffer);
|
||||||
|
doc.Accept(writer);
|
||||||
|
EXPECT_STREQ(json, buffer.GetString());
|
||||||
|
EXPECT_TRUE(writer.IsComplete());
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user