Made rjp_search_members take a 'const char* const*' for search terms
This commit is contained in:
@@ -137,10 +137,10 @@ size_t rjp_member_name_length(RJP_value* member);
|
||||
RJP_search_res rjp_search_member(const RJP_value* object, const char* search, size_t skip);
|
||||
//Search for first occurance of multiple keys. Returns first occurance of each.
|
||||
//Assumes dest is large enough to hold maximum num items.
|
||||
size_t rjp_search_members(const RJP_value* object, size_t num, const char** searches, RJP_search_res* dest, size_t skip);
|
||||
size_t rjp_search_members(const RJP_value* object, size_t num, const char* const* searches, RJP_search_res* dest, size_t skip);
|
||||
//Search for multiple occurances of multiple keys. Returns pointer to list of matches.
|
||||
//Returned pointer must be freed using rjp_free
|
||||
RJP_search_res* rjp_search_members_multi(const RJP_value* object, size_t num, const char** searches, size_t* rsize, size_t skip);
|
||||
RJP_search_res* rjp_search_members_multi(const RJP_value* object, size_t num, const char* const* searches, size_t* rsize, size_t skip);
|
||||
//Access first element of a json array
|
||||
RJP_value* rjp_get_element(const RJP_value* array);
|
||||
//Access next element of a json array given the previous element
|
||||
|
||||
13
src/rjp.c
13
src/rjp.c
@@ -138,7 +138,7 @@ RJP_search_res rjp_search_member(const RJP_value* object, const char* search, si
|
||||
return (RJP_search_res){0};
|
||||
}
|
||||
|
||||
size_t rjp_search_members(const RJP_value* object, size_t num, const char** searches, RJP_search_res* dest, size_t skip){
|
||||
size_t rjp_search_members(const RJP_value* object, size_t num, const char* const* searches, RJP_search_res* dest, size_t skip){
|
||||
const char** tmp = rjp_alloc(num*sizeof(char*));
|
||||
for(size_t i = 0;i < num;++i){
|
||||
tmp[i] = searches[i];
|
||||
@@ -151,25 +151,22 @@ size_t rjp_search_members(const RJP_value* object, size_t num, const char** sear
|
||||
|
||||
for(;member;member = rjp_next_member(member),++objindex){
|
||||
for(size_t i = 0;i < num;++i){
|
||||
if(searches[i] == NULL)
|
||||
if(tmp[i] == NULL)
|
||||
continue;
|
||||
if(!strcmp(((RJP_object_member*)member)->name.value, searches[i])){
|
||||
if(!strcmp(((RJP_object_member*)member)->name.value, tmp[i])){
|
||||
dest[i].value = member;
|
||||
dest[i].searchindex = i;
|
||||
dest[i].objindex = objindex;
|
||||
searches[i] = NULL;
|
||||
tmp[i] = NULL;
|
||||
++matches;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(size_t i = 0;i < num;++i){
|
||||
searches[i] = tmp[i];
|
||||
}
|
||||
rjp_free(tmp);
|
||||
return matches;
|
||||
}
|
||||
RJP_search_res* rjp_search_members_multi(const RJP_value* object, size_t num, const char** searches, size_t* rsize, size_t skip){
|
||||
RJP_search_res* rjp_search_members_multi(const RJP_value* object, size_t num, const char* const* searches, size_t* rsize, size_t skip){
|
||||
RJP_search_res* ret = rjp_alloc(num*sizeof(RJP_search_res));
|
||||
size_t ret_size = num;
|
||||
size_t j = 0;
|
||||
|
||||
Reference in New Issue
Block a user