Convert everything to c api
This commit is contained in:
27
src/fuzz.cpp
27
src/fuzz.cpp
@@ -1,6 +1,5 @@
|
||||
#include "callbacks.h"
|
||||
#include "json_value.h"
|
||||
#include "parser3.h"
|
||||
#include "weaseljson.h"
|
||||
|
||||
#include <simdjson.h>
|
||||
@@ -9,34 +8,36 @@ std::pair<std::string, WeaselJsonStatus> runStreaming(std::string copy,
|
||||
int stride) {
|
||||
SerializeState state;
|
||||
auto c = serializeCallbacks();
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
std::unique_ptr<WeaselJsonParser, decltype(&WeaselJsonParser_destroy)> parser{
|
||||
WeaselJsonParser_create(1024, &c, &state), WeaselJsonParser_destroy};
|
||||
if (stride == 0) {
|
||||
auto s = parser.parse(copy.data(), copy.size());
|
||||
auto s = WeaselJsonParser_parse(parser.get(), copy.data(), copy.size());
|
||||
if (s != WeaselJson_AGAIN) {
|
||||
return {state.result, s};
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < copy.size(); i += stride) {
|
||||
auto s =
|
||||
parser.parse(copy.data() + i, std::min<int>(stride, copy.size() - i));
|
||||
auto s = WeaselJsonParser_parse(parser.get(), copy.data() + i,
|
||||
std::min<int>(stride, copy.size() - i));
|
||||
if (s != WeaselJson_AGAIN) {
|
||||
return {state.result, s};
|
||||
}
|
||||
}
|
||||
}
|
||||
auto s = parser.parse(nullptr, 0);
|
||||
auto s = WeaselJsonParser_parse(parser.get(), nullptr, 0);
|
||||
return {state.result, s};
|
||||
}
|
||||
|
||||
std::pair<std::string, WeaselJsonStatus> runBatch(std::string copy) {
|
||||
SerializeState state;
|
||||
auto c = serializeCallbacks();
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
auto s = parser.parse(copy.data(), copy.size());
|
||||
std::unique_ptr<WeaselJsonParser, decltype(&WeaselJsonParser_destroy)> parser{
|
||||
WeaselJsonParser_create(1024, &c, &state), WeaselJsonParser_destroy};
|
||||
auto s = WeaselJsonParser_parse(parser.get(), copy.data(), copy.size());
|
||||
if (s != WeaselJson_AGAIN) {
|
||||
return {state.result, s};
|
||||
}
|
||||
s = parser.parse(nullptr, 0);
|
||||
s = WeaselJsonParser_parse(parser.get(), nullptr, 0);
|
||||
return {state.result, s};
|
||||
}
|
||||
|
||||
@@ -73,10 +74,12 @@ void compareWithSimdjson(std::string const &json) {
|
||||
{
|
||||
auto copy = json;
|
||||
auto c = noopCallbacks();
|
||||
parser3::Parser3 parser3(&c, nullptr);
|
||||
ours = parser3.parse(copy.data(), copy.size());
|
||||
std::unique_ptr<WeaselJsonParser, decltype(&WeaselJsonParser_destroy)>
|
||||
parser{WeaselJsonParser_create(1024, &c, nullptr),
|
||||
WeaselJsonParser_destroy};
|
||||
ours = WeaselJsonParser_parse(parser.get(), copy.data(), copy.size());
|
||||
if (ours == WeaselJson_AGAIN) {
|
||||
ours = parser3.parse(nullptr, 0);
|
||||
ours = WeaselJsonParser_parse(parser.get(), nullptr, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user