Index: trunk/psLib/src/types/psMetadataConfig.c
===================================================================
--- trunk/psLib/src/types/psMetadataConfig.c	(revision 14413)
+++ trunk/psLib/src/types/psMetadataConfig.c	(revision 14414)
@@ -11,6 +11,6 @@
 *  @author Joshua Hoblitt, University of Hawaii 2006-2007
 *
-*  @version $Revision: 1.137 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2007-07-06 02:07:57 $
+*  @version $Revision: 1.138 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2007-08-06 23:54:24 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -678,15 +678,7 @@
     psS32                status        = 0;
     psMetadata*          md            = NULL;
-    psF64                tempDbl       = 0.0;
-    bool               tempBool      = false;
-    psS64                tempInt       = 0;
-    psU64                tempUint      = 0;
-    psVector*            tempVec       = NULL;
-    char*                tempStr       = NULL;
     psArray*             nonUniqueKeys = NULL;
     psMetadata*          tempMeta      = NULL;
     p_psParseLevelInfo*  nextLevelInfo = NULL;
-    psTime *mTime;
-    psTimeType timeType = PS_TIME_TAI;
 
     long level = psArrayLength(levelArray) - 1;
@@ -845,4 +837,18 @@
     }
 
+#define PARSE_ADD_CASE(NAME, TYPE, PARSEFUNC) \
+  case PS_DATA_##NAME: { \
+      ps##TYPE value = PARSEFUNC(strValue, &status); \
+      if (!status) { \
+          addStatus = psMetadataAdd##TYPE(md, PS_LIST_TAIL, keyName, flags, strComment, value); \
+      } else { \
+          psError(PS_ERR_IO, true, \
+                  _("Failed to parse the value '%s' of metadata item %s, type %s."), \
+                  strValue, keyName, strType); \
+          returnValue = false; \
+      } \
+      break; \
+  }
+
     // Need to add item to metadata so get pointer to metadata
     status = 0;
@@ -850,170 +856,59 @@
     nonUniqueKeys = ((p_psParseLevelInfo*)(levelArray->data[level]))->nonUniqueKeyArray;
     switch(mdType) {
-    case PS_DATA_STRING:
-        addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                  mdType | flags,
-                                  strComment, strValue);
-        break;
-    case PS_DATA_BOOL:
-        tempBool = parseBool(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, tempBool);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
+        PARSE_ADD_CASE(BOOL,   Bool,   parseBool);
+        PARSE_ADD_CASE(F32,    F32,    parseDouble);
+        PARSE_ADD_CASE(F64,    F64,    parseDouble);
+        PARSE_ADD_CASE(S8,     S8,     parseSignedInt);
+        PARSE_ADD_CASE(S16,    S16,    parseSignedInt);
+        PARSE_ADD_CASE(S32,    S32,    parseSignedInt);
+        PARSE_ADD_CASE(S64,    S64,    parseSignedInt);
+        PARSE_ADD_CASE(U8,     U8,     parseUnsignedInt);
+        PARSE_ADD_CASE(U16,    U16,    parseUnsignedInt);
+        PARSE_ADD_CASE(U32,    U32,    parseUnsignedInt);
+        PARSE_ADD_CASE(U64,    U64,    parseUnsignedInt);
+      case PS_DATA_STRING:
+        addStatus = psMetadataAddStr(md, PS_LIST_TAIL, keyName, flags, strComment, strValue);
+        break;
+      case PS_DATA_TIME: {
+          psTimeType timeType = PS_TIME_TAI;
+          if(!strncmp(strType, "UTC", 3)) {
+              timeType = PS_TIME_UTC;
+          } else if(!strncmp(strType, "TAI", 3)) {
+              timeType = PS_TIME_TAI;
+          } else if(!strncmp(strType, "UT1", 3)) {
+              timeType = PS_TIME_UT1;
+          } else if(!strncmp(strType, "TT", 3)) {
+              timeType = PS_TIME_TT;
+          }
+
+          psTime *mTime = parseTime(strValue, timeType, &status);
+          if(!status) {
+              addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
+                                        mdType | flags,
+                                        strComment, mTime);
+          } else {
+              psError(PS_ERR_IO, true,
+                      _("Failed to parse the value '%s' of metadata item %s, type %s."),
                       strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_F32:
-    case PS_DATA_F64:
-        tempDbl = parseDouble(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, tempDbl);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
+              returnValue = false;
+          }
+          psFree(mTime);
+          break;
+      }
+      case PS_DATA_VECTOR: {
+          psVector *tempVec = parseVector(strValue, vectorType, &status);
+          if(!status) {
+              addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName+1,
+                                        mdType | flags,
+                                        strComment, tempVec);
+          } else {
+              psError(PS_ERR_IO, true,
+                      _("Failed to parse the value '%s' of metadata item %s, type %s."),
                       strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S8:
-        tempInt = (psS8) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S16:
-        tempInt = (psS16) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S32:
-        tempInt = (psS32) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_S64:
-        tempInt = (psS64) parseSignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempInt);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_U8:
-        tempUint = (psU8)parseUnsignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempUint);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_U16:
-        tempUint = (psU16)parseUnsignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempUint);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_U32:
-        tempUint = (psU32)parseUnsignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempUint);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_U64:
-        tempUint = (psU64)parseUnsignedInt(strValue, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName, mdType | flags,
-                                      strComment, tempUint);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        break;
-    case PS_DATA_TIME:
-        if(!strncmp(strType, "UTC", 3)) {
-            timeType = PS_TIME_UTC;
-        } else if(!strncmp(strType, "TAI", 3)) {
-            timeType = PS_TIME_TAI;
-        } else if(!strncmp(strType, "UT1", 3)) {
-            timeType = PS_TIME_UT1;
-        } else if(!strncmp(strType, "TT", 3)) {
-            timeType = PS_TIME_TT;
-        }
-
-        mTime = parseTime(strValue, timeType, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName,
-                                      mdType | flags,
-                                      strComment, mTime);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        psFree(mTime);
-        break;
-    case PS_DATA_VECTOR:
-        tempVec = parseVector(strValue, vectorType, &status);
-        if(!status) {
-            addStatus = psMetadataAdd(md, PS_LIST_TAIL, keyName+1,
-                                      mdType | flags,
-                                      strComment, tempVec);
-        } else {
-            psError(PS_ERR_IO, true,
-                    _("Failed to parse the value '%s' of metadata item %s, type %s."),
-                    strValue, keyName, strType);
-            returnValue = false;
-        }
-        psFree(tempVec);
-        break;
+              returnValue = false;
+          }
+          psFree(tempVec);
+          break;
+      }
     case PS_DATA_METADATA_MULTI:
         // Add key to non-unique array of keys
@@ -1027,5 +922,5 @@
             }
         }
-        tempStr = psStringCopy(keyName);
+        psString tempStr = psStringCopy(keyName);
         nonUniqueKeys = psArrayAdd(nonUniqueKeys,0,tempStr);
         addStatus = true;
@@ -1547,22 +1442,22 @@
         break;
       case PS_DATA_STRING: {
-	  bool valid = false;
-	  if (item->data.str && strlen(item->data.str) > 0) {
-	      char *p = item->data.str;
-	      while (*p && isblank(*p)) p++;
-	      if (*p) valid = true;
-	  }
-	  if (valid) {
-	      psStringAppend(&content, "%-15s  %-8s  %-15s",
-			     item->name, "STR", item->data.str);
-	  } else {
-	      psStringAppend(&content, "%-15s  %-8s  %-15s",
-			     item->name, "STR", "NULL");
-	  }
-	  if (item->comment && strncmp(item->comment,"",2)) {
-	      psStringAppend(&content, "  # %s", item->comment);
-	  }
-	  psStringAppend(&content, " \n");
-	  break;
+          bool valid = false;
+          if (item->data.str && strlen(item->data.str) > 0) {
+              char *p = item->data.str;
+              while (*p && isblank(*p)) p++;
+              if (*p) valid = true;
+          }
+          if (valid) {
+              psStringAppend(&content, "%-15s  %-8s  %-15s",
+                             item->name, "STR", item->data.str);
+          } else {
+              psStringAppend(&content, "%-15s  %-8s  %-15s",
+                             item->name, "STR", "NULL");
+          }
+          if (item->comment && strncmp(item->comment,"",2)) {
+              psStringAppend(&content, "  # %s", item->comment);
+          }
+          psStringAppend(&content, " \n");
+          break;
       }
     case PS_DATA_METADATA: {
