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);

Reply via email to