Index: trunk/psLib/src/sysUtils/psType.h
===================================================================
--- trunk/psLib/src/sysUtils/psType.h	(revision 672)
+++ trunk/psLib/src/sysUtils/psType.h	(revision 672)
@@ -0,0 +1,91 @@
+/** @file  psVector.h
+ *
+ *  @brief Contains support for basic vector types
+ *
+ *  This file defines types and functions for one dimensional vectors which include:
+ *      char
+ *      short
+ *      int
+ *      long
+ *      unsigned char
+ *      unsigned short
+ *      unsigned int
+ *      unsigned long
+ *      float
+ *      double
+ *      complex float
+ *      void **
+ *
+ *  @author Ross Harman, MHPCC
+ *
+ *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-05-13 23:36:27 $
+ *
+ *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+ */
+
+#ifndef PS_TYPE_H
+#define PS_TYPE_H
+
+#include <complex.h>
+#include <stdint.h>
+
+/******************************************************************************/
+/*  TYPE DEFINITIONS                                                          */
+/******************************************************************************/
+
+/** Basic data types used by the containers.
+ *
+ * The basic types of the primitives used by psLib are defined within this enum. This enum is in turn used by
+ * the psType struct.
+ *
+ */
+typedef enum {
+    PS_TYPE_INT8 = 0x11,              ///< Character.
+    PS_TYPE_INT16 = 0x12,             ///< Short integer.
+    PS_TYPE_INT32 = 0x14,             ///< Integer.
+    PS_TYPE_INT64 = 0x18,             ///< Long integer.
+    PS_TYPE_UINT8 = 0x31,             ///< Unsigned character.
+    PS_TYPE_UINT16 = 0x32,            ///< Unsigned short integer.
+    PS_TYPE_UINT32 = 0x34,            ///< Unsigned integer.
+    PS_TYPE_UINT64 = 0x38,            ///< Unsigned long integer.
+    PS_TYPE_FLOAT = 0x44,             ///< Single-precision Floating point.
+    PS_TYPE_DOUBLE = 0x48,            ///< Double-precision floating point.
+    PS_TYPE_COMPLEX_FLOAT = 0x84,     ///< Complex numbers consisting of single-precision floating point.
+    PS_TYPE_COMPLEX_DOUBLE = 0x88,    ///< Complex numbers consisting of double-precision floating point.
+    PS_TYPE_PTR = 0x00,               ///< Something else that's not supported for arithmetic.}
+} psElemType;
+
+#define IS_PSELEMTYPE_INT(x) (x & 0x10 == 0x10)
+#define IS_PSELEMTYPE_UNSIGNED(x) (x & 0x20 == 0x20)
+#define IS_PSELEMTYPE_REAL(x) (x & 0x40 == 0x40)
+#define IS_PSELEMTYPE_COMPLEX(x) (x & 0x80 == 0x80)
+#define PSELEMTYPE_SIZEOF(x) ( (x==PS_TYPE_PTR) ? sizeof(void*) : (x & 0x0F) )
+
+/** Dimensions of a data type.
+ *
+ * The dimensions of containers used by psLib are defined within this enum. This enum is used by the psType 
+struct. *
+ */
+typedef enum {
+    PS_DIMEN_SCALAR,    ///< Scalar.
+    PS_DIMEN_VECTOR,    ///< Vector.
+    PS_DIMEN_TRANSV,    ///< Transposed vector.
+    PS_DIMEN_IMAGE,     ///< Image.
+    PS_DIMEN_OTHER      ///< Something else that's not supported for arithmetic.
+} psDimen;
+
+/** The type of a data type.
+ *
+ * All psLib complex types consist of primitive components. This struct provides the description of those
+ * primitives.
+ *
+ */
+typedef struct
+{
+    psElemType type;    ///< Primitive type.
+    psDimen dimen;      ///< Dimensionality.
+}
+psType;
+
+#endif
