Commit graph

410 commits

Author SHA1 Message Date
易思龙 91aee10579 support enum
construct enum type to basic_json (proxy by int type)
```
    enum { t = 0 };
    json  j = json::array();
    j.push_back(t);

    j.push_back(json::object({
         {"game_type", t}
    }));
```
2015-05-09 17:44:10 +08:00
Niels a8e92a6bfb fixed #68 2015-05-06 20:18:16 +02:00
Niels 17609f244d fixed #70 2015-05-06 19:52:12 +02:00
Niels 1580eee4ed applied #69 to header 2015-05-04 23:31:34 +02:00
Aaron Burghardt ea3e922a12 Fix performance regression introduced with the parsing callback feature. 2015-05-04 09:08:55 -04:00
Niels 1ac4d673b6 fixed test case 2015-05-03 18:46:26 +02:00
Niels 952cbbc795 manually merged pull request #41 2015-05-03 17:52:13 +02:00
Niels faae8bb843 some typename fix 2015-04-27 23:09:51 +02:00
Niels 81d3973151 undid changes that broke the build 2015-04-26 21:51:35 +02:00
Niels f874b5f0f8 clean up
- removed m_final member
- parse_internal now takes a reference to a basic_json object to fill
with data
- header is automatically regenerated if re2c file is changed
2015-04-26 21:43:47 +02:00
Niels f09df96742 updated README 2015-04-26 15:16:07 +02:00
Niels 7a32bd22e9 Merge pull request #63 from Florianjw/master
Improve the implementations of the comparission-operators
2015-04-26 15:10:32 +02:00
Niels c7f95cc636 minor change to the parsing of objects/arrays 2015-04-26 15:10:04 +02:00
Florian Weber 4fbff7d140 simplify value_t::operator< by using a lookup-table 2015-04-26 14:55:06 +02:00
Florian Weber f5e95522aa remove braces around single-return-statement switch-cases 2015-04-26 14:44:56 +02:00
Florian Weber d2771eb1bb Fix comparission between integers and floats
Until now it depended on the parameter-order whether
integers and floats were compared as integers or floats.

Appart from being not logical, this might even have meant that
the provided “order” was in fact not that. (not sure here, but I
like to be carefull)
2015-04-26 14:39:39 +02:00
Florian Weber 306695dd25 fix typos and improve operator== 2015-04-26 14:31:31 +02:00
Florian Weber 28f64c22a9 simplify operator< 2015-04-26 14:19:56 +02:00
Niels a372937424 fixed some small issues 2015-04-26 13:37:01 +02:00
Niels e3ab0bc74a addressing issue #62 2015-04-25 23:10:23 +02:00
Niels 89a8491914 minor changes 2015-04-25 01:25:42 +02:00
Niels fc58a73523 fix #60 (double escaping) 2015-04-24 22:06:57 +02:00
Niels 2dd94dd943 some simplifications 2015-04-12 17:26:54 +02:00
Niels f03c6ce458 added missing test cases 2015-04-12 16:57:51 +02:00
Niels dda8a5c473 adjusted code to documentation; some cleanup 2015-04-12 16:19:21 +02:00
Niels 139ef0e750 implemented front() and back() 2015-04-12 14:14:00 +02:00
Niels ade49f8b2a constructor for an integer range 2015-04-12 13:15:26 +02:00
Niels b801adca76 started to implement sequence container 2015-04-12 12:02:30 +02:00
Niels 02f617f083 adjusted code to documentation 2015-04-11 19:26:12 +02:00
Niels 6dceab583c implemented issue #57: erase with iterators 2015-04-11 15:30:19 +02:00
Niels 84195daf28 added erase function for arrays 2015-04-09 18:55:57 +02:00
Niels 1bdb6acb1f overworked type conversion 2015-04-08 22:23:40 +02:00
Niels 0a96116b0c more SFINAE 2015-04-03 16:34:39 +02:00
Niels ea1046110d using "key_type" where possible 2015-04-03 14:43:44 +02:00
Niels b747881466 subtle fix for get() function 2015-04-03 14:20:15 +02:00
Niels 5e89cb0acb implemented key()/value() for reverse iterators 2015-03-26 17:06:33 +01:00
Niels 47ea1c10d4 key/value function for iterators (#46)
Currently only support iterator and const_iterator. reverse_iterator
and const_reverse_iterator to be implemented soon.
2015-03-24 19:08:03 +01:00
Niels 0707030bc5 minor changes to pull request #40 2015-03-24 18:05:58 +01:00
Niels 50e06a7bd1 Merge pull request #40 from aburgh/incremental
Parse streams incrementally.
2015-03-24 17:57:40 +01:00
Niels e3188897f8 more on #48: allowing non-std begin/end functions 2015-03-24 17:39:00 +01:00
Niels 6fc52f3302 fixed #47 (added erase function to remove key form object) 2015-03-24 16:50:55 +01:00
Niels 43417c350b fixed #42 (removed equality comparisons for floats) 2015-03-23 23:03:48 +01:00
Niels 53e3da8071 minor adjustments to pull request #38 2015-03-23 20:27:30 +01:00
Niels a382a93a8e Merge pull request #38 from wtsi-hgi/feature/small-float-serialization
Feature/small float serialization
2015-03-23 20:15:50 +01:00
Niels bb2671df11 fixed #43 (adding friendship to allow iterator change) 2015-03-22 19:18:21 +01:00
Niels f2957dc3bf fixed #45 (added count function for keys in objects) 2015-03-22 19:07:43 +01:00
Niels cf829ac2e8 fixed deprecated warnings in issue #42 2015-03-22 17:50:43 +01:00
Niels abc6137001 fixed #48 (using nonmember begin/end) 2015-03-22 17:30:48 +01:00
Aaron Burghardt 396f64a058 Replaced leading tabs with spaces (4 per tab). 2015-03-02 15:25:09 -05:00
Aaron Burghardt 87746280ca Added parse() for streams. 2015-03-01 06:31:33 -05:00
Aaron Burghardt 2855c70c27 Use inplace configuration for yyfill and disable the parameter to yyfill. 2015-03-01 05:55:40 -05:00
Aaron Burghardt 268fd444e6 Added comments to new method yyfill. 2015-03-01 05:55:40 -05:00
Aaron Burghardt edb697293b Fixed variable adjustments in yyfill(). 2015-03-01 05:55:40 -05:00
Aaron Burghardt ec6979bf76 Purged old commented-out code. 2015-03-01 05:55:40 -05:00
Aaron Burghardt b66c306d47 Removed unused member m_state. 2015-03-01 05:55:40 -05:00
Aaron Burghardt 0d79e7c2a2 Removed duplicate m_marker updates in YYFILL macro. 2015-03-01 05:55:40 -05:00
Aaron Burghardt e3e18d7b85 Deleted extraneous comment. 2015-03-01 05:55:40 -05:00
Aaron Burghardt e4cc42cf81 Moved m_marker in lexer::scan() to be a member of lexer. 2015-03-01 05:55:40 -05:00
Aaron Burghardt 754c38e871 Moved buffer management into the lexer class and implemented YYFILL so that streams are read incrementally. 2015-03-01 05:55:40 -05:00
Joshua C. Randall 7bfcbe2825 Fixes serialization of small floats
Now uses std::snprintf() to generate a "%.15g" formatted string
for JSON values of type number_float. 15 decimals digits are
enough to round-trip an IEEE 754 double from string->double->string
and get an identical result.

std::snprintf is called twice. Once to determine the required
buffer size and then again after allocating a buffer of that
size.

Note that the buffer size *could* be hardcoded for better
performance. "%.15g" should result in strings of maximum length
23, plus one character for the terminating null for a buffer size
of 24.
2015-02-28 17:11:46 +00:00
Niels 63c70fa07e minor changes 2015-02-24 23:19:19 +01:00
Niels d524e23204 overworked iterators 2015-02-22 17:52:27 +01:00
Niels bc2e3a798d a more forgiving array behavior 2015-02-21 13:24:07 +01:00
Niels afd02eee44 fixed [] operator; added README 2015-02-18 22:28:56 +01:00
Niels 9e7941b6ba more type adjustments 2015-02-17 00:22:12 +01:00
Niels 432a54e570 some type fixes 2015-02-16 23:17:28 +01:00
Niels a3f52a5a04 minor change to make code more portable 2015-02-16 22:54:07 +01:00
Niels 5ca84052a7 removed unused code and fixed includes 2015-02-16 22:47:30 +01:00
Niels db91140156 clean up 2015-02-15 23:27:35 +01:00
Niels 429d2099ab more allocators 2015-02-15 23:13:46 +01:00
Niels b387761e12 forgot to destroy object 2015-02-15 22:58:35 +01:00
Niels 568d75954e experiment with user-defined allocator 2015-02-15 22:49:26 +01:00
Niels b1be1b45ee minor change 2015-02-15 18:43:17 +01:00
Niels d31d1ca664 fix of the fix 2015-02-15 17:40:46 +01:00
Niels 9f87fd464a fixed Valgrind error 2015-02-15 17:07:19 +01:00
Niels f1f72403cd some unicode magic 2015-02-15 16:56:54 +01:00
Niels b80ca376f9 added some missing features from 2.0 version 2015-02-15 15:16:11 +01:00
Niels 2d8b362849 further cleanup 2015-02-15 14:52:00 +01:00
Niels 2fc82358ce clean up 2015-02-15 13:35:51 +01:00
Niels bb558d8e6f added Unicode support 2015-02-15 11:44:49 +01:00
Niels 6ef3cb51a4 some reorganization 2015-02-14 17:34:06 +01:00
Niels cc4a8319a1 reverse iterators 2015-02-14 16:47:14 +01:00
Niels 005a5c2858 some fixes and cleanup 2015-02-13 21:46:33 +01:00
Niels 4361c4d03f more test cases 2015-02-12 22:54:42 +01:00
Niels 89a1b0247b fixed a major bug in the parser 2015-02-11 17:24:14 +01:00
Niels 3f8dc632e2 test cases for iterator classes 2015-02-11 15:29:41 +01:00
Niels 53c9564c51 bug fix and test cases 2015-02-11 14:58:52 +01:00
Niels 7b7a54aca5 fixed a bug 2015-02-11 13:15:22 +01:00
Niels f1bd206994 number test cases 2015-02-11 11:36:45 +01:00
Niels 463c38df60 fix test case 2015-02-11 10:57:17 +01:00
Niels c816fd12a0 cleanup 2015-02-11 10:16:43 +01:00
Niels d609790fff added whitespace handling 2015-02-11 09:51:24 +01:00
Niels 5d280143b7 fixes 2015-02-11 09:41:23 +01:00
Niels 8a4e127a57 + moved lexer to class 2015-02-11 09:10:28 +01:00
Niels e845cd1db8 still errors... 2015-02-10 23:55:44 +01:00
Niels 0433e71fc3 rename member variables; add whitespace tests 2015-02-10 23:20:30 +01:00
Niels f9797f8eb2 try 2015-02-10 23:05:45 +01:00
Niels 1aebb6e6ed removing failing (?) test cases 2015-02-10 22:48:16 +01:00
Niels 6232c78f88 possible fix 2015-02-10 22:37:07 +01:00
Niels 1bbde4597b more test cases 2015-02-10 22:09:21 +01:00
Niels cd89a88b4a fix build error 2015-02-10 21:03:32 +01:00
Niels 963ec13b4a testing the parser 2015-02-10 20:52:39 +01:00
Niels 3589837071 more test cases 2015-02-10 20:28:16 +01:00
Niels 8c6bb04d10 added width feature / more test cases 2015-02-10 19:50:26 +01:00
Niels 4cd341d4db more unit tests 2015-02-10 18:51:09 +01:00
Niels 29a8d43d5a fixed tests for copy assignment 2015-02-10 17:40:47 +01:00
Niels 2ec0c79e0f test cases and clean up 2015-02-09 21:10:19 +01:00
Niels 0cfd0f5d68 added test cases and fixed some warnings 2015-02-09 20:21:26 +01:00
Niels e53e84e1cc more test cases 2015-02-09 18:45:32 +01:00
Niels 48392cfa79 some bug fixing 2015-02-09 18:02:31 +01:00
Niels 330ffd952b removed reverse_iterators and fixed some bugs 2015-02-08 19:18:39 +01:00
Niels 441a6f267f more test cases 2015-02-08 16:08:48 +01:00
Niels 16b91d491e more test cases 2015-02-08 15:47:40 +01:00
Niels 7cd9067ea2 more test cases 2015-02-08 14:38:52 +01:00
Niels caf82be2c7 added reverse iterators 2015-02-08 12:53:10 +01:00
Niels 87c250d843 another commit to trigger coverage 2015-02-07 19:14:23 +01:00
Niels cc274f8145 small changes with default values 2015-02-07 19:04:08 +01:00
Niels cf498ca4f2 added more features from master branch 2015-02-07 15:57:47 +01:00
Niels ac274dee2a Zwischenstand 2015-02-05 22:45:33 +01:00
Niels 16fa85e9f2 Zwischenstand 2015-02-05 22:45:21 +01:00
Niels a5188b08df strings are escaped 2015-02-04 22:49:46 +01:00
Niels 5ec433604a more test cases 2015-01-31 21:25:38 +01:00
Niels 385865c4ec remove checks in iterator 2015-01-31 20:46:23 +01:00
Niels befd90dead cleanup 2015-01-31 20:13:11 +01:00
Niels 5199382c91 worked on issue #8 and #27 2015-01-24 20:33:06 +01:00
Niels 807de40463 implemented missing operator[] 2015-01-23 18:27:58 +01:00
Niels 6ee46ed519 cleanup 2015-01-21 17:42:45 +01:00
Niels d66743b9c2 fixed a memory leak 2015-01-21 15:59:52 +01:00
Niels bbc45eb4d8 overworked iterators 2015-01-21 15:43:24 +01:00
Niels 76be1ae1f6 + more adjustments toward a real container 2015-01-21 11:47:03 +01:00
Niels 3c780f0f57 + generic constructors for arrays and objects 2015-01-21 09:40:46 +01:00
Niels a7a946bd18 added missing header 2015-01-20 21:15:14 +01:00
Niels 54fc97d434 + set number type to int64_t
+ replaced several functions by template magic
2015-01-20 20:43:54 +01:00
Niels a144800774 + implemented member and non-member swap 2015-01-19 19:51:07 +01:00
Niels 7724d34741 fixed #31: only use spaces in pretty print 2015-01-18 10:58:48 +01:00
Niels 19043d2003 this should fix #28 2015-01-13 19:07:53 +01:00
WanCW 36f6199898 Fix string conversion under Clang 2015-01-12 20:03:41 +08:00
Niels bd05c7a18a small tidy up after pull request #22
- removed IDE leftovers
- adjusted const’ness of some functions
- style guide
2015-01-11 15:16:14 +01:00
Niels 6533b33387 Merge pull request #22 from Teemperor/unicode_escaping
Unicode escaping
2015-01-11 15:08:13 +01:00
Niels 8d9c2bea4e + applied style guide 2015-01-11 15:05:04 +01:00
Raphael Isemann 7b97ec884e Fixed dumping of strings 2015-01-10 22:04:57 +01:00
Raphael Isemann a866a9d980 Reapplied code style fixes 2015-01-10 19:53:13 +01:00
Raphael Isemann a409ba9488 Fixed build 2015-01-10 18:46:01 +01:00
Raphael Isemann 6105ce5484 Allowed automerge 2015-01-10 17:33:18 +01:00
Raphael Isemann 1287f03084 Code point are two words, and so the "P" should be capital 2015-01-10 16:50:39 +01:00
Raphael Isemann 5a54e46709 Fully implemented the JSON spec 2015-01-10 16:49:10 +01:00
Raphael Isemann 222aacc213 Quick and dirty implementation for basic multilingual plane in the unicode escape mechanism 2015-01-10 10:36:30 +01:00
Niels 0cd2ecf48f minor style adjustments 2015-01-09 20:48:16 +01:00
Raphael Isemann 7f4fcc51f6 Implemented the JSON spec for string parsing for everything but the \uXXXX escaping for unicode 2015-01-09 20:03:18 +01:00
Niels 33f5236687 added missing header 2015-01-09 17:40:14 +01:00
Niels 535aef5ad0 Merge pull request #19 from kirkshoop/stditerator
add the std iterator typedefs to iterator and const_iterator
2015-01-09 17:37:42 +01:00
Niels 33f5e74905 minor syntax adjustments 2015-01-09 16:38:34 +01:00
Kirk Shoop 3486a5d9bb add the std iterator typedefs to iterator and const_iterator 2015-01-09 07:33:57 -08:00
Raphael Isemann 4a39bfb17e Fixed typo in comments 2015-01-09 11:57:39 +01:00
Raphael Isemann fa0ee9c927 Fixed escaped quotes 2015-01-08 22:35:48 +01:00
Niels 4647401030 fixed #15 2015-01-06 22:05:32 +01:00
Niels bd9f49efb9 implemented pretty printing (issue #13)
- to_string() method is now called dump()
- syntax borrowed from Python’s json.dumps()
2015-01-06 21:44:07 +01:00
Niels 5f05d02c6a Merge pull request #14 from elliotgoodrich/master
Fix double delete on std::bad_alloc exception
2015-01-06 18:43:21 +01:00
Niels a53c878c81 moved class into "nlohmann" namespace
- fixed issue #9
- also removed std::mutex member variable
- also added “std::” prefix to size_t variables
2015-01-06 18:41:24 +01:00
Elliot Goodrich 0773f40a8e Fix double delete on std::bad_alloc exception
If the new operator throws in the json::find methods then result.oi_ is
deleted again in the destructor of json::iterator/json::const_iterator,
which is a double delete and undefined behaviour.
2015-01-06 09:12:55 +00:00
Niels a9669a410d removed "noexpect" from all functions that use new 2015-01-04 23:18:24 +01:00
Niels 540cda6118 used _-suffix for member variables 2015-01-04 23:09:30 +01:00
Niels 3bef1a5097 renamed "toString()" to "to_string()" 2015-01-04 20:50:28 +01:00
Niels f63ff7727e renamed class from "JSON" to "son" 2015-01-04 20:43:25 +01:00
Niels 4d00105e5c tidy up 2015-01-04 19:05:46 +01:00
Niels bd0be5f0af fixed memory leak 2015-01-04 12:29:16 +01:00
Niels 481f377cfe + guard call to std::ios_base::sync_with_stdio 2015-01-04 12:05:28 +01:00
Niels 764ed26c41 cleanup 2015-01-03 17:18:17 +01:00
Niels 18364aac85 parser returns an object 2015-01-02 17:19:40 +01:00
Niels 16c30cff8b removed old C fragments 2015-01-02 15:29:36 +01:00
Niels af4aca9edd + better string handling 2015-01-02 12:47:32 +01:00
Niels 6995d33fb1 + fixed documentation bugs 2014-12-30 11:57:58 +01:00
Niels 2335d3f3d5 tidy up 2014-12-30 11:47:28 +01:00
Niels 9e61092fc6 + overworked parser 2014-12-30 10:54:01 +01:00
Niels 4e44390090 + fixed a bug in the stream input 2014-12-29 21:13:03 +01:00
Niels 15a9d3cff6 minor changes 2014-12-29 19:54:31 +01:00
Niels a8c4f84fb8 + removed data() function 2014-12-29 16:45:54 +01:00
Niels 725202356b + fix memory issues 2014-12-29 12:51:20 +01:00
Niels 2c1b3e5108 + small cleanup 2014-12-29 00:02:14 +01:00
Niels bed47db168 + that could be it! 2014-12-28 23:09:31 +01:00
Niels 776611c270 + another check 2014-12-28 22:59:11 +01:00
Niels 0ced78bfa8 + test 2014-12-28 22:51:27 +01:00
Niels b573841ace + more test cases 2014-12-28 22:38:57 +01:00
Niels 98af0887f2 + more test cases 2014-12-28 22:29:06 +01:00
Niels 48a349a058 + more test cases 2014-12-28 21:53:13 +01:00
Niels 8f45d9351e + overworked switches 2014-12-28 20:07:56 +01:00
Niels cd48a01b20 + more test 2014-12-28 18:00:50 +01:00
Niels d3216300b2 + more test cases 2014-12-28 17:26:33 +01:00
Niels ea94518a64 + more test cases 2014-12-28 17:09:38 +01:00
Niels 5b1f69ce5b + overworked comments 2014-12-28 16:48:22 +01:00
Niels a68b4cafa2 + more test cases 2014-12-28 14:57:21 +01:00
Niels 8d4f675151 + test cases for clear() 2014-12-28 12:50:52 +01:00
Niels b57179e0fe + fixed a compiler warning
+ added coveralls
2014-12-28 09:23:49 +01:00
Niels fbad7fac17 2.0 preview 2014-12-28 09:11:01 +01:00
Niels 278a9e7052 simplified code 2013-12-11 08:41:02 +01:00
Niels 81367a9a10 fixed a cppcheck warning 2013-12-10 12:44:23 +01:00
Niels Lohmann a8f62ca052 + a fix for C++98 2013-07-15 08:32:10 +02:00
Niels 9a567d9d2d - tidied code
- added more documentation
2013-07-11 14:19:11 +02:00
Niels 52c2cb8ce7 - removed pointers to POD inside the union 2013-07-10 14:57:51 +02:00
Niels 4e6a400a23 - reorganized payload 2013-07-10 14:33:17 +02:00
Niels ec6e628d4f - minor tweaks 2013-07-05 16:45:17 +02:00
Niels cb2da141ec - further adjustments 2013-07-05 16:15:29 +02:00
Niels 0ee8d53a28 - a find() function 2013-07-05 14:16:47 +02:00
Niels ac5ff65856 - bugfixing 2013-07-05 12:32:23 +02:00
Niels abad903f31 - memory problem 2013-07-05 11:57:12 +02:00
Niels 61461ec456 - fixes from Harro 2013-07-05 11:23:49 +02:00
Niels 23ada516aa - header for NULL 2013-07-04 18:16:24 +02:00
Niels d035fa581d - added missing headers 2013-07-04 18:13:17 +02:00
Niels 206e15dff7 - fixed bugs and added test cases 2013-07-04 17:06:53 +02:00
Niels 4502e7e51c - initial commit 2013-07-04 10:49:03 +02:00