This commit adds int64 support for cjson. To enable int64, you need to
define the macro ENABLE_INT64. To make it more clear, you need to build
cjson like this:
mkdir build
cd build
cmake -DENABLE_INT64=ON ..
make
This implementation changed the type of valueint in struct cJSON: from
int to long long(int64), and added a new flag cJSON_IsInt64.
For a int64 cJSON item, the value of item->type would be cJSON_Number |
cJSON_IsInt64.
The existing functions parse_number and print_number can handle int64
now.
Considering I have added a new type cJSON_IsInt64, some new functions
have been added:
CJSON_PUBLIC(long long *) cJSON_GetInt64NumberValue(cJSON * const item)
CJSON_PUBLIC(cJSON_bool) cJSON_IsInt64Number(const cJSON * const item)
CJSON_PUBLIC(cJSON *) cJSON_CreateInt64Number(long long integer)
CJSON_PUBLIC(cJSON*) cJSON_AddInt64NumberToObject(cJSON * const object, const char * const name, const long long integer)
CJSON_PUBLIC(long long) cJSON_SetInt64NumberValue(cJSON * const object, const long long integer)
And some existing functions are also adjusted for int64, including
parse_number, cJSON_SetNumberHelper, print_number, cJSON_CreateNumber,
cJSON_Compare and compare_json(in cJSON_Utils).
Besides the code changes, we have also added some testcases for int64.
These tests will run if ENABLE_INT64 is turned on.
* cJSON_SetBoolValue plus test
* cJSON_Invalid insted of just 0
* Update tests/misc_tests.c
* VSCode standard C formater applied
Co-authored-by: Alan Wang <wp_scut@163.com>
* Update CMakeLists.txt
fix the bug:when build with cmake using option '-DBUILD_SHARED_AND_STATIC_LIBS=ON -DENABLE_CJSON_UTILS=ON', build sucess,
but use cmake comand 'find_package(cjson CONFIG)', 'cjson_utils' target is available,but 'cjson_utils-static' target not exist.
Prior to this patch, we would find '.gitignore', '.travisCI.yml' in
the release tarball.
This patch adds a few entries in .gitattributes to specify files that
should never end up in a distribution tarball.
Signed-off-by: Hu Keping <hukeping@huawei.com>