Index: trunk/psLib/src/dataIO/psFits.c
===================================================================
--- trunk/psLib/src/dataIO/psFits.c	(revision 3298)
+++ trunk/psLib/src/dataIO/psFits.c	(revision 3341)
@@ -7,6 +7,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-02-22 19:25:52 $
+ *  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-02-28 23:34:10 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -162,17 +162,17 @@
 }
 
-static bool convertPsTypeToBinaryTForm(psElemType type, char** fitsType)
+static bool convertMetadataTypeToBinaryTForm(psMetadataType type, char** fitsType)
 {
     switch (type) {
-    case PS_TYPE_BOOL:
+    case PS_META_BOOL:
         *fitsType = psStringCopy("1L");
         break;
-    case PS_TYPE_S32:
+    case PS_META_S32:
         *fitsType = psStringCopy("1J");
         break;
-    case PS_TYPE_F32:
+    case PS_META_F32:
         *fitsType = psStringCopy("1E");
         break;
-    case PS_TYPE_F64:
+    case PS_META_F64:
         *fitsType = psStringCopy("1D");
         break;
@@ -506,6 +506,5 @@
                                         PS_LIST_TAIL,
                                         keyName,
-                                        PS_TYPE_S32,
-                                        PS_META_PRIMITIVE,
+                                        PS_META_S32,
                                         keyComment,
                                         atoi(keyValue));
@@ -517,6 +516,5 @@
                                         PS_LIST_TAIL,
                                         keyName,
-                                        PS_TYPE_F64,
-                                        PS_META_PRIMITIVE,
+                                        PS_META_F64,
                                         keyComment,
                                         atof(keyValue));
@@ -529,5 +527,4 @@
                                             PS_LIST_TAIL,
                                             keyName,
-                                            PS_TYPE_PTR,
                                             PS_META_STR,
                                             keyComment,
@@ -537,5 +534,4 @@
                                             PS_LIST_TAIL,
                                             keyName,
-                                            PS_TYPE_PTR,
                                             PS_META_STR,
                                             keyComment,
@@ -548,6 +544,5 @@
                                         PS_LIST_TAIL,
                                         keyName,
-                                        PS_TYPE_BOOL,
-                                        PS_META_PRIMITIVE,
+                                        PS_META_BOOL,
                                         keyComment,
                                         tempBool);
@@ -1072,47 +1067,40 @@
     psMetadataItem* item;
     while ( (item=psListGetAndIncrement(iter)) != NULL ) {
-        if (item->type == PS_META_PRIMITIVE) { // we only write primitive data types.
-            switch (item->pType) {
-            case PS_TYPE_BOOL: {
-                    int value = item->data.B;
-                    fits_update_key(fits->p_fd,
-                                    TLOGICAL,
-                                    item->name,
-                                    &value,
-                                    item->comment,
-                                    &status);
-                    break;
-                }
-            case PS_TYPE_S32:
+        switch (item->type) {
+        case PS_META_BOOL: {
+                int value = item->data.B;
                 fits_update_key(fits->p_fd,
-                                TINT,
+                                TLOGICAL,
                                 item->name,
-                                &item->data.S32,
+                                &value,
                                 item->comment,
                                 &status);
                 break;
-            case PS_TYPE_F32:
-                fits_update_key(fits->p_fd,
-                                TFLOAT,
-                                item->name,
-                                &item->data.F32,
-                                item->comment,
-                                &status);
-                break;
-            case PS_TYPE_F64:
-                fits_update_key(fits->p_fd,
-                                TDOUBLE,
-                                item->name,
-                                &item->data.F64,
-                                item->comment,
-                                &status);
-                break;
-            default:
-                psError(PS_ERR_BAD_PARAMETER_TYPE, true,
-                        PS_ERRORTEXT_psFits_METADATA_PTYPE_UNSUPPORTED,
-                        item->pType);
-                break;
             }
-        } else if (item->type == PS_META_STR) {
+        case PS_META_S32:
+            fits_update_key(fits->p_fd,
+                            TINT,
+                            item->name,
+                            &item->data.S32,
+                            item->comment,
+                            &status);
+            break;
+        case PS_META_F32:
+            fits_update_key(fits->p_fd,
+                            TFLOAT,
+                            item->name,
+                            &item->data.F32,
+                            item->comment,
+                            &status);
+            break;
+        case PS_META_F64:
+            fits_update_key(fits->p_fd,
+                            TDOUBLE,
+                            item->name,
+                            &item->data.F64,
+                            item->comment,
+                            &status);
+            break;
+        case PS_META_STR:
             fits_update_key(fits->p_fd,
                             TSTRING,
@@ -1121,4 +1109,7 @@
                             item->comment,
                             &status);
+            break;
+        default:  // all other META types are ignored
+            break;
         }
 
@@ -1214,5 +1205,5 @@
                               1, 1, NULL, &value, &anynul, &status); \
                 psMetadataAdd(data,PS_LIST_TAIL, name, \
-                              PS_TYPE_##TYPE, PS_META_PRIMITIVE, \
+                              PS_META_##TYPE, \
                               "", (ps##TYPE)value); \
                 break; \
@@ -1234,5 +1225,5 @@
                     if (anynul == 0) {
                         psMetadataAdd(data,PS_LIST_TAIL, name,
-                                      PS_TYPE_PTR, PS_META_STR,
+                                      PS_META_STR,
                                       "", value);
                     }
@@ -1487,5 +1478,5 @@
                                    PS_LIST_HEAD,true);
             while ( (item=psListGetAndIncrement(iter)) != NULL) {
-                if (item->type == PS_META_PRIMITIVE) {
+                if (PS_META_IS_PRIMITIVE(item->type)) {
                     bool found = false;
                     for (int n=0; n < columns->n && ! found; n++) {
@@ -1515,6 +1506,6 @@
         char* fitsType;
         columnNames->data[n] = psMemIncrRefCounter(((psMetadataItem*)columns->data[n])->name);
-        if ( ! convertPsTypeToBinaryTForm(((psMetadataItem*)columns->data[n])->pType,
-                                          &fitsType)) {
+        if ( ! convertMetadataTypeToBinaryTForm(((psMetadataItem*)columns->data[n])->type,
+                                                &fitsType)) {
             // XXX: error message
             return false;
@@ -1540,9 +1531,9 @@
         int row;
         item = columns->data[n];
-
-        if (item->type == PS_META_PRIMITIVE) {
-            psVector* col = psVectorAlloc(table->n, item->pType);
-            switch (item->pType) {
-            case PS_TYPE_S32:
+        if (PS_META_IS_PRIMITIVE(item->type)) {
+            psVector* col = NULL;
+            switch (item->type) {
+            case PS_META_S32:
+                col = psVectorAlloc(table->n, PS_TYPE_S32);
                 for (row = 0; row < table->n; row++) {
                     col->data.S32[row] = psMetadataLookupS32(NULL,
@@ -1558,5 +1549,6 @@
                                    &status);
                 break;
-            case PS_TYPE_F32:
+            case PS_META_F32:
+                col = psVectorAlloc(table->n, PS_TYPE_F32);
                 for (row = 0; row < table->n; row++) {
                     col->data.F32[row] = psMetadataLookupF32(NULL,
@@ -1572,5 +1564,6 @@
                                    &status);
                 break;
-            case PS_TYPE_F64:
+            case PS_META_F64:
+                col = psVectorAlloc(table->n, PS_TYPE_F64);
                 for (row = 0; row < table->n; row++) {
                     col->data.F64[row] = psMetadataLookupF64(NULL,
@@ -1586,5 +1579,6 @@
                                    &status);
                 break;
-            case PS_TYPE_BOOL:
+            case PS_META_BOOL:
+                col = psVectorAlloc(table->n, PS_TYPE_BOOL);
                 for (row = 0; row < table->n; row++) {
                     col->data.S8[row] = psMetadataLookupBool(NULL,
@@ -1601,5 +1595,5 @@
                 break;
             default:
-                // XXX: error message
+                // XXX: error message?
                 break;
             }
