1 Commits

Author SHA1 Message Date
rexy712
3349468e07 Fix const correctness in API. Version Bump to 0.7.0. 2019-08-20 11:58:11 -07:00
6 changed files with 41 additions and 37 deletions

View File

@@ -4,8 +4,8 @@ include(GNUInstallDirs)
cmake_minimum_required(VERSION 3.0.2)
project(rjp)
set(rjp_VERSION_MAJOR 0)
set(rjp_VERSION_MINOR 6)
set(rjp_VERSION_REVISION 2)
set(rjp_VERSION_MINOR 7)
set(rjp_VERSION_REVISION 0)
set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include)
configure_file(
"${INCLUDE_PATH}/config.h.in"
@@ -19,12 +19,12 @@ option(ENABLE_SHARED "Build shared library" OFF)
set(SOURCE_LIST "src/input.c" "src/output.c" "src/strings.c" "src/memory.c" "src/rjp.c")
if(ENABLE_SHARED)
add_library(rjp SHARED ${SOURCE_LIST})
set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
else()
add_library(rjp STATIC ${SOURCE_LIST})
endif()
set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h)
set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}")
target_compile_options(rjp PRIVATE -Wall -Wextra -pedantic)
if(ENABLE_DIAGNOSTICS)
target_compile_definitions(rjp PRIVATE RJP_DIAGNOSTICS)

View File

@@ -93,7 +93,7 @@ typedef struct RJP_search_res{
//Convert C string consisting of json data into RJP's format
RJP_value* rjp_parse(const char* str);
RJP_value* rjp_parse_chunked(const char* str, RJP_value* prev_chunk);
//RJP_value* rjp_parse_chunked(const char* str, RJP_value* prev_chunk);
//Initialize a root RJP_value to NULL
RJP_value* rjp_init_json(void);
@@ -166,16 +166,17 @@ size_t rjp_num_elements(const RJP_value* array);
//Return handle to parent of given value
RJP_value* rjp_value_parent(RJP_value* element);
RJP_value* rjp_value_parent(const RJP_value* element);
//Return type of value
RJP_type rjp_value_type(RJP_value* value);
RJP_type rjp_value_type(const RJP_value* value);
//value accessors
RJP_float rjp_value_dfloat(RJP_value* value);
RJP_int rjp_value_integer(RJP_value* value);
char rjp_value_boolean(RJP_value* value);
RJP_float rjp_value_dfloat(const RJP_value* value);
RJP_int rjp_value_integer(const RJP_value* value);
char rjp_value_boolean(const RJP_value* value);
char* rjp_value_string(RJP_value* value);
size_t rjp_value_string_length(RJP_value* value);
const char* rjp_value_cstring(const RJP_value* value);
size_t rjp_value_string_length(const RJP_value* value);
//copy input string and add json escape sequences
@@ -185,11 +186,11 @@ size_t rjp_escape_strcpy(char* dest, const char* src);
size_t rjp_escape_strlen(const char* str);
//Convert RJP_object to json string
size_t rjp_dump_object(RJP_value* root, char* dest);
size_t rjp_dump_object(const RJP_value* root, char* dest);
//Convert RJP_array to json string
size_t rjp_dump_array(RJP_value* arr, char* dest);
size_t rjp_dump_array(const RJP_value* arr, char* dest);
//Convert root rjp value into json string
char* rjp_to_json(RJP_value* root);
char* rjp_to_json(const RJP_value* root);
#ifdef __cplusplus
}

View File

@@ -24,9 +24,9 @@
int _rjp__is_whitespace(char c);
char* _rjp__parse_string(RJP_value* root, const char* str, int* inclen, int* len, int* row, int* column);
size_t _rjp__array_strlen(RJP_value* arr);
size_t _rjp__object_strlen(RJP_value* root);
size_t _rjp__value_strlen(RJP_value* root);
size_t _rjp__array_strlen(const RJP_value* arr);
size_t _rjp__object_strlen(const RJP_value* root);
size_t _rjp__value_strlen(const RJP_value* root);
void _rjp__strcpy(RJP_string* dest, const RJP_string* src);
#endif

View File

@@ -36,7 +36,7 @@ RJP_value* rjp_init_json_as(RJP_value value){
return ret;
}
static size_t _rjp__write_value(char* dest, RJP_value* val){
static size_t _rjp__write_value(char* dest, const RJP_value* val){
size_t ret;
switch(val->type){
case json_integer:
@@ -67,9 +67,9 @@ static size_t _rjp__write_value(char* dest, RJP_value* val){
return ret;
}
size_t rjp_dump_array(RJP_value* arr, char* dest){
RJP_array* array = &arr->array;
RJP_array_element* element_list = array->elements;
size_t rjp_dump_array(const RJP_value* arr, char* dest){
const RJP_array* array = &arr->array;
const RJP_array_element* element_list = array->elements;
size_t pos = 1;
sprintf(dest, "[");
for(;element_list;element_list = element_list->next){
@@ -84,9 +84,9 @@ size_t rjp_dump_array(RJP_value* arr, char* dest){
return pos;
}
size_t rjp_dump_object(RJP_value* root, char* dest){
RJP_object* root_obj = &root->object;
RJP_object_member* member_list = root_obj->members;
size_t rjp_dump_object(const RJP_value* root, char* dest){
const RJP_object* root_obj = &root->object;
const RJP_object_member* member_list = root_obj->members;
size_t pos = 1;
sprintf(dest, "{");
@@ -103,7 +103,7 @@ size_t rjp_dump_object(RJP_value* root, char* dest){
return pos;
}
char* rjp_to_json(RJP_value* root){
char* rjp_to_json(const RJP_value* root){
if(!root)
return NULL;
size_t len = _rjp__value_strlen(root);

View File

@@ -237,25 +237,28 @@ size_t rjp_num_elements(const RJP_value* array){
return array->array.num_elements;
}
RJP_value* rjp_value_parent(RJP_value* value){
RJP_value* rjp_value_parent(const RJP_value* value){
return value->parent;
}
RJP_type rjp_value_type(RJP_value* value){
RJP_type rjp_value_type(const RJP_value* value){
return value->type;
}
RJP_float rjp_value_dfloat(RJP_value* value){
RJP_float rjp_value_dfloat(const RJP_value* value){
return value->dfloat;
}
RJP_int rjp_value_integer(RJP_value* value){
RJP_int rjp_value_integer(const RJP_value* value){
return value->integer;
}
char rjp_value_boolean(RJP_value* value){
char rjp_value_boolean(const RJP_value* value){
return value->boolean;
}
char* rjp_value_string(RJP_value* value){
return value->string.value;
}
size_t rjp_value_string_length(RJP_value* value){
const char* rjp_value_cstring(const RJP_value* value){
return value->string.value;
}
size_t rjp_value_string_length(const RJP_value* value){
return value->string.length;
}

View File

@@ -297,10 +297,10 @@ size_t rjp_escape_strlen(const char* str){
}
return count;
}
size_t _rjp__array_strlen(RJP_value* arr){
size_t _rjp__array_strlen(const RJP_value* arr){
size_t count = 2; //[]
RJP_array* array = &arr->array;
RJP_array_element* element_list = array->elements;
const RJP_array* array = &arr->array;
const RJP_array_element* element_list = array->elements;
for(;element_list;element_list = element_list->next){
switch(element_list->value.type){
case json_integer:
@@ -333,10 +333,10 @@ size_t _rjp__array_strlen(RJP_value* arr){
return count;
}
size_t _rjp__object_strlen(RJP_value* root){
size_t _rjp__object_strlen(const RJP_value* root){
size_t count = 2; //{}
RJP_object* root_obj = &root->object;
RJP_object_member* member_list = root_obj->members;
const RJP_object* root_obj = &root->object;
const RJP_object_member* member_list = root_obj->members;
for(;member_list;member_list = member_list->next){
if(member_list->name.length == 0 || member_list->name.value[0] == 0)
return 0;
@@ -350,7 +350,7 @@ size_t _rjp__object_strlen(RJP_value* root){
return count;
}
size_t _rjp__value_strlen(RJP_value* root){
size_t _rjp__value_strlen(const RJP_value* root){
switch(root->type){
case json_integer:
return snprintf(NULL, 0, "%" PRId64, root->integer);