Add new json_object_array_sort function

 - uses libc's qsort to sort the arraylist
 - add test in test1.c
diff --git a/arraylist.c b/arraylist.c
index cd04eea..9a673d6 100644
--- a/arraylist.c
+++ b/arraylist.c
@@ -87,6 +87,13 @@
   return array_list_put_idx(arr, arr->length, data);
 }
 
+void
+array_list_sort(struct array_list *arr, int(*sort_fn)(const void *, const void *))
+{
+  qsort(arr->array, arr->length, sizeof(arr->array[0]),
+	(int (*)(const void *, const void *))sort_fn);
+}
+
 int
 array_list_length(struct array_list *arr)
 {
diff --git a/arraylist.h b/arraylist.h
index bc85c80..4f3113c 100644
--- a/arraylist.h
+++ b/arraylist.h
@@ -46,6 +46,9 @@
 extern int
 array_list_length(struct array_list *al);
 
+extern void
+array_list_sort(struct array_list *arr, int(*compar)(const void *, const void *));
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/json_object.c b/json_object.c
index fc52f5c..482c5e3 100644
--- a/json_object.c
+++ b/json_object.c
@@ -534,6 +534,11 @@
   }
 }
 
+void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *))
+{
+  array_list_sort(jso->o.c_array, sort_fn);
+}
+
 int json_object_array_length(struct json_object *jso)
 {
   return array_list_length(jso->o.c_array);
diff --git a/json_object.h b/json_object.h
index 9f9ca40..d56d12c 100644
--- a/json_object.h
+++ b/json_object.h
@@ -195,6 +195,16 @@
  */
 extern int json_object_array_length(struct json_object *obj);
 
+/** Sorts the elements of jso of type json_type_array
+*
+* Pointers to the json_object pointers will be passed as the two arguments
+* to @sort_fn
+*
+* @param obj the json_object instance
+* @param sort_fn a sorting function
+*/
+extern void json_object_array_sort(struct json_object *jso, int(*sort_fn)(const void *, const void *));
+
 /** Add an element to the end of a json_object of type json_type_array
  *
  * The reference count will *not* be incremented. This is to make adding
diff --git a/test1.c b/test1.c
index ac1b882..2a4daf0 100644
--- a/test1.c
+++ b/test1.c
@@ -6,6 +6,29 @@
 
 #include "json.h"
 
+static int sort_fn (const void *j1, const void *j2)
+{
+  json_object **jso1, **jso2;
+  int i1, i2;
+
+  jso1 = j1;
+  jso2 = j2;
+  if (!*jso1 && !*jso2) {
+    return 0;
+  }
+  if (!*jso1) {
+    return -1;
+  }
+  if (!*jso2) {
+    return 1;
+  }
+
+  i1 = json_object_get_int(*jso1);
+  i2 = json_object_get_int(*jso2);
+
+  return i1 - i2;
+}
+
 int main(int argc, char **argv)
 {
   json_tokener *tok;
@@ -45,6 +68,27 @@
   }
   printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
 
+  json_object_put(my_array);
+
+  my_array = json_object_new_array();
+  json_object_array_add(my_array, json_object_new_int(3));
+  json_object_array_add(my_array, json_object_new_int(1));
+  json_object_array_add(my_array, json_object_new_int(2));
+  json_object_array_put_idx(my_array, 4, json_object_new_int(0));
+  printf("my_array=\n");
+  for(i=0; i < json_object_array_length(my_array); i++) {
+    json_object *obj = json_object_array_get_idx(my_array, i);
+    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
+  }
+  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
+  json_object_array_sort(my_array, sort_fn);
+  printf("my_array=\n");
+  for(i=0; i < json_object_array_length(my_array); i++) {
+    json_object *obj = json_object_array_get_idx(my_array, i);
+    printf("\t[%d]=%s\n", i, json_object_to_json_string(obj));
+  }
+  printf("my_array.to_string()=%s\n", json_object_to_json_string(my_array));    
+
   my_object = json_object_new_object();
   json_object_object_add(my_object, "abc", json_object_new_int(12));
   json_object_object_add(my_object, "foo", json_object_new_string("bar"));
diff --git a/test1.expected b/test1.expected
index e38ef50..aad9af0 100644
--- a/test1.expected
+++ b/test1.expected
@@ -13,6 +13,20 @@
 	[3]=null
 	[4]=5
 my_array.to_string()=[ 1, 2, 3, null, 5 ]
+my_array=
+	[0]=3
+	[1]=1
+	[2]=2
+	[3]=null
+	[4]=0
+my_array.to_string()=[ 3, 1, 2, null, 0 ]
+my_array=
+	[0]=null
+	[1]=0
+	[2]=1
+	[3]=2
+	[4]=3
+my_array.to_string()=[ null, 0, 1, 2, 3 ]
 my_object=
 	abc: 12
 	foo: "bar"