diff --git a/.gitignore b/.gitignore index 162fa78f0..f2d59df08 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,10 @@ objs /corpus.zip /distinctuseridcompetition /errortests +/examples/quickstart/quickstart +/examples/quickstart/simdjson.cpp +/examples/quickstart/simdjson.h +/examples/quickstart/twitter.json /fuzz/fuzz_dump /fuzz/fuzz_dump_raw_tape /fuzz/fuzz_parser diff --git a/Makefile b/Makefile index 2d7a770b1..3284347b8 100644 --- a/Makefile +++ b/Makefile @@ -141,6 +141,12 @@ run_pointercheck: pointercheck run_issue150_sh: allparserscheckfile ./scripts/issue150.sh +quickstart: + cd examples/quickstart && make quickstart + +run_quickstart: + cd examples/quickstart && make test + run_testjson2json_sh: minify json2json ./scripts/testjson2json.sh @@ -150,12 +156,12 @@ $(FEATURE_JSON_FILES): benchmark/genfeaturejson.rb run_benchfeatures: benchfeatures $(FEATURE_JSON_FILES) ./benchfeatures -n 1000 -test: run_basictests run_readme_examples run_jsoncheck run_numberparsingcheck run_integer_tests run_stringparsingcheck run_parse_many_test run_pointercheck run_testjson2json_sh run_issue150_sh run_jsoncheck_westmere run_jsoncheck_fallback +test: quicktests slowtests @echo "It looks like the code is good!" -quiettest: run_basictests run_readme_examples run_jsoncheck run_numberparsingcheck run_integer_tests run_stringparsingcheck run_jsoncheck run_parse_many_test run_pointercheck run_testjson2json_sh run_issue150_sh run_jsoncheck_westmere run_jsoncheck_fallback +quiettest: quicktests slowtests -quicktests: run_basictests run_readme_examples run_jsoncheck run_numberparsingcheck run_integer_tests run_stringparsingcheck run_jsoncheck run_parse_many_test run_pointercheck run_jsoncheck_westmere run_jsoncheck_fallback +quicktests: run_basictests run_quickstart run_readme_examples run_jsoncheck run_numberparsingcheck run_integer_tests run_stringparsingcheck run_jsoncheck run_parse_many_test run_pointercheck run_jsoncheck_westmere run_jsoncheck_fallback slowtests: run_testjson2json_sh run_issue150_sh @@ -283,10 +289,11 @@ allparserscheckfile: tests/allparserscheckfile.cpp $(HEADERS) $(LIBFILES) $(EXTR cppcheck: cppcheck --enable=all src/*.cpp benchmarks/*.cpp tests/*.cpp -Iinclude -I. -Ibenchmark/linux -everything: $(MAINEXECUTABLES) $(EXTRA_EXECUTABLES) $(TESTEXECUTABLES) $(COMPARISONEXECUTABLES) $(SUPPLEMENTARYEXECUTABLES) +everything: $(MAINEXECUTABLES) $(EXTRA_EXECUTABLES) $(TESTEXECUTABLES) $(COMPARISONEXECUTABLES) $(SUPPLEMENTARYEXECUTABLES) quickstart clean: rm -f submodules $(EXTRAOBJECTS) $(MAINEXECUTABLES) $(EXTRA_EXECUTABLES) $(TESTEXECUTABLES) $(COMPARISONEXECUTABLES) $(SUPPLEMENTARYEXECUTABLES) + cd examples/quickstart && make clean cleandist: rm -f submodules $(EXTRAOBJECTS) $(MAINEXECUTABLES) $(EXTRA_EXECUTABLES) $(TESTEXECUTABLES) $(COMPARISONEXECUTABLES) $(SUPPLEMENTARYEXECUTABLES) diff --git a/README.md b/README.md index f8a4914b1..f09078395 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ The simdjson library is easily consumable with a single .h and .cpp file. ``` wget https://raw.githubusercontent.com/simdjson/simdjson/master/singleheader/simdjson.h https://raw.githubusercontent.com/simdjson/simdjson/master/singleheader/simdjson.cpp https://raw.githubusercontent.com/simdjson/simdjson/master/jsonexamples/twitter.json ``` -2. Create `parser.cpp`: +2. Create `quickstart.cpp`: ```c++ #include "simdjson.h" @@ -53,8 +53,8 @@ The simdjson library is easily consumable with a single .h and .cpp file. std::cout << tweets["search_metadata"]["count"] << " results." << std::endl; } ``` -3. `c++ -o parser parser.cpp simdjson.cpp -std=c++17` -4. `./parser` +3. `c++ -o quickstart quickstart.cpp simdjson.cpp -std=c++17` +4. `./quickstart` ``` 100 results. ``` diff --git a/examples/quickstart/Makefile b/examples/quickstart/Makefile new file mode 100644 index 000000000..8eda7588a --- /dev/null +++ b/examples/quickstart/Makefile @@ -0,0 +1,16 @@ +ROOT=../.. +SINGLEHEADER=$(ROOT)/singleheader +JSONEXAMPLES=$(ROOT)/jsonexamples + +test: quickstart twitter.json + ./quickstart +simdjson.cpp: $(SINGLEHEADER)/simdjson.cpp + cp $(SINGLEHEADER)/simdjson.cpp . +simdjson.h: $(SINGLEHEADER)/simdjson.h + cp $(SINGLEHEADER)/simdjson.h . +twitter.json: $(JSONEXAMPLES)/twitter.json + cp $(JSONEXAMPLES)/twitter.json . +quickstart: quickstart.cpp simdjson.cpp simdjson.h + c++ -o ./quickstart quickstart.cpp simdjson.cpp -std=c++17 +clean: + rm -f simdjson.cpp simdjson.h twitter.json quickstart diff --git a/examples/quickstart/quickstart.cpp b/examples/quickstart/quickstart.cpp new file mode 100644 index 000000000..818a3d229 --- /dev/null +++ b/examples/quickstart/quickstart.cpp @@ -0,0 +1,6 @@ +#include "simdjson.h" +int main(void) { + simdjson::dom::parser parser; + simdjson::dom::element tweets = parser.load("twitter.json"); + std::cout << tweets["search_metadata"]["count"] << " results." << std::endl; +}