| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |_|/
|/| |
| | |
| | | |
escaping of forward slashes.
|
| | | |
|
|\ \ \
| | | |
| | | | |
Performance improvements
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
smalls strings inside json_objects had a high overhead because dynamic
memory allocation was needed for each of them. This also meant that the
pointer needed to be updated. This is now changed so that small strings
can directly be stored inside the json_object. Note that on the regular
64 bit machines a pointer takes 8 bytes. So even without increasing
memory, we could store string up to 7 bytes directly inside the object.
The max size is configurable. I have selected up to 31 bytes (which
means a buffer of 32 including the NUL byte). This brings a 24-bytes
memory overhead, but I consider that still useful because the memory
allocator usually also has quite some overhead (16 bytes) for
dyn alloced memory blocks. In any case, the max buffer size can be
tweaked via #define.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These items were used for statistics tracking, but no code at all
exists to consume them. By removing them we save
a) space
because they counters required space, and did so in each and every
json object
b) performance
because calloc() needs to write less data and the counters are
no longer maintained; cache performance can be better, load
on OS main memory is lighter
We could conditionally enable/disable these counters, but I have not
done this they were really nowhere used and it looked more like a
left-over from the import of hashtable code.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This provides more control over some detail aspects, many
of which are performance related.
|
| | | |
| | | |
| | | |
| | | | |
This can be a very considerable performance saver.
|
|\ \ \ \
| | | | |
| | | | | |
Adding JSON_C_TO_STRING_PRETTY_TAB flag
|
| | |_|/
| |/| |
| | | |
| | | | |
- Tabs are easier to read for tired eyes and editor adjustable
|
|/ / / |
|
| | | |
|
|/ /
| |
| |
| |
| |
| | |
Arrays can already be sorted with json_object_array_sort() which uses
qsort() of the standard C library. This adds a counterpart using the
bsearch() from C.
|
| |
| |
| |
| |
| |
| | |
in a few of those cases.
Thanks to Susant Sahani for pointing out some of these.
|
| | |
|
| |
| |
| |
| | |
macros on MSCV where _isnan and _finite exist instead.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
sscanf is always a potential problem when converting numeric
values as it does not correctly handle over- and underflow
(or at least gives no indication that it has done so).
This change converts json_object_get_double() to use strtod()
according to CERT guidelines.
|
| |
| |
| |
| | |
more than 6 digits show up in the output.
|
| | |
|
| |
| |
| |
| |
| |
| | |
string representation of a double to be specified when creating the object and use it in json_tokener_parse_ex() so a re-serialized object more exactly matches the input.
Add json_object_free_userdata() and json_object_userdata_to_json_string() too.
|
|\ \
| | |
| | | |
Remove redefinition of strndup() which is no longer used in the codebase
|
| | | |
|
|/ / |
|
|\ \
| | |
| | | |
Support NaN and Infinity
|
| | |
| | |
| | |
| | |
| | |
| | | |
Although JSON RFC does not support NaN or Infinity
as numeric values ECMA 262 section 9.8.1 defines
how to handle these cases as strings
|
|/ / |
|
|\ \
| | |
| | |
| | |
| | | |
Conflicts:
json_util.c
|
| | | |
|
| | | |
|
| | | |
|
| |/
|/| |
|
| |
| |
| | |
'\f' is a llegal char and should be escape in printbuf
|
|/
|
|
|
|
|
| |
fix json_tokener_parse() to work properly with embedded unicode \u0000 values in strings.
Adjust test_null to check for this case.
See also http://bugs.debian.org/687269
|
| |
|
|
|
|
| |
is NULL.
|
|
|
|
| |
(or 0 if only the reference count was decremented)
|
|
|
|
| |
json_object to be customized.
|
|
|
|
|
|
|
| |
exists so keys remain valid.
This is particularly useful when replacing values in a loop, since it allows
the key used by json_object_object_foreach to continue to be used.
|
|
|
|
| |
#define strcasecmp for Visual C++.
|
|
|
|
| |
with #define HAVE_X where #define HAVE_X 1|0 is meant.
|
|
|
|
|
|
| |
%lf because the "l" is unnecessary and some compilers behave differently with it present (e.g. MinGW).
Thanks for Mateusz Loskot for the fix.
|
|
|
|
|
|
|
|
|
| |
output to be selected.
There are now three options: JSON_C_TO_STRING_SPACED, JSON_C_TO_STRING_PLAIN and JSON_C_TO_STRING_PRETTY.
This also add a json_object_to_file_ext() that takes the same flags.
Existing output of json_object_to_json_string() is unchanged, and uses JSON_C_TO_STRING_SPACED.
Thanks fo Grant Edwards for the initial patches.
|
|
|
|
| |
that, since not all environments actually have a stdbool.h to use.
|
|
|
|
|
| |
New json_object_object_get_ex() method protects itself against null pointers
and invalid objects being passed in.
|
|
|
|
| |
json_type_null for NULL objects.
|
|
|
|
|
|
|
|
| |
In building large systems, there are often clashes over the
preferred base type to use for bool/boolean. At least one
experience has been with a 3rd party proprietary library which
can not be changed. In that case, boolean was a synonym for
unsigned char and used widely in packed structures.
|
|
|
|
|
| |
VC 9 doesn't support late variable declarations, and doesn't have inttypes
so we need some direct definitions of a couple of more types.
|
| |
|
|
|
|
|
| |
- uses libc's qsort to sort the arraylist
- add test in test1.c
|
|
|
|
|
|
|
| |
Patch via Nikola Pajkovsky
git-svn-id: http://svn.metaparadigm.com/svn/json-c/trunk@75 327403b1-1117-474d-bef2-5cb71233fd97
|
|
|
|
|
|
| |
type. Useful for logging.
git-svn-id: http://svn.metaparadigm.com/svn/json-c/trunk@67 327403b1-1117-474d-bef2-5cb71233fd97
|