Index: trunk/psLib/src/sys/psMemory.c
===================================================================
--- trunk/psLib/src/sys/psMemory.c	(revision 4877)
+++ trunk/psLib/src/sys/psMemory.c	(revision 4898)
@@ -8,6 +8,6 @@
 *  @author Robert Lupton, Princeton University
 *
-*  @version $Revision: 1.61 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-08-25 23:42:07 $
+*  @version $Revision: 1.62 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-08-30 01:14:13 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -24,4 +24,25 @@
 #include "psAbort.h"
 #include "psLogMsg.h"
+
+#include "psBitSet.h"
+//#include "psArray.h"
+//#include "psImage.h"
+//#include "psList.h"
+//#include "psLookupTable.h"
+//#include "psHash.h"
+
+//#include "psMetadata.h"
+#include "psFits.h"
+#include "psPixels.h"
+//#include "psScalar.h"
+//#include "psVector.h"
+//#include "psFunctions.h"
+//#include "psTime.h"
+//#include "psCoord.h"
+#include "psSphereOps.h"
+//#include "psStats.h"
+#include "psMinimize.h"
+#include "psImageConvolve.h"
+#include "psTime.h"
 
 #include "psErrorText.h"
@@ -688,4 +709,258 @@
 }
 
+
+bool psMemCheckType(psDataType type,
+                    psPtr ptr)
+{
+    switch(type) {
+    case PS_DATA_ARRAY:
+        if ( psMemCheckArray(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_BITSET:
+        if ( psMemCheckBitSet(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+        /*    case PS_DATA_CELL:
+                if ( psMemCheckCell(ptr) )
+                    return true;
+                else
+                {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+                    break;
+                }
+            case PS_DATA_CHIP:
+                if ( psMemCheckChip(ptr) )
+                    return true;
+                else
+                {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+                    break;
+                }
+        */
+    case PS_DATA_CUBE:
+        if ( psMemCheckCube(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+
+
+    case PS_DATA_FITS:
+        if ( psMemCheckFits(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+
+    case PS_DATA_HASH:
+        if ( psMemCheckHash(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_HISTOGRAM:
+        if ( psMemCheckHistogram(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_IMAGE:
+        if ( psMemCheckImage(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_KERNEL:
+        if ( psMemCheckKernel(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_LIST:
+        if ( psMemCheckList(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_LOOKUPTABLE:
+        if ( psMemCheckLookupTable(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_METADATA:
+        if ( psMemCheckMetadata(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_METADATAITEM:
+        if ( psMemCheckMetadataItem(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_MINIMIZATION:
+        if ( psMemCheckMinimization(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_PIXELS:
+        if ( psMemCheckPixels(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_PLANE:
+        if ( psMemCheckPlane(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_PLANEDISTORT:
+        if ( psMemCheckPlaneDistort(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_PLANETRANSFORM:
+        if ( psMemCheckPlaneTransform(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_POLYNOMIAL1D:
+        if ( psMemCheckPolynomial1D(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_POLYNOMIAL2D:
+        if ( psMemCheckPolynomial2D(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_POLYNOMIAL3D:
+        if ( psMemCheckPolynomial3D(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_POLYNOMIAL4D:
+        if ( psMemCheckPolynomial4D(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_PROJECTION:
+        if ( psMemCheckProjection(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+
+        /*    case PS_DATA_READOUT:
+                if ( psMemCheckReadout(ptr) )
+                    return true;
+                else
+                {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+                    break;
+                }
+         
+        *//*    case PS_DATA_REGION:
+                if ( psMemCheckRegion(ptr) )
+                    return true;
+                else
+                {
+                    psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+                    break;
+                }
+        */
+    case PS_DATA_SCALAR:
+        if ( psMemCheckScalar(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_SPHERE:
+        if ( psMemCheckSphere(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_SPHEREROT:
+        if ( psMemCheckSphereRot(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_SPLINE1D:
+        if ( psMemCheckSpline1D(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_STATS:
+        if ( psMemCheckStats(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_TIME:
+        if ( psMemCheckTime(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    case PS_DATA_VECTOR:
+        if ( psMemCheckVector(ptr) )
+            return true;
+        else {
+            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Incorrect pointer.  Datatypes do not match.\n");
+            break;
+        }
+    default:
+        psError(PS_ERR_BAD_PARAMETER_TYPE, true, "Invalid datatype specified.\n");
+    }
+    return false;
+}
+
+
 bool p_psMemGetPersistent(psPtr vptr)
 {
