Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_01.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_01.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_01.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_02.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_02.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_02.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_03.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_03.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_03.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_04.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_04.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_04.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_05.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_05.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_05.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psBitSet_06.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psBitSet_06.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psBitSet_06.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psImage.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psImage.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psImage.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psList.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psList.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psList.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psSort_01.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psSort_01.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psSort_01.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psSort_02.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psSort_02.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psSort_02.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psSort_03.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psSort_03.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psSort_03.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psSort_04.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psSort_04.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psSort_04.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psVector_01.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psVector_01.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psVector_01.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psVector_02.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psVector_02.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psVector_02.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/builddir/tst_psVector_03.d
===================================================================
--- /trunk/psLib/test/collections/builddir/tst_psVector_03.d	(revision 1125)
+++ /trunk/psLib/test/collections/builddir/tst_psVector_03.d	(revision 1126)
@@ -3,6 +3,6 @@
   ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
   ../../include/psString.h ../../include/psType.h ../../include/psList.h \
-  ../../include/psVector.h ../../include/psHash.h \
-  ../../include/psScalar.h ../../include/psImage.h \
+  ../../include/psCompare.h ../../include/psVector.h \
+  ../../include/psHash.h ../../include/psScalar.h ../../include/psImage.h \
   ../../include/psBitSet.h ../../include/psSort.h ../../include/psStats.h \
   ../../include/psMatrix.h ../../include/psMatrixVectorArithmetic.h \
Index: /trunk/psLib/test/collections/tst_psList.c
===================================================================
--- /trunk/psLib/test/collections/tst_psList.c	(revision 1125)
+++ /trunk/psLib/test/collections/tst_psList.c	(revision 1126)
@@ -6,6 +6,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-06-23 23:00:15 $
+ *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-06-29 23:18:00 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -25,4 +25,5 @@
 static int testListIterator(void);
 static int testListFree(void);
+static int testListSort(void);
 
 testDescription tests[] = {
@@ -34,4 +35,5 @@
                               {testListIterator,"494-testListIterator",0},
                               {testListFree,"627-testListFree",0},
+                              {testListSort,"624-testListSort",0},
                               {NULL}
                           };
@@ -439,6 +441,6 @@
     //  1. list is NULL.
     psLogMsg(__func__,PS_LOG_INFO,"Following should be an error");
-    if (psListRemove(list,NULL,PS_LIST_HEAD) != NULL) {
-        psError(__func__,"psListGet didn't return NULL given a NULL list.");
+    if (psListRemove(list,NULL,PS_LIST_HEAD)) {
+        psError(__func__,"psListRemove didn't return false given a NULL list.");
         return 1;
     };
@@ -456,11 +458,12 @@
 
     // 2. which is PS_LIST_HEAD (remove first element of list)
-    data = psListRemove(list,NULL,PS_LIST_HEAD);
-    if (data == NULL || *data != 0) {
-        printListInt(list);
-        psError(__func__,"Failed to remove PS_LIST_HEAD (%p)",data);
-        return 1;
-    }
-    psFree(data);
+    data = psListGet(list,PS_LIST_HEAD);
+    if ( (! psListRemove(list,NULL,PS_LIST_HEAD)) ||
+            (psListGet(list,PS_LIST_HEAD) == data) ) {
+        printListInt(list);
+        psError(__func__,"Failed to remove PS_LIST_HEAD");
+        return 1;
+    }
+
     if (list->size != 14) {
         printListInt(list);
@@ -470,11 +473,12 @@
 
     // 3. which is PS_LIST_TAIL (remove last element of list)
-    data = psListRemove(list,NULL,PS_LIST_TAIL);
-    if (data == NULL || *data != 14) {
+    data = psListGet(list,PS_LIST_TAIL);
+    if ( (! psListRemove(list,NULL,PS_LIST_TAIL)) ||
+            (psListGet(list,PS_LIST_TAIL) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_TAIL");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 13) {
         printListInt(list);
@@ -485,11 +489,10 @@
     // 4. which is PS_LIST_NEXT (element right of cursor [which should be head,tail, and neither])
     psListSetIterator(list,PS_LIST_HEAD);
-    data = psListRemove(list,NULL,PS_LIST_NEXT);
-    if (data == NULL || *data != 2) {
+    if (! psListRemove(list,NULL,PS_LIST_NEXT)) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_NEXT @ PS_LIST_HEAD");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 12) {
         printListInt(list);
@@ -500,6 +503,5 @@
     psListSetIterator(list,PS_LIST_TAIL);
     psLogMsg(__func__,PS_LOG_INFO,"Next message should be an error");
-    data = psListRemove(list,NULL,PS_LIST_NEXT);
-    if (data != NULL) {
+    if (psListRemove(list,NULL,PS_LIST_NEXT)) {
         printListInt(list);
         psError(__func__,"Removed something with PS_LIST_NEXT @ PS_LIST_TAIL");
@@ -507,12 +509,13 @@
     }
 
+    data = psListGet(list,3);
     psListSetIterator(list,2);
-    data = psListRemove(list,NULL,PS_LIST_NEXT);
-    if (data == NULL || *data != 5) {
+    if ( (!psListRemove(list,NULL,PS_LIST_NEXT)) ||
+            ( psListGet(list,3) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_NEXT @ which=2");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 11) {
         printListInt(list);
@@ -524,6 +527,5 @@
     psListSetIterator(list,PS_LIST_HEAD);
     psLogMsg(__func__,PS_LOG_INFO,"Next message should be an error");
-    data = psListRemove(list,NULL,PS_LIST_PREVIOUS);
-    if (data != NULL) {
+    if (psListRemove(list,NULL,PS_LIST_PREVIOUS)) {
         printListInt(list);
         psError(__func__,"removed something for PS_LIST_PREVIOUS @ PS_LIST_HEAD");
@@ -531,12 +533,13 @@
     }
 
+    data = psListGet(list,9);
     psListSetIterator(list,PS_LIST_TAIL);
-    data = psListRemove(list,NULL,PS_LIST_PREVIOUS);
-    if (data == NULL || *data != 12) {
+    if ( (!psListRemove(list,NULL,PS_LIST_PREVIOUS)) ||
+            (psListGet(list,9) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_PREVIOUS @ PS_LIST_TAIL");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 10) {
         printListInt(list);
@@ -545,12 +548,13 @@
     }
 
+    data = psListGet(list,1);
     psListSetIterator(list,2);
-    data = psListRemove(list,NULL,PS_LIST_PREVIOUS);
-    if (data == NULL || *data != 3) {
+    if ( (!psListRemove(list,NULL,PS_LIST_PREVIOUS)) ||
+            ( psListGet(list,1) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_PREVIOUS @ which=2");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 9) {
         printListInt(list);
@@ -561,6 +565,5 @@
     // 6. which is PS_LIST_UNKNOWN and data=NULL (error)
     psLogMsg(__func__,PS_LOG_INFO,"Next message should be an error");
-    data = psListRemove(list,NULL,PS_LIST_UNKNOWN);
-    if (data != NULL) {
+    if (psListRemove(list,NULL,PS_LIST_UNKNOWN)) {
         printListInt(list);
         psError(__func__,"removed something for PS_LIST_UNKNOWN with data=NULL");
@@ -570,11 +573,11 @@
     // 7. which is PS_LIST_UNKNOWN and data=[head,tail,other list items]
     data = psListGet(list,PS_LIST_HEAD);
-    data = psListRemove(list,data,PS_LIST_UNKNOWN);
-    if (data == NULL || *data != 1) {
+    if ( (! psListRemove(list,data,PS_LIST_UNKNOWN)) ||
+            (psListGet(list,PS_LIST_HEAD) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_UNKNOWN @ PS_LIST_HEAD");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 8) {
         printListInt(list);
@@ -584,11 +587,11 @@
 
     data = psListGet(list,PS_LIST_TAIL);
-    data = psListRemove(list,data,PS_LIST_UNKNOWN);
-    if (data == NULL || *data != 13) {
+    if ( (!psListRemove(list,data,PS_LIST_UNKNOWN)) ||
+            (psListGet(list,PS_LIST_TAIL) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_UNKNOWN @ PS_LIST_TAIL");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 7) {
         printListInt(list);
@@ -598,13 +601,13 @@
 
     psListSetIterator(list,PS_LIST_HEAD);
+
     data = psListGet(list,PS_LIST_NEXT);
-
-    data = psListRemove(list,data,PS_LIST_UNKNOWN);
-    if (data == NULL || *data != 6) {
+    if ( (! psListRemove(list,data,PS_LIST_UNKNOWN))||
+            (psListGet(list,1) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove PS_LIST_UNKNOWN @ which=1");
         return 1;
     }
-    psFree(data);
+
     if (list->size != 6) {
         printListInt(list);
@@ -615,6 +618,5 @@
     // 8. which is PS_LIST_UNKNOWN and data!=NULL and data!=any element in list
     psLogMsg(__func__,PS_LOG_INFO,"Next message should be an error");
-    data = psListRemove(list,data,PS_LIST_UNKNOWN);
-    if (data != NULL) {
+    if ( psListRemove(list,data,PS_LIST_UNKNOWN) ) {
         printListInt(list);
         psError(__func__,"removed something for PS_LIST_UNKNOWN with previously removed item");
@@ -623,17 +625,17 @@
 
     // clear out the list
-    psFree(psListRemove(list,NULL,PS_LIST_HEAD));
-    psFree(psListRemove(list,NULL,PS_LIST_HEAD));
-    psFree(psListRemove(list,NULL,PS_LIST_HEAD));
-    psFree(psListRemove(list,NULL,PS_LIST_HEAD));
-    psFree(psListRemove(list,NULL,PS_LIST_HEAD));
-
-    data = psListRemove(list,data,PS_LIST_HEAD);
-    if (data == NULL || *data != 11) {
+    psListRemove(list,NULL,PS_LIST_HEAD);
+    psListRemove(list,NULL,PS_LIST_HEAD);
+    psListRemove(list,NULL,PS_LIST_HEAD);
+    psListRemove(list,NULL,PS_LIST_HEAD);
+    psListRemove(list,NULL,PS_LIST_HEAD);
+
+    data = psListGet(list,PS_LIST_HEAD);
+    if ( (! psListRemove(list,data,PS_LIST_HEAD)) ||
+            (psListGet(list,PS_LIST_HEAD) == data) ) {
         printListInt(list);
         psError(__func__,"Failed to remove last element");
         return 1;
     }
-    psFree(data);
 
     if (list->size != 0) {
@@ -964,2 +966,140 @@
     return 0;
 }
+
+int testListSort(void)
+{
+    psList* list;
+
+    list = psListAlloc(NULL);
+
+    for (int lcv=0;lcv<15;lcv++) {
+        float* data = psAlloc(sizeof(int));
+        if (lcv < 7) {
+            *data = 13-lcv*2;
+        } else {
+            *data = lcv*2-12;
+        }
+        list = psListAdd(list,data,PS_LIST_TAIL);
+        psFree(data);
+
+    }
+
+    printf("original list = [");
+    for (float* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %.1f",*iter);
+    }
+    printf(" ]\n");
+
+    list = psListSort(list,psCompareF32Ptr);
+
+    printf("sorted list = [");
+    for (float* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %.1f",*iter);
+    }
+    printf(" ]\n");
+
+    float* prevValue = psListGet(list,PS_LIST_HEAD);
+    for (float* iter = psListGet(list,PS_LIST_NEXT);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        if (*prevValue > *iter) {
+            psError(__func__,"Hey, the list wasn't sorted!?");
+            return 1;
+        }
+    }
+
+    list = psListSort(list,psCompareDescendingF32Ptr);
+
+    printf("descending sort list = [");
+    for (float* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %.1f",*iter);
+    }
+    printf(" ]\n");
+
+    prevValue = psListGet(list,PS_LIST_HEAD);
+    for (float* iter = psListGet(list,PS_LIST_NEXT);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        if (*prevValue < *iter) {
+            psError(__func__,"Hey, the list wasn't sorted!?");
+            return 1;
+        }
+    }
+
+    psFree(list);
+
+    /********** OK, now do the same thing with ints. *************/
+
+    list = psListAlloc(NULL);
+
+    for (int lcv=0;lcv<15;lcv++) {
+        psU32* data = psAlloc(sizeof(int));
+        if (lcv < 7) {
+            *data = 13-lcv*2;
+        } else {
+            *data = lcv*2-12;
+        }
+        list = psListAdd(list,data,PS_LIST_TAIL);
+        psFree(data);
+
+    }
+
+    printf("original list = [");
+    for (psU32* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %d",*iter);
+    }
+    printf(" ]\n");
+
+    list = psListSort(list,psCompareU32Ptr);
+
+    printf("sorted list = [");
+    for (psU32* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %d",*iter);
+    }
+    printf(" ]\n");
+
+    psU32* prev = psListGet(list,PS_LIST_HEAD);
+    for (psU32* iter = psListGet(list,PS_LIST_NEXT);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        if (*prev > *iter) {
+            psError(__func__,"Hey, the list wasn't sorted!?");
+            return 1;
+        }
+    }
+
+    list = psListSort(list,psCompareDescendingU32Ptr);
+
+    printf("descending sort list = [");
+    for (psU32* iter = psListGet(list,PS_LIST_HEAD);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        printf(" %d",*iter);
+    }
+    printf(" ]\n");
+
+    prev = psListGet(list,PS_LIST_HEAD);
+    for (psU32* iter = psListGet(list,PS_LIST_NEXT);
+            iter != NULL;
+            iter = psListGet(list,PS_LIST_NEXT)) {
+        if (*prev < *iter) {
+            psError(__func__,"Hey, the list wasn't sorted!?");
+            return 1;
+        }
+    }
+
+    psFree(list);
+
+
+    return 0;
+}
