These patches fine-tune some const-correctness in osrf_json_tools.c.
1. I changed the signature of jsonObjectDecodeClass so that it accepts
a non-const pointer parameter. Since it doesn't change the contents
of the jsonObject, there's no need to confine it to non-const
jsonObjects.
2. I replaced jsonObjectGetKey() with jsonObjectGetKeyConst().
3. In one spot I captured the return value of jsonObjectGetIndex()
with a const pointer instead of a non-const pointer.
The second item above relies on the prior application of a previous
pair of patches that I submitted earlier today.
Scott McKellar
http://home.swbell.net/mck9/ct/
Developer's Certificate of Origin 1.1 By making a contribution to
this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license indicated
in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source license
and I have the right under that license to submit that work with
modifications, whether created in whole or in part by me, under the
same open source license (unless I am permitted to submit under a
different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person
who certified (a), (b) or (c) and I have not modified it; and
(d) In the case of each of (a), (b), or (c), I understand and agree
that this project and the contribution are public and that a record
of the contribution (including all personal information I submit
with it, including my sign-off) is maintained indefinitely and may
be redistributed consistent with this project or the open source
license indicated in the file.
*** trunk/include/opensrf/osrf_json.h 2007-09-22 09:14:43.000000000 -0500
--- trunk-mod/include/opensrf/osrf_json.h 2007-09-22 21:49:35.000000000 -0500
***************
*** 355,361 ****
* classname set
* Caller must free the returned object
*/
! jsonObject* jsonObjectDecodeClass( jsonObject* obj );
/** Converts an object with a classname into a
--- 355,361 ----
* classname set
* Caller must free the returned object
*/
! jsonObject* jsonObjectDecodeClass( const jsonObject* obj );
/** Converts an object with a classname into a
*** trunk/src/libopensrf/osrf_json_tools.c 2007-09-22 09:14:45.000000000 -0500
--- trunk-mod/src/libopensrf/osrf_json_tools.c 2007-09-22 21:40:23.000000000 -0500
***************
*** 75,95 ****
! jsonObject* jsonObjectDecodeClass( jsonObject* obj ) {
if(!obj) return jsonNewObject(NULL);
! jsonObject* newObj = NULL;
! jsonObject* classObj = NULL;
! jsonObject* payloadObj = NULL;
int i;
if( obj->type == JSON_HASH ) {
/* are we a special class object? */
! if( (classObj = jsonObjectGetKey( obj, JSON_CLASS_KEY )) ) {
/* do we have a payload */
! if( (payloadObj = jsonObjectGetKey( obj, JSON_DATA_KEY )) ) {
newObj = jsonObjectDecodeClass( payloadObj );
jsonObjectSetClass( newObj, jsonObjectGetString(classObj) );
--- 75,95 ----
! jsonObject* jsonObjectDecodeClass( const jsonObject* obj ) {
if(!obj) return jsonNewObject(NULL);
! jsonObject* newObj = NULL;
! const jsonObject* classObj = NULL;
! const jsonObject* payloadObj = NULL;
int i;
if( obj->type == JSON_HASH ) {
/* are we a special class object? */
! if( (classObj = jsonObjectGetKeyConst( obj, JSON_CLASS_KEY )) ) {
/* do we have a payload */
! if( (payloadObj = jsonObjectGetKeyConst( obj, JSON_DATA_KEY )) ) {
newObj = jsonObjectDecodeClass( payloadObj );
jsonObjectSetClass( newObj, jsonObjectGetString(classObj) );
***************
*** 239,245 ****
/* gather all of the sub-objects that match the full path */
for( i = 0; i < arr->size; i++ ) {
! jsonObject* a = jsonObjectGetIndex(arr, i);
jsonObject* thing = jsonObjectFindPath(a , path + strlen(root) + 1);
if(thing) { //jsonObjectPush(newarr, thing);
--- 239,245 ----
/* gather all of the sub-objects that match the full path */
for( i = 0; i < arr->size; i++ ) {
! const jsonObject* a = jsonObjectGetIndex(arr, i);
jsonObject* thing = jsonObjectFindPath(a , path + strlen(root) + 1);
if(thing) { //jsonObjectPush(newarr, thing);