28 #define SIMD_SUFFIX(name) name##_SSE2
29 #elif defined(RAPIDJSON_SSE42)
30 #define SIMD_SUFFIX(name) name##_SSE42
31 #elif defined(RAPIDJSON_NEON)
32 #define SIMD_SUFFIX(name) name##_NEON
34 #define SIMD_SUFFIX(name) name
47 temp_ = (
char *)malloc(length_ + 1);
52 for (
size_t i = 0; i < 7; i++)
53 EXPECT_FALSE(typesDoc_[i].Parse(types_[i]).HasParseError());
72 for (
size_t i = 0; i < kTrialCount; i++) {
73 memcpy(temp_, json_, length_ + 1);
82 for (
size_t i = 0; i < kTrialCount; i++) {
83 memcpy(temp_, json_, length_ + 1);
92 for (
size_t i = 0; i < kTrialCount; i++) {
100 #define TEST_TYPED(index, Name)\
101 TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_##Name)) {\
102 for (size_t i = 0; i < kTrialCount * 10; i++) {\
103 StringStream s(types_[index]);\
104 BaseReaderHandler<> h;\
106 EXPECT_TRUE(reader.Parse(s, h));\
109 TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_##Name)) {\
110 for (size_t i = 0; i < kTrialCount * 10; i++) {\
111 memcpy(temp_, types_[index], typesLength_[index] + 1);\
112 InsituStringStream s(temp_);\
113 BaseReaderHandler<> h;\
115 EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h));\
130 for (
size_t i = 0; i < kTrialCount; i++) {
139 for (
size_t i = 0; i < kTrialCount; i++) {
148 for (
size_t i = 0; i < kTrialCount; i++) {
149 memcpy(temp_, json_, length_ + 1);
158 for (
size_t i = 0; i < kTrialCount; i++) {
172 for (
size_t i = 0; i < kTrialCount; i++) {
173 memcpy(temp_, json_, length_ + 1);
187 for (
size_t i = 0; i < kTrialCount; i++) {
196 for (
size_t i = 0; i < kTrialCount; i++) {
197 memcpy(temp_, json_, length_ + 1);
205 for (
size_t i = 0; i < kTrialCount; i++) {
206 memcpy(temp_, json_, length_ + 1);
214 for (
size_t i = 0; i < kTrialCount; i++) {
222 for (
size_t i = 0; i < kTrialCount; i++) {
224 doc.
Parse(json_, length_);
229 #if RAPIDJSON_HAS_STDSTRING
232 for (
size_t i = 0; i < kTrialCount; i++) {
241 for (
size_t i = 0; i < kTrialCount; i++) {
249 for (
size_t i = 0; i < kTrialCount; i++) {
250 memcpy(temp_, json_, length_ + 1);
258 for (
size_t i = 0; i < kTrialCount; i++) {
268 for (
size_t i = 0; i < kTrialCount; i++) {
280 switch(
value.GetType()) {
282 for (
typename T::ConstMemberIterator itr =
value.MemberBegin(); itr !=
value.MemberEnd(); ++itr) {
289 for (
typename T::ConstValueIterator itr =
value.Begin(); itr !=
value.End(); ++itr)
301 for (
size_t i = 0; i < kTrialCount; i++) {
311 RAPIDJSON_DIAG_OFF(effc++)
328 for (
size_t i = 0; i < kTrialCount; i++) {
330 doc_.Accept(counter);
345 for (
size_t i = 0; i < kTrialCount; i++) {
355 for (
size_t i = 0; i < kTrialCount; i++) {
366 #define TEST_TYPED(index, Name)\
367 TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer_##Name)) {\
368 for (size_t i = 0; i < kTrialCount * 10; i++) {\
369 StringBuffer s(0, 1024 * 1024);\
370 Writer<StringBuffer> writer(s);\
371 typesDoc_[index].Accept(writer);\
372 const char* str = s.GetString();\
388 for (
size_t i = 0; i < kTrialCount; i++) {
402 for (
size_t i = 0; i < kTrialCount * kTrialCount; i++)
408 for (
size_t i = 0; i < kTrialCount; i++) {
410 while (s.Peek() ==
' ' || s.Peek() ==
'\n' || s.Peek() ==
'\r' || s.Peek() ==
'\t')
417 for (
size_t i = 0; i < kTrialCount; i++) {
425 for (
size_t i = 0; i < kTrialCount; i++) {
426 const char* s = whitespace_ + std::strspn(whitespace_,
" \t\r\n");
434 for (
size_t i = 0; i < kTrialCount; i++) {
437 while (is.
Peek() !=
'\0')
444 for (
size_t i = 0; i < kTrialCount; i++) {
445 FILE *fp = fopen(filename_,
"rb");
448 while (s.
Take() !=
'\0')
455 for (
size_t i = 0; i < kTrialCount; i++) {
456 FILE *fp = fopen(filename_,
"rb");
468 for (
int i = 0; i < 32 * 1024 * 1024; i++)
connection< TProtocol > & operator=(const connection< TProtocol > &obj)
C-runtime library allocator.
File byte stream for input using fread().
GenericDocument & ParseInsitu(Ch *str)
Parse JSON text from a mutable string.
GenericDocument & Parse(const typename SourceEncoding::Ch *str)
Parse JSON text from a read-only string (with Encoding conversion)
GenericDocument & ParseStream(InputStream &is)
Parse JSON text from an input stream (with Encoding conversion)
ParseResult Parse(InputStream &is, Handler &handler)
Parse JSON text.
bool IterativeParseNext(InputStream &is, Handler &handler)
Parse one token from JSON text.
void IterativeParseInit()
Initialize JSON text token-by-token parsing.
RAPIDJSON_FORCEINLINE bool IterativeParseComplete() const
Check if token-by-token parsing JSON text is complete.
bool HasParseError() const
Whether a parse error has occurred in the last parsing.
const Ch * GetString() const
Writer with indentation and spacing.
PrettyWriter & SetIndent(Ch indentChar, unsigned indentCharCount)
Set custom indentation.
GenericStringStream< UTF8< char > > StringStream
#define ASSERT_EQ(val1, val2)
#define EXPECT_EQ(val1, val2)
#define EXPECT_GT(val1, val2)
#define EXPECT_TRUE(condition)
#define ASSERT_TRUE(condition)
#define EXPECT_FALSE(condition)
void * memcpy(void *a, const void *b, size_t c)
double Pow10(int n)
Computes integer powers of 10 in double (10.0^n).
mdb_size_t count(MDB_cursor *cur)
const GenericPointer< typename T::ValueType > T2 value
common definitions and configuration
RAPIDJSON_NAMESPACE_BEGIN typedef unsigned SizeType
Size type (for string lengths, array sizes, etc.)
TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler))
#define SIMD_SUFFIX(name)
#define TEST_TYPED(index, Name)
size_t Traverse(const T &value)
void SkipWhitespace(InputStream &is)
Skip the JSON white spaces in a stream.
@ kParseFullPrecisionFlag
Parse number in full precision (but slower).
@ kParseInsituFlag
In-situ(destructive) parsing.
@ kParseDefaultFlags
Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS.
@ kParseValidateEncodingFlag
Validate encoding of JSON strings.
@ kParseIterativeFlag
Iterative(constant complexity in terms of function call stack size) parsing.
Default implementation of Handler.
Represents an in-memory input byte stream.
static bool Validate(InputStream &is, OutputStream &os)
bool EndArray(SizeType elementCount)
bool EndObject(SizeType memberCount)