]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
put SWITCH_DECLARE marcos on the json api to make it exported
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 23 Dec 2011 21:10:13 +0000 (15:10 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 23 Dec 2011 21:10:20 +0000 (15:10 -0600)
src/include/switch_json.h
src/switch_json.c

index 80320f1f6cb04e4dddf5de4a440faa8440c4fbdf..36f51be6dfd7bf1bb819822a2baf0b6b50a87f7b 100755 (executable)
@@ -61,56 +61,56 @@ typedef struct cJSON_Hooks {
 } cJSON_Hooks;
 
 // Supply malloc, realloc and free functions to cJSON
-extern void cJSON_InitHooks(cJSON_Hooks* hooks);
+SWITCH_DECLARE(void) cJSON_InitHooks(cJSON_Hooks* hooks);
 
 
 // Supply a block of JSON, and this returns a cJSON object you can interrogate. Call cJSON_Delete when finished.
-extern cJSON *cJSON_Parse(const char *value);
+SWITCH_DECLARE(cJSON *)cJSON_Parse(const char *value);
 // Render a cJSON entity to text for transfer/storage. Free the char* when finished.
-extern char  *cJSON_Print(cJSON *item);
+SWITCH_DECLARE(char *)cJSON_Print(cJSON *item);
 // Render a cJSON entity to text for transfer/storage without any formatting. Free the char* when finished.
-extern char  *cJSON_PrintUnformatted(cJSON *item);
+SWITCH_DECLARE(char *)cJSON_PrintUnformatted(cJSON *item);
 // Delete a cJSON entity and all subentities.
-extern void   cJSON_Delete(cJSON *c);
+SWITCH_DECLARE(void)   cJSON_Delete(cJSON *c);
 
 // Returns the number of items in an array (or object).
-extern int       cJSON_GetArraySize(cJSON *array);
+SWITCH_DECLARE(int)      cJSON_GetArraySize(cJSON *array);
 // Retrieve item number "item" from array "array". Returns NULL if unsuccessful.
-extern cJSON *cJSON_GetArrayItem(cJSON *array,int item);
+SWITCH_DECLARE(cJSON *)cJSON_GetArrayItem(cJSON *array,int item);
 // Get item "string" from object. Case insensitive.
-extern cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);
+SWITCH_DECLARE(cJSON *)cJSON_GetObjectItem(cJSON *object,const char *string);
        
 // These calls create a cJSON item of the appropriate type.
-extern cJSON *cJSON_CreateNull(void);
-extern cJSON *cJSON_CreateTrue(void);
-extern cJSON *cJSON_CreateFalse(void);
-extern cJSON *cJSON_CreateNumber(double num);
-extern cJSON *cJSON_CreateString(const char *string);
-extern cJSON *cJSON_CreateArray(void);
-extern cJSON *cJSON_CreateObject(void);
+SWITCH_DECLARE(cJSON *)cJSON_CreateNull(void);
+SWITCH_DECLARE(cJSON *)cJSON_CreateTrue(void);
+SWITCH_DECLARE(cJSON *)cJSON_CreateFalse(void);
+SWITCH_DECLARE(cJSON *)cJSON_CreateNumber(double num);
+SWITCH_DECLARE(cJSON *)cJSON_CreateString(const char *string);
+SWITCH_DECLARE(cJSON *)cJSON_CreateArray(void);
+SWITCH_DECLARE(cJSON *)cJSON_CreateObject(void);
 
 // These utilities create an Array of count items.
-extern cJSON *cJSON_CreateIntArray(int *numbers,int count);
-extern cJSON *cJSON_CreateFloatArray(float *numbers,int count);
-extern cJSON *cJSON_CreateDoubleArray(double *numbers,int count);
-extern cJSON *cJSON_CreateStringArray(const char **strings,int count);
+SWITCH_DECLARE(cJSON *)cJSON_CreateIntArray(int *numbers,int count);
+SWITCH_DECLARE(cJSON *)cJSON_CreateFloatArray(float *numbers,int count);
+SWITCH_DECLARE(cJSON *)cJSON_CreateDoubleArray(double *numbers,int count);
+SWITCH_DECLARE(cJSON *)cJSON_CreateStringArray(const char **strings,int count);
 
 // Append item to the specified array/object.
-extern void cJSON_AddItemToArray(cJSON *array, cJSON *item);
-extern void    cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);
+SWITCH_DECLARE(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
+SWITCH_DECLARE(void)   cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);
 // Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON.
-extern void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
-extern void    cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item);
+SWITCH_DECLARE(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
+SWITCH_DECLARE(void)   cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item);
 
 // Remove/Detatch items from Arrays/Objects.
-extern cJSON *cJSON_DetachItemFromArray(cJSON *array,int which);
-extern void   cJSON_DeleteItemFromArray(cJSON *array,int which);
-extern cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string);
-extern void   cJSON_DeleteItemFromObject(cJSON *object,const char *string);
+SWITCH_DECLARE(cJSON *)cJSON_DetachItemFromArray(cJSON *array,int which);
+SWITCH_DECLARE(void)   cJSON_DeleteItemFromArray(cJSON *array,int which);
+SWITCH_DECLARE(cJSON *)cJSON_DetachItemFromObject(cJSON *object,const char *string);
+SWITCH_DECLARE(void)   cJSON_DeleteItemFromObject(cJSON *object,const char *string);
        
 // Update array items.
-extern void cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem);
-extern void cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
+SWITCH_DECLARE(void) cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem);
+SWITCH_DECLARE(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
 
 #define cJSON_AddNullToObject(object,name)     cJSON_AddItemToObject(object, name, cJSON_CreateNull())
 #define cJSON_AddTrueToObject(object,name)     cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
index e0e27ba70ff20ba24f989cfd3d4668150d117caf..83b34704e6c96c1068e903e3dd12b768021c318a 100644 (file)
@@ -57,7 +57,7 @@ static char* cJSON_strdup(const char* str)
       return copy;
 }
 
-void cJSON_InitHooks(cJSON_Hooks* hooks)
+SWITCH_DECLARE(void) cJSON_InitHooks(cJSON_Hooks* hooks)
 {
     if (!hooks) { /* Reset hooks */
         cJSON_malloc = malloc;
@@ -78,7 +78,7 @@ static cJSON *cJSON_New_Item(void)
 }
 
 // Delete a cJSON structure.
-void cJSON_Delete(cJSON *c)
+SWITCH_DECLARE(void) cJSON_Delete(cJSON *c)
 {
        cJSON *next;
        while (c)
@@ -232,7 +232,7 @@ static char *print_object(cJSON *item,int depth,int fmt);
 static const char *skip(const char *in) {while (in && (unsigned char)*in<=32) in++; return in;}
 
 // Parse an object - create a new root, and populate.
-cJSON *cJSON_Parse(const char *value)
+SWITCH_DECLARE(cJSON *)cJSON_Parse(const char *value)
 {
        cJSON *c=cJSON_New_Item();
        if (!c) return 0;       /* memory fail */
@@ -242,8 +242,8 @@ cJSON *cJSON_Parse(const char *value)
 }
 
 // Render a cJSON item/entity/structure to text.
-char *cJSON_Print(cJSON *item)                         {return print_value(item,0,1);}
-char *cJSON_PrintUnformatted(cJSON *item)      {return print_value(item,0,0);}
+SWITCH_DECLARE(char *)cJSON_Print(cJSON *item)                         {return print_value(item,0,1);}
+SWITCH_DECLARE(char *)cJSON_PrintUnformatted(cJSON *item)      {return print_value(item,0,0);}
 
 // Parser core - when encountering text, process appropriately.
 static const char *parse_value(cJSON *item,const char *value)
@@ -451,9 +451,9 @@ static char *print_object(cJSON *item,int depth,int fmt)
 }
 
 // Get Array size/item / object item.
-int    cJSON_GetArraySize(cJSON *array)                                                        {cJSON *c=array->child;int i=0;while(c)i++,c=c->next;return i;}
-cJSON *cJSON_GetArrayItem(cJSON *array,int item)                               {cJSON *c=array->child;  while (c && item>0) item--,c=c->next; return c;}
-cJSON *cJSON_GetObjectItem(cJSON *object,const char *string)   {cJSON *c=object->child; while (c && cJSON_strcasecmp(c->string,string)) c=c->next; return c;}
+SWITCH_DECLARE(int)    cJSON_GetArraySize(cJSON *array)                                                        {cJSON *c=array->child;int i=0;while(c)i++,c=c->next;return i;}
+SWITCH_DECLARE(cJSON *)cJSON_GetArrayItem(cJSON *array,int item)                               {cJSON *c=array->child;  while (c && item>0) item--,c=c->next; return c;}
+SWITCH_DECLARE(cJSON *)cJSON_GetObjectItem(cJSON *object,const char *string)   {cJSON *c=object->child; while (c && cJSON_strcasecmp(c->string,string)) c=c->next; return c;}
 
 // Utility for array list handling.
 static void suffix_object(cJSON *prev,cJSON *item) {prev->next=item;item->prev=prev;}
@@ -461,34 +461,34 @@ static void suffix_object(cJSON *prev,cJSON *item) {prev->next=item;item->prev=p
 static cJSON *create_reference(cJSON *item) {cJSON *ref=cJSON_New_Item();memcpy(ref,item,sizeof(cJSON));ref->string=0;ref->type|=cJSON_IsReference;ref->next=ref->prev=0;return ref;}
 
 // Add item to array/object.
-void   cJSON_AddItemToArray(cJSON *array, cJSON *item)                                         {cJSON *c=array->child;if (!c) {array->child=item;} else {while (c && c->next) c=c->next; suffix_object(c,item);}}
-void   cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item)     {if (item->string) cJSON_free(item->string);item->string=cJSON_strdup(string);cJSON_AddItemToArray(object,item);}
-void   cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)                                                {cJSON_AddItemToArray(array,create_reference(item));}
-void   cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item)    {cJSON_AddItemToObject(object,string,create_reference(item));}
+SWITCH_DECLARE(void)   cJSON_AddItemToArray(cJSON *array, cJSON *item)                                         {cJSON *c=array->child;if (!c) {array->child=item;} else {while (c && c->next) c=c->next; suffix_object(c,item);}}
+SWITCH_DECLARE(void)   cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item)     {if (item->string) cJSON_free(item->string);item->string=cJSON_strdup(string);cJSON_AddItemToArray(object,item);}
+SWITCH_DECLARE(void)   cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item)                                                {cJSON_AddItemToArray(array,create_reference(item));}
+SWITCH_DECLARE(void)   cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item)    {cJSON_AddItemToObject(object,string,create_reference(item));}
 
-cJSON *cJSON_DetachItemFromArray(cJSON *array,int which)                       {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return 0;
+SWITCH_DECLARE(cJSON *)cJSON_DetachItemFromArray(cJSON *array,int which)                       {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return 0;
        if (c->prev) c->prev->next=c->next;if (c->next) c->next->prev=c->prev;if (c==array->child) array->child=c->next;c->prev=c->next=0;return c;}
-void   cJSON_DeleteItemFromArray(cJSON *array,int which)                       {cJSON_Delete(cJSON_DetachItemFromArray(array,which));}
-cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string) {int i=0;cJSON *c=object->child;while (c && cJSON_strcasecmp(c->string,string)) i++,c=c->next;if (c) return cJSON_DetachItemFromArray(object,i);return 0;}
-void   cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));}
+SWITCH_DECLARE(void)   cJSON_DeleteItemFromArray(cJSON *array,int which)                       {cJSON_Delete(cJSON_DetachItemFromArray(array,which));}
+SWITCH_DECLARE(cJSON *)cJSON_DetachItemFromObject(cJSON *object,const char *string) {int i=0;cJSON *c=object->child;while (c && cJSON_strcasecmp(c->string,string)) i++,c=c->next;if (c) return cJSON_DetachItemFromArray(object,i);return 0;}
+SWITCH_DECLARE(void)   cJSON_DeleteItemFromObject(cJSON *object,const char *string) {cJSON_Delete(cJSON_DetachItemFromObject(object,string));}
 
 // Replace array/object items with new ones.
-void   cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem)         {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return;
+SWITCH_DECLARE(void)   cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem)         {cJSON *c=array->child;while (c && which>0) c=c->next,which--;if (!c) return;
        newitem->next=c->next;newitem->prev=c->prev;if (newitem->next) newitem->next->prev=newitem;
        if (c==array->child) array->child=newitem; else newitem->prev->next=newitem;c->next=c->prev=0;cJSON_Delete(c);}
-void   cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem){int i=0;cJSON *c=object->child;while(c && cJSON_strcasecmp(c->string,string))i++,c=c->next;if(c){newitem->string=cJSON_strdup(string);cJSON_ReplaceItemInArray(object,i,newitem);}}
+SWITCH_DECLARE(void)   cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem){int i=0;cJSON *c=object->child;while(c && cJSON_strcasecmp(c->string,string))i++,c=c->next;if(c){newitem->string=cJSON_strdup(string);cJSON_ReplaceItemInArray(object,i,newitem);}}
 
 // Create basic types:
-cJSON *cJSON_CreateNull()                                              {cJSON *item=cJSON_New_Item();item->type=cJSON_NULL;return item;}
-cJSON *cJSON_CreateTrue()                                              {cJSON *item=cJSON_New_Item();item->type=cJSON_True;return item;}
-cJSON *cJSON_CreateFalse()                                             {cJSON *item=cJSON_New_Item();item->type=cJSON_False;return item;}
-cJSON *cJSON_CreateNumber(double num)                  {cJSON *item=cJSON_New_Item();item->type=cJSON_Number;item->valuedouble=num;item->valueint=(int)num;return item;}
-cJSON *cJSON_CreateString(const char *string)  {cJSON *item=cJSON_New_Item();item->type=cJSON_String;item->valuestring=cJSON_strdup(string);return item;}
-cJSON *cJSON_CreateArray()                                             {cJSON *item=cJSON_New_Item();item->type=cJSON_Array;return item;}
-cJSON *cJSON_CreateObject()                                            {cJSON *item=cJSON_New_Item();item->type=cJSON_Object;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateNull()                                              {cJSON *item=cJSON_New_Item();item->type=cJSON_NULL;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateTrue()                                              {cJSON *item=cJSON_New_Item();item->type=cJSON_True;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateFalse()                                             {cJSON *item=cJSON_New_Item();item->type=cJSON_False;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateNumber(double num)                  {cJSON *item=cJSON_New_Item();item->type=cJSON_Number;item->valuedouble=num;item->valueint=(int)num;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateString(const char *string)  {cJSON *item=cJSON_New_Item();item->type=cJSON_String;item->valuestring=cJSON_strdup(string);return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateArray()                                             {cJSON *item=cJSON_New_Item();item->type=cJSON_Array;return item;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateObject()                                            {cJSON *item=cJSON_New_Item();item->type=cJSON_Object;return item;}
 
 // Create Arrays:
-cJSON *cJSON_CreateIntArray(int *numbers,int count)                            {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateFloatArray(float *numbers,int count)                        {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateDoubleArray(double *numbers,int count)              {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
-cJSON *cJSON_CreateStringArray(const char **strings,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateString(strings[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateIntArray(int *numbers,int count)                            {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateFloatArray(float *numbers,int count)                        {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateDoubleArray(double *numbers,int count)              {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateNumber(numbers[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}
+SWITCH_DECLARE(cJSON *)cJSON_CreateStringArray(const char **strings,int count) {int i;cJSON *n=0,*p=0,*a=cJSON_CreateArray();for(i=0;i<count;i++){n=cJSON_CreateString(strings[i]);if(!i)a->child=n;else suffix_object(p,n);p=n;}return a;}