Index: trunk/ippToPsps/scripts/pspsSchema2xml.pl
===================================================================
--- trunk/ippToPsps/scripts/pspsSchema2xml.pl	(revision 27427)
+++ trunk/ippToPsps/scripts/pspsSchema2xml.pl	(revision 27431)
@@ -23,5 +23,5 @@
         -msg => "\n   Required options:\n\n".
         "--schema <path to PSPS schema>\n".
-        "--type <IN|DT|OB>\n".
+        "--type <init|det|diff|stack>\n".
         -exitval => 3
         ) unless
@@ -29,9 +29,15 @@
 defined $type;
 
-if ($type ne "DT" && $type ne "IN" && $type ne "OB" && $type ne "ST") {
+if ($type ne "init" && $type ne "det" && $type ne "diff" && $type ne "stack") {
 
     print "Don't understand type '$type'\n"; 
     die;
 }
+
+my $enumsHeader = "ippToPsps".ucfirst($type)."Enums";
+open(OUT, ">".$enumsHeader.".h") or die("Error");
+
+print OUT "#ifndef ".uc($enumsHeader)."_H\n";
+print OUT "#define ".uc($enumsHeader)."_H\n\n";
 
 
@@ -42,8 +48,8 @@
 $writer->startTag('tableDescriptions', "type" => "$type");
 
-if ($type eq "IN") {createInit();}
-elsif ($type eq "DT") {createDetections();}
-elsif ($type eq "OB") {createDiffs();}
-elsif ($type eq "ST") {createStacks();}
+if ($type eq "init") {createInit();}
+elsif ($type eq "det") {createDetections();}
+elsif ($type eq "diff") {createDiffs();}
+elsif ($type eq "stack") {createStacks();}
 
 # finish up XML
@@ -51,8 +57,13 @@
 $writer->end();
 
-
-######################################################################################3
-
-# finds the schema file containing this table description
+print OUT "\n#endif";
+close OUT;
+
+
+#######################################################################################
+#
+# Finds the schema file containing the table name passed in
+#
+#######################################################################################
 sub findSchemaFile {
     my ($tableName) = @_;
@@ -86,5 +97,9 @@
 }
 
-# creates detections tables
+#######################################################################################
+#
+# Creates detection batch tables
+#
+#######################################################################################
 sub createInit {
 
@@ -101,5 +116,9 @@
 }
 
-# creates init batch tables
+#######################################################################################
+#
+# Creates initialisation batch tables
+#
+#######################################################################################
 sub createDetections {
 
@@ -111,5 +130,9 @@
 }
 
-# creates diff batch tables
+#######################################################################################
+#
+# Creates difference batch tables
+#
+#######################################################################################
 sub createDiffs {
 
@@ -118,7 +141,12 @@
     parseTable("StackLowSigDelta");
     parseTable("StackHighSigDelta");
-}
-
-# creates stack batch tables
+    parseTable("ObjectCalColor");
+}
+
+#######################################################################################
+#
+# Creates stack batch tables
+#
+#######################################################################################
 sub createStacks {
 
@@ -130,6 +158,9 @@
 }
 
-
-# parses out a table
+#######################################################################################
+#
+# Parses a particular table from the SQL file and converts it to an XML description 
+#
+#######################################################################################
 sub parseTable {
     my ($tableName, $newName) = @_;
@@ -144,4 +175,5 @@
     else {$tableNameOut = $tableName}
 
+    print OUT "\ntypedef enum {\n";
     $writer->startTag('table', "name" => $tableNameOut);
 
@@ -150,4 +182,5 @@
     my $reading = 0;
     my $found = 0;
+    my $colNum = 0;
     my $table;
 
@@ -163,4 +196,5 @@
                 $reading = 1;
                 $found = 1;
+                $colNum = 0;
                 next;
             }
@@ -180,5 +214,5 @@
         if ($line =~ m/\*\//) {next;}
 
-        processLine($line, $tableName);
+        $colNum = processLine($line, $tableName, $colNum);
 
     }
@@ -186,11 +220,16 @@
     if (!$found) {print "Could not find table '$tableName'\n";}
     $writer->endTag();
+    print OUT "} ".$tableNameOut.";\n";
 
     close SCHEMA;
 }
 
-# process line
+#######################################################################################
+#
+# Processes a line from the PSPS schema table description and converts to XML
+#
+#######################################################################################
 sub processLine {
-    my ($line, $tableName) = @_;
+    my ($line, $tableName, $colNum) = @_;
 
     my $name;
@@ -223,5 +262,5 @@
 
         print "In '$tableName', can't process: '$line'\n";
-        return 0
+        return $colNum
     }
 
@@ -263,4 +302,8 @@
     if ($type eq "TSTRING" && $default eq "") {$default = " ";}
 
+    $colNum++;
+
+    print OUT "  ".uc($tableName)."_".uc($name)." = ".$colNum.",\n";
+
     $writer->startTag('column',
             "name" => $name,
@@ -270,10 +313,5 @@
 
     $writer->endTag();
-}
-
-
-
-
-
-
-
+
+    return $colNum;
+}
Index: trunk/ippToPsps/src/ippToPspsBatchDetection.c
===================================================================
--- trunk/ippToPsps/src/ippToPspsBatchDetection.c	(revision 27427)
+++ trunk/ippToPsps/src/ippToPspsBatchDetection.c	(revision 27431)
@@ -7,7 +7,8 @@
  */
 
-# include <limits.h>
+#include <limits.h>
 #include "ippToPsps.h"
 #include "ippToPspsConfig.h"
+#include "ippToPspsDetEnums.h"
 #include "fitsio.h"
 
@@ -61,21 +62,21 @@
 
     // FrameMeta values
-    fits_write_col(this->fitsOut, TLONG, 1, 1, 1, 1, &this->expId, &status);
+    fits_write_col(this->fitsOut, TLONG, FRAMEMETA_FRAMEID, 1, 1, 1, &this->expId, &status);
 
     int8_t surveyID = 0; // TODO
-    fits_write_col(this->fitsOut, TBYTE, 2, 1, 1, 1, &surveyID, &status);
+    fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_SURVEYID, 1, 1, 1, &surveyID, &status);
 
     int8_t filterID = -1;
     ippToPspsConfig_getFilterId(this->config, filterType, &filterID);
-    fits_write_col(this->fitsOut, TBYTE, 3, 1, 1, 1, &filterID, &status);
+    fits_write_col(this->fitsOut, TBYTE, FRAMEMETA_FILTERID, 1, 1, 1, &filterID, &status);
 
     int16_t cameraID = 1; // TODO
-    fits_write_col(this->fitsOut, TSHORT, 4, 1, 1, 1, &cameraID, &status);
+    fits_write_col(this->fitsOut, TSHORT, FRAMEMETA_CAMERAID, 1, 1, 1, &cameraID, &status);
 
     int16_t cameraConfigID = 1; // TODO
-    fits_write_col(this->fitsOut, TSHORT, 5, 1, 1, 1, &cameraConfigID, &status);
+    fits_write_col(this->fitsOut, TSHORT, FRAMEMETA_CAMERACONFIGID, 1, 1, 1, &cameraConfigID, &status);
 
     int16_t telescopeID = 1; // TODO
-    fits_write_col(this->fitsOut, TSHORT, 6, 1, 1, 1, &telescopeID, &status);
+    fits_write_col(this->fitsOut, TSHORT, FRAMEMETA_TELESCOPEID, 1, 1, 1, &telescopeID, &status);
 
     // stuff to keep from psf.hdr header
@@ -200,18 +201,18 @@
 
 
-            // TODO check numSmfDetections < MAXDETECT
+            // TODO check nDet < MAXDETECT
 
             // create ImageMeta
             ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "ImageMeta", true);
             psfFwhm = (fwhmMaj+fwhmMin)/2;
-            fits_write_col(this->fitsOut, TLONGLONG, 1, 1, 1, 1, &pspsImageId, &status); // TODO enums for thse col numbers
-            fits_write_col(this->fitsOut, TLONG, 2, 1, 1, 1, &this->expId, &status);
-            fits_write_col(this->fitsOut, TSHORT, 3, 1, 1, 1, &pImage->ccdnum, &status);
-            // fits_write_col(this->fitsOut, TLONG, 4, 1, 1, 1, &pImage->photcode, &status); TODO
+            fits_write_col(this->fitsOut, TLONGLONG, IMAGEMETA_IMAGEID, 1, 1, 1, &pspsImageId, &status); // TODO enums for thse col numbers
+            fits_write_col(this->fitsOut, TLONG, IMAGEMETA_FRAMEID, 1, 1, 1, &this->expId, &status);
+            fits_write_col(this->fitsOut, TSHORT, IMAGEMETA_CCDID, 1, 1, 1, &pImage->ccdnum, &status);
+            // fits_write_col(this->fitsOut, TLONG, IMAGEMETA_PHOTOCALID, 1, 1, 1, &pImage->photcode, &status); TODO
             psLogMsg("ippToPsps", PS_LOG_INFO, "photocode %d", pImage->photcode);
-            fits_write_col(this->fitsOut, TBYTE, 5, 1, 1, 1, &filterID, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 14, 1, 1, 1, &zptObs, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 19, 1, 1, 1, &psfFwhm, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 38, 1, 1, 1, &zptObs, &status);
+            fits_write_col(this->fitsOut, TBYTE, IMAGEMETA_FILTERID, 1, 1, 1, &filterID, &status);
+            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOSCAT, 1, 1, 1, &zptObs, &status);
+            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PSFFWHM, 1, 1, 1, &psfFwhm, &status);
+            fits_write_col(this->fitsOut, TFLOAT, IMAGEMETA_PHOTOZERO, 1, 1, 1, &zptObs, &status);
 
             // move to detections table in smf
@@ -223,6 +224,6 @@
             }
 
-            long numSmfDetections = 0;
-            if (fits_get_num_rows(fitsIn, &numSmfDetections, &status)) {
+            long nDet = 0;
+            if (fits_get_num_rows(fitsIn, &nDet, &status)) {
                 fits_report_error(stderr, status);
             }
@@ -232,13 +233,13 @@
 
             anynull = 0;
-            fits_read_col(fitsIn, TLONG, 1, 1, 1, numSmfDetections, &longnull, ippIDet, &anynull, &status);
-            fits_read_col(fitsIn, TFLOAT, 8, 1, 1, numSmfDetections, &floatnull, instMag, &anynull, &status);
-            fits_read_col(fitsIn, TFLOAT, 9, 1, 1, numSmfDetections, &floatnull, instMagErr, &anynull, &status);
-            fits_read_col(fitsIn, TFLOAT, 12, 1, 1, numSmfDetections, &floatnull, peakMag, &anynull, &status);
+            fits_read_col(fitsIn, TLONG, 1, 1, 1, nDet, &longnull, ippIDet, &anynull, &status);
+            fits_read_col(fitsIn, TFLOAT, 8, 1, 1, nDet, &floatnull, instMag, &anynull, &status);
+            fits_read_col(fitsIn, TFLOAT, 9, 1, 1, nDet, &floatnull, instMagErr, &anynull, &status);
+            fits_read_col(fitsIn, TFLOAT, 12, 1, 1, nDet, &floatnull, peakMag, &anynull, &status);
 
             // DVO detections are ordered by IPP_IDET, which increments from 0 in SMF table
             // both DVO detections and smf detections should increment. however, there may be gaps in smf and 'invalid' rows in dvo
             numOfDuplicates = 0;
-            for (long s = 0; s<numSmfDetections; s++) {
+            for (long s = 0; s<nDet; s++) {
 
                 // count jumps in smf file
@@ -296,30 +297,30 @@
 
             // detections
-            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, numSmfDetections, "Detection", false);
-            fits_write_col(this->fitsOut, TLONGLONG, 1, 1, 1, numSmfDetections, objID, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 2, 1, 1, numSmfDetections, detectID, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 3, 1, 1, numSmfDetections, ippObjID, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 4, 1, 1, numSmfDetections, ippDetectID, &status);
-            fits_write_col(this->fitsOut, TBYTE, 5, 1, 1, numSmfDetections, filterIDs, &status);
-            fits_write_col(this->fitsOut, TBYTE, 6, 1, 1, numSmfDetections, surveyIDs, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 7, 1, 1, numSmfDetections, imageID, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 8, 1, 1, numSmfDetections, obsTimes, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 13, 1, 1, numSmfDetections, instFlux, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 14, 1, 1, numSmfDetections, instFluxErr, &status);
-            fits_write_col(this->fitsOut, TFLOAT, 15, 1, 1, numSmfDetections, peakFlux, &status);
-            fits_write_col(this->fitsOut, TSTRING, 26, 1, 1, numSmfDetections, assocDate, &status); 
+            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, nDet, "Detection", false);
+            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_OBJID, 1, 1, nDet, objID, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_DETECTID, 1, 1, nDet, detectID, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IPPOBJID, 1, 1, nDet, ippObjID, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IPPDETECTID, 1, 1, nDet, ippDetectID, &status);
+            fits_write_col(this->fitsOut, TBYTE, DETECTION_FILTERID, 1, 1, nDet, filterIDs, &status);
+            fits_write_col(this->fitsOut, TBYTE, DETECTION_SURVEYID, 1, 1, nDet, surveyIDs, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, DETECTION_IMAGEID, 1, 1, nDet, imageID, &status);
+            fits_write_col(this->fitsOut, TFLOAT, DETECTION_OBSTIME, 1, 1, nDet, obsTimes, &status);
+            fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUX, 1, 1, nDet, instFlux, &status);
+            fits_write_col(this->fitsOut, TFLOAT, DETECTION_INSTFLUXERR, 1, 1, nDet, instFluxErr, &status);
+            fits_write_col(this->fitsOut, TFLOAT, DETECTION_PEAKFLUX, 1, 1, nDet, peakFlux, &status);
+            fits_write_col(this->fitsOut, TSTRING, DETECTION_ASSOCDATE, 1, 1, nDet, assocDate, &status); 
             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
 
             // skinny object
-            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, numSmfDetections, "SkinnyObject", false);
-            fits_write_col(this->fitsOut, TLONGLONG, 1, 1, 1, numSmfDetections, objID, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 2, 1, 1, numSmfDetections, ippObjID, &status);
+            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, nDet, "SkinnyObject", false);
+            fits_write_col(this->fitsOut, TLONGLONG, SKINNYOBJECT_OBJID, 1, 1, nDet, objID, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, SKINNYOBJECT_IPPOBJID, 1, 1, nDet, ippObjID, &status);
             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
 
             // object calibration color
-            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, numSmfDetections, "ObjectCalColor", false);
-            fits_write_col(this->fitsOut, TLONGLONG, 1, 1, 1, numSmfDetections, objID, &status);
-            fits_write_col(this->fitsOut, TLONGLONG, 2, 1, 1, numSmfDetections, ippObjID, &status);
-            fits_write_col(this->fitsOut, TBYTE, 3, 1, 1, numSmfDetections, filterIDs, &status);
+            ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, nDet, "ObjectCalColor", false);
+            fits_write_col(this->fitsOut, TLONGLONG, OBJECTCALCOLOR_OBJID, 1, 1, nDet, objID, &status);
+            fits_write_col(this->fitsOut, TLONGLONG, OBJECTCALCOLOR_IPPOBJID, 1, 1, nDet, ippObjID, &status);
+            fits_write_col(this->fitsOut, TBYTE, OBJECTCALCOLOR_FILTERID, 1, 1, nDet, filterIDs, &status);
             if (numOfDuplicates) fits_delete_rowlist(this->fitsOut, duplicateList, numOfDuplicates, &status);
 
@@ -329,5 +330,5 @@
                     "|  %s |  %5ld  |   %5ld  |      %5d       |    %5d      |\n"
                     "|___________|_________|__________|__________________|_______________|\n",
-                    extensionName, numSmfDetections, numDetectionsOut, unmatched, numOfDuplicates);
+                    extensionName, nDet, numDetectionsOut, unmatched, numOfDuplicates);
 
             if (dvoDetections!= NULL) dvoFree(dvoDetections);
Index: trunk/ippToPsps/src/ippToPspsBatchDifference.c
===================================================================
--- trunk/ippToPsps/src/ippToPspsBatchDifference.c	(revision 27427)
+++ trunk/ippToPsps/src/ippToPspsBatchDifference.c	(revision 27431)
@@ -9,4 +9,5 @@
 #include "ippToPsps.h"
 #include "ippToPspsConfig.h"
+#include "ippToPspsDiffEnums.h"
 
 /**
@@ -41,5 +42,4 @@
 
     for (uint16_t i = 0; i<this->numOfInputFiles; i++) {
-    //for (uint16_t i = 0; i<3; i++) {
 
         if (fits_open_file(&fitsIn, this->inputFiles[i], READONLY, &status)) {
@@ -57,5 +57,5 @@
         fits_get_hdrspace(fitsIn, &nKeys, NULL, &status);
         ippToPspsConfig_writeTable(this->config, fitsIn,  this->fitsOut, 1, "StackMeta", true);
-        fits_write_col(this->fitsOut, TLONG, 2, 1, 1, 1, &skycell, &status);
+        fits_write_col(this->fitsOut, TLONG, STACKMETA_SKYCELLID, 1, 1, 1, &skycell, &status);
 
         // build StackToImage
@@ -107,5 +107,5 @@
         ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, 1, "StackLowSigDelta", false);
         ippToPspsConfig_writeTable(this->config, fitsIn, this->fitsOut, tableSize, "StackHighSigDelta", false);
-        fits_write_col(this->fitsOut, TFLOAT, 5, 1, 1, tableSize, obsTimes, &status);
+        fits_write_col(this->fitsOut, TFLOAT, STACKHIGHSIGDELTA_OBSTIME, 1, 1, tableSize, obsTimes, &status);
         if (numLowSig) fits_delete_rowlist(this->fitsOut, lowSig, numLowSig, &status);
 
Index: trunk/ippToPsps/src/ippToPspsDetEnums.h
===================================================================
--- trunk/ippToPsps/src/ippToPspsDetEnums.h	(revision 27431)
+++ trunk/ippToPsps/src/ippToPspsDetEnums.h	(revision 27431)
@@ -0,0 +1,171 @@
+#ifndef IPPTOPSPSDETENUMS_H
+#define IPPTOPSPSDETENUMS_H
+
+
+typedef enum {
+  FRAMEMETA_FRAMEID = 1,
+  FRAMEMETA_SURVEYID = 2,
+  FRAMEMETA_FILTERID = 3,
+  FRAMEMETA_CAMERAID = 4,
+  FRAMEMETA_CAMERACONFIGID = 5,
+  FRAMEMETA_TELESCOPEID = 6,
+  FRAMEMETA_ANALYSISVER = 7,
+  FRAMEMETA_P1RECIP = 8,
+  FRAMEMETA_P2RECIP = 9,
+  FRAMEMETA_P3RECIP = 10,
+  FRAMEMETA_NP2IMAGES = 11,
+  FRAMEMETA_ASTROSCAT = 12,
+  FRAMEMETA_PHOTOSCAT = 13,
+  FRAMEMETA_NASTREF = 14,
+  FRAMEMETA_NPHOREF = 15,
+  FRAMEMETA_EXPSTART = 16,
+  FRAMEMETA_EXPTIME = 17,
+  FRAMEMETA_AIRMASS = 18,
+  FRAMEMETA_RABORE = 19,
+  FRAMEMETA_DECBORE = 20,
+  FRAMEMETA_CTYPE1 = 21,
+  FRAMEMETA_CTYPE2 = 22,
+  FRAMEMETA_CRVAL1 = 23,
+  FRAMEMETA_CRVAL2 = 24,
+  FRAMEMETA_CRPIX1 = 25,
+  FRAMEMETA_CRPIX2 = 26,
+  FRAMEMETA_PC001001 = 27,
+  FRAMEMETA_PC001002 = 28,
+  FRAMEMETA_PC002001 = 29,
+  FRAMEMETA_PC002002 = 30,
+  FRAMEMETA_POLYORDER = 31,
+  FRAMEMETA_PCA1X3Y0 = 32,
+  FRAMEMETA_PCA1X2Y1 = 33,
+  FRAMEMETA_PCA1X1Y2 = 34,
+  FRAMEMETA_PCA1X0Y3 = 35,
+  FRAMEMETA_PCA1X2Y0 = 36,
+  FRAMEMETA_PCA1X1Y1 = 37,
+  FRAMEMETA_PCA1X0Y2 = 38,
+  FRAMEMETA_PCA2X3Y0 = 39,
+  FRAMEMETA_PCA2X2Y1 = 40,
+  FRAMEMETA_PCA2X1Y2 = 41,
+  FRAMEMETA_PCA2X0Y3 = 42,
+  FRAMEMETA_PCA2X2Y0 = 43,
+  FRAMEMETA_PCA2X1Y1 = 44,
+  FRAMEMETA_PCA2X0Y2 = 45,
+  FRAMEMETA_CALIBMODNUM = 46,
+  FRAMEMETA_DATARELEASE = 47,
+} FrameMeta;
+
+typedef enum {
+  IMAGEMETA_IMAGEID = 1,
+  IMAGEMETA_FRAMEID = 2,
+  IMAGEMETA_CCDID = 3,
+  IMAGEMETA_PHOTOCALID = 4,
+  IMAGEMETA_FILTERID = 5,
+  IMAGEMETA_BIAS = 6,
+  IMAGEMETA_BIASSCAT = 7,
+  IMAGEMETA_SKY = 8,
+  IMAGEMETA_SKYSCAT = 9,
+  IMAGEMETA_NDETECT = 10,
+  IMAGEMETA_MAGSAT = 11,
+  IMAGEMETA_COMPLETMAG = 12,
+  IMAGEMETA_ASTROSCAT = 13,
+  IMAGEMETA_PHOTOSCAT = 14,
+  IMAGEMETA_NASTREF = 15,
+  IMAGEMETA_NPHOREF = 16,
+  IMAGEMETA_NX = 17,
+  IMAGEMETA_NY = 18,
+  IMAGEMETA_PSFFWHM = 19,
+  IMAGEMETA_PSFMODELID = 20,
+  IMAGEMETA_PSFWIDMAJOR = 21,
+  IMAGEMETA_PSFWIDMINOR = 22,
+  IMAGEMETA_PSFTHETA = 23,
+  IMAGEMETA_PSFEXTRA1 = 24,
+  IMAGEMETA_PSFEXTRA2 = 25,
+  IMAGEMETA_APRESID = 26,
+  IMAGEMETA_DAPRESID = 27,
+  IMAGEMETA_DETECTORID = 28,
+  IMAGEMETA_QAFLAGS = 29,
+  IMAGEMETA_DETREND1 = 30,
+  IMAGEMETA_DETREND2 = 31,
+  IMAGEMETA_DETREND3 = 32,
+  IMAGEMETA_DETREND4 = 33,
+  IMAGEMETA_DETREND5 = 34,
+  IMAGEMETA_DETREND6 = 35,
+  IMAGEMETA_DETREND7 = 36,
+  IMAGEMETA_DETREND8 = 37,
+  IMAGEMETA_PHOTOZERO = 38,
+  IMAGEMETA_CTYPE1 = 39,
+  IMAGEMETA_CTYPE2 = 40,
+  IMAGEMETA_CRVAL1 = 41,
+  IMAGEMETA_CRVAL2 = 42,
+  IMAGEMETA_CRPIX1 = 43,
+  IMAGEMETA_CRPIX2 = 44,
+  IMAGEMETA_PC001001 = 45,
+  IMAGEMETA_PC001002 = 46,
+  IMAGEMETA_PC002001 = 47,
+  IMAGEMETA_PC002002 = 48,
+  IMAGEMETA_POLYORDER = 49,
+  IMAGEMETA_PCA1X3Y0 = 50,
+  IMAGEMETA_PCA1X2Y1 = 51,
+  IMAGEMETA_PCA1X1Y2 = 52,
+  IMAGEMETA_PCA1X0Y3 = 53,
+  IMAGEMETA_PCA1X2Y0 = 54,
+  IMAGEMETA_PCA1X1Y1 = 55,
+  IMAGEMETA_PCA1X0Y2 = 56,
+  IMAGEMETA_PCA2X3Y0 = 57,
+  IMAGEMETA_PCA2X2Y1 = 58,
+  IMAGEMETA_PCA2X1Y2 = 59,
+  IMAGEMETA_PCA2X0Y3 = 60,
+  IMAGEMETA_PCA2X2Y0 = 61,
+  IMAGEMETA_PCA2X1Y1 = 62,
+  IMAGEMETA_PCA2X0Y2 = 63,
+  IMAGEMETA_CALIBMODNUM = 64,
+  IMAGEMETA_DATARELEASE = 65,
+} ImageMeta;
+
+typedef enum {
+  DETECTION_OBJID = 1,
+  DETECTION_DETECTID = 2,
+  DETECTION_IPPOBJID = 3,
+  DETECTION_IPPDETECTID = 4,
+  DETECTION_FILTERID = 5,
+  DETECTION_SURVEYID = 6,
+  DETECTION_IMAGEID = 7,
+  DETECTION_OBSTIME = 8,
+  DETECTION_XPOS = 9,
+  DETECTION_YPOS = 10,
+  DETECTION_XPOSERR = 11,
+  DETECTION_YPOSERR = 12,
+  DETECTION_INSTFLUX = 13,
+  DETECTION_INSTFLUXERR = 14,
+  DETECTION_PEAKFLUX = 15,
+  DETECTION_PSFWIDMAJOR = 16,
+  DETECTION_PSFWIDMINOR = 17,
+  DETECTION_PSFTHETA = 18,
+  DETECTION_PSFLIKELIHOOD = 19,
+  DETECTION_PSFCF = 20,
+  DETECTION_INFOFLAG = 21,
+  DETECTION_SKY = 22,
+  DETECTION_SKYERR = 23,
+  DETECTION_SGSEP = 24,
+  DETECTION_ACTIVEFLAG = 25,
+  DETECTION_ASSOCDATE = 26,
+  DETECTION_HISTORYMODNUM = 27,
+  DETECTION_DATARELEASE = 28,
+} Detection;
+
+typedef enum {
+  SKINNYOBJECT_OBJID = 1,
+  SKINNYOBJECT_IPPOBJID = 2,
+  SKINNYOBJECT_PROJECTIONCELLID = 3,
+  SKINNYOBJECT_DATARELEASE = 4,
+} SkinnyObject;
+
+typedef enum {
+  OBJECTCALCOLOR_OBJID = 1,
+  OBJECTCALCOLOR_IPPOBJID = 2,
+  OBJECTCALCOLOR_FILTERID = 3,
+  OBJECTCALCOLOR_CALCOLOR = 4,
+  OBJECTCALCOLOR_CALCOLORERR = 5,
+  OBJECTCALCOLOR_CALIBMODNUM = 6,
+  OBJECTCALCOLOR_DATARELEASE = 7,
+} ObjectCalColor;
+
+#endif
Index: trunk/ippToPsps/src/ippToPspsDiffEnums.h
===================================================================
--- trunk/ippToPsps/src/ippToPspsDiffEnums.h	(revision 27431)
+++ trunk/ippToPsps/src/ippToPspsDiffEnums.h	(revision 27431)
@@ -0,0 +1,118 @@
+#ifndef IPPTOPSPSDIFFENUMS_H
+#define IPPTOPSPSDIFFENUMS_H
+
+
+typedef enum {
+  STACKMETA_STACKMETAID = 1,
+  STACKMETA_SKYCELLID = 2,
+  STACKMETA_SURVEYID = 3,
+  STACKMETA_PHOTOCALID = 4,
+  STACKMETA_FILTERID = 5,
+  STACKMETA_STACKTYPEID = 6,
+  STACKMETA_REFIMAGEID = 7,
+  STACKMETA_SUBTRIMAGEID = 8,
+  STACKMETA_MAGSAT = 9,
+  STACKMETA_ANALVER = 10,
+  STACKMETA_NP2IMAGES = 11,
+  STACKMETA_COMPLETMAG = 12,
+  STACKMETA_ASTROSCAT = 13,
+  STACKMETA_PHOTOSCAT = 14,
+  STACKMETA_NASTROREF = 15,
+  STACKMETA_NPHOREF = 16,
+  STACKMETA_PSFFWHM = 17,
+  STACKMETA_PSFMODELID = 18,
+  STACKMETA_PSFWIDMAJOR = 19,
+  STACKMETA_PSFWIDMINOR = 20,
+  STACKMETA_PSFTHETA = 21,
+  STACKMETA_PSFEXTRA1 = 22,
+  STACKMETA_PSFEXTRA2 = 23,
+  STACKMETA_PHOTOZERO = 24,
+  STACKMETA_PHOTOCOLOR = 25,
+  STACKMETA_CTYPE1 = 26,
+  STACKMETA_CTYPE2 = 27,
+  STACKMETA_CRVAL1 = 28,
+  STACKMETA_CRVAL2 = 29,
+  STACKMETA_CRPIX1 = 30,
+  STACKMETA_CRPIX2 = 31,
+  STACKMETA_PC001001 = 32,
+  STACKMETA_PC001002 = 33,
+  STACKMETA_PC002001 = 34,
+  STACKMETA_PC002002 = 35,
+  STACKMETA_POLYORDER = 36,
+  STACKMETA_PCA1X3Y0 = 37,
+  STACKMETA_PCA1X2Y1 = 38,
+  STACKMETA_PCA1X1Y2 = 39,
+  STACKMETA_PCA1X0Y3 = 40,
+  STACKMETA_PCA1X2Y0 = 41,
+  STACKMETA_PCA1X1Y1 = 42,
+  STACKMETA_PCA1X0Y2 = 43,
+  STACKMETA_PCA2X3Y0 = 44,
+  STACKMETA_PCA2X2Y1 = 45,
+  STACKMETA_PCA2X1Y2 = 46,
+  STACKMETA_PCA2X0Y3 = 47,
+  STACKMETA_PCA2X2Y0 = 48,
+  STACKMETA_PCA2X1Y1 = 49,
+  STACKMETA_PCA2X0Y2 = 50,
+  STACKMETA_CALIBMODNUM = 51,
+  STACKMETA_DATARELEASE = 52,
+} StackMeta;
+
+typedef enum {
+  STACKTOIMAGE_STACKMETAID = 1,
+  STACKTOIMAGE_IMAGEID = 2,
+} StackToImage;
+
+typedef enum {
+  STACKLOWSIGDELTA_STACKMETAID = 1,
+  STACKLOWSIGDELTA_DATATABLE = 2,
+  STACKLOWSIGDELTA_DATARELEASE = 3,
+} StackLowSigDelta;
+
+typedef enum {
+  STACKHIGHSIGDELTA_PARTITIONKEY = 1,
+  STACKHIGHSIGDELTA_STACKDIFFID = 2,
+  STACKHIGHSIGDELTA_IPPDETECTID = 3,
+  STACKHIGHSIGDELTA_FILTERID = 4,
+  STACKHIGHSIGDELTA_OBSTIME = 5,
+  STACKHIGHSIGDELTA_XPOS = 6,
+  STACKHIGHSIGDELTA_YPOS = 7,
+  STACKHIGHSIGDELTA_XPOSERR = 8,
+  STACKHIGHSIGDELTA_YPOSERR = 9,
+  STACKHIGHSIGDELTA_INSTMAG = 10,
+  STACKHIGHSIGDELTA_INSTMAGERR = 11,
+  STACKHIGHSIGDELTA_PEAKFLUXMAG = 12,
+  STACKHIGHSIGDELTA_PSFWIDMAJOR = 13,
+  STACKHIGHSIGDELTA_PSFWIDMINOR = 14,
+  STACKHIGHSIGDELTA_PSFTHETA = 15,
+  STACKHIGHSIGDELTA_PSFLIKELIHOOD = 16,
+  STACKHIGHSIGDELTA_PSFCF = 17,
+  STACKHIGHSIGDELTA_INFOFLAG = 18,
+  STACKHIGHSIGDELTA_NFRAMES = 19,
+  STACKHIGHSIGDELTA_HTMID = 20,
+  STACKHIGHSIGDELTA_ZONEID = 21,
+  STACKHIGHSIGDELTA_RA = 22,
+  STACKHIGHSIGDELTA_DEC = 23,
+  STACKHIGHSIGDELTA_RAERR = 24,
+  STACKHIGHSIGDELTA_DECERR = 25,
+  STACKHIGHSIGDELTA_CX = 26,
+  STACKHIGHSIGDELTA_CY = 27,
+  STACKHIGHSIGDELTA_CZ = 28,
+  STACKHIGHSIGDELTA_CALMAG = 29,
+  STACKHIGHSIGDELTA_CALMAGERR = 30,
+  STACKHIGHSIGDELTA_SKY = 31,
+  STACKHIGHSIGDELTA_SKYERR = 32,
+  STACKHIGHSIGDELTA_SGSEP = 33,
+  STACKHIGHSIGDELTA_DATARELEASE = 34,
+} StackHighSigDelta;
+
+typedef enum {
+  OBJECTCALCOLOR_OBJID = 1,
+  OBJECTCALCOLOR_IPPOBJID = 2,
+  OBJECTCALCOLOR_FILTERID = 3,
+  OBJECTCALCOLOR_CALCOLOR = 4,
+  OBJECTCALCOLOR_CALCOLORERR = 5,
+  OBJECTCALCOLOR_CALIBMODNUM = 6,
+  OBJECTCALCOLOR_DATARELEASE = 7,
+} ObjectCalColor;
+
+#endif
Index: trunk/ippToPsps/src/ippToPspsStackEnums.h
===================================================================
--- trunk/ippToPsps/src/ippToPspsStackEnums.h	(revision 27431)
+++ trunk/ippToPsps/src/ippToPspsStackEnums.h	(revision 27431)
@@ -0,0 +1,170 @@
+#ifndef IPPTOPSPSSTACKENUMS_H
+#define IPPTOPSPSSTACKENUMS_H
+
+
+typedef enum {
+  STACKMETA_STACKMETAID = 1,
+  STACKMETA_SKYCELLID = 2,
+  STACKMETA_SURVEYID = 3,
+  STACKMETA_PHOTOCALID = 4,
+  STACKMETA_FILTERID = 5,
+  STACKMETA_STACKTYPEID = 6,
+  STACKMETA_REFIMAGEID = 7,
+  STACKMETA_SUBTRIMAGEID = 8,
+  STACKMETA_MAGSAT = 9,
+  STACKMETA_ANALVER = 10,
+  STACKMETA_NP2IMAGES = 11,
+  STACKMETA_COMPLETMAG = 12,
+  STACKMETA_ASTROSCAT = 13,
+  STACKMETA_PHOTOSCAT = 14,
+  STACKMETA_NASTROREF = 15,
+  STACKMETA_NPHOREF = 16,
+  STACKMETA_PSFFWHM = 17,
+  STACKMETA_PSFMODELID = 18,
+  STACKMETA_PSFWIDMAJOR = 19,
+  STACKMETA_PSFWIDMINOR = 20,
+  STACKMETA_PSFTHETA = 21,
+  STACKMETA_PSFEXTRA1 = 22,
+  STACKMETA_PSFEXTRA2 = 23,
+  STACKMETA_PHOTOZERO = 24,
+  STACKMETA_PHOTOCOLOR = 25,
+  STACKMETA_CTYPE1 = 26,
+  STACKMETA_CTYPE2 = 27,
+  STACKMETA_CRVAL1 = 28,
+  STACKMETA_CRVAL2 = 29,
+  STACKMETA_CRPIX1 = 30,
+  STACKMETA_CRPIX2 = 31,
+  STACKMETA_PC001001 = 32,
+  STACKMETA_PC001002 = 33,
+  STACKMETA_PC002001 = 34,
+  STACKMETA_PC002002 = 35,
+  STACKMETA_POLYORDER = 36,
+  STACKMETA_PCA1X3Y0 = 37,
+  STACKMETA_PCA1X2Y1 = 38,
+  STACKMETA_PCA1X1Y2 = 39,
+  STACKMETA_PCA1X0Y3 = 40,
+  STACKMETA_PCA1X2Y0 = 41,
+  STACKMETA_PCA1X1Y1 = 42,
+  STACKMETA_PCA1X0Y2 = 43,
+  STACKMETA_PCA2X3Y0 = 44,
+  STACKMETA_PCA2X2Y1 = 45,
+  STACKMETA_PCA2X1Y2 = 46,
+  STACKMETA_PCA2X0Y3 = 47,
+  STACKMETA_PCA2X2Y0 = 48,
+  STACKMETA_PCA2X1Y1 = 49,
+  STACKMETA_PCA2X0Y2 = 50,
+  STACKMETA_CALIBMODNUM = 51,
+  STACKMETA_DATARELEASE = 52,
+} StackMeta;
+
+typedef enum {
+  STACKDETECTION_OBJID = 1,
+  STACKDETECTION_STACKDETECTID = 2,
+  STACKDETECTION_IPPOBJID = 3,
+  STACKDETECTION_IPPDETECTID = 4,
+  STACKDETECTION_FILTERID = 5,
+  STACKDETECTION_STACKTYPEID = 6,
+  STACKDETECTION_SURVEYID = 7,
+  STACKDETECTION_PRIMARYF = 8,
+  STACKDETECTION_STACKMETAID = 9,
+  STACKDETECTION_SKYCELLID = 10,
+  STACKDETECTION_PROJECTIONCELLID = 11,
+  STACKDETECTION_STACKVER = 12,
+  STACKDETECTION_OBSTIME = 13,
+  STACKDETECTION_XPOS = 14,
+  STACKDETECTION_YPOS = 15,
+  STACKDETECTION_XPOSERR = 16,
+  STACKDETECTION_YPOSERR = 17,
+  STACKDETECTION_INSTFLUX = 18,
+  STACKDETECTION_INSTFLUXERR = 19,
+  STACKDETECTION_PEAKFLUX = 20,
+  STACKDETECTION_SKY = 21,
+  STACKDETECTION_SKYERR = 22,
+  STACKDETECTION_SGSEP = 23,
+  STACKDETECTION_PSFWIDMAJOR = 24,
+  STACKDETECTION_PSFWIDMINOR = 25,
+  STACKDETECTION_PSFTHETA = 26,
+  STACKDETECTION_PSFLIKELIHOOD = 27,
+  STACKDETECTION_PSFCF = 28,
+  STACKDETECTION_INFOFLAG = 29,
+  STACKDETECTION_NFRAMES = 30,
+  STACKDETECTION_WLSIGMA = 31,
+  STACKDETECTION_EPS1 = 32,
+  STACKDETECTION_EPS2 = 33,
+  STACKDETECTION_PSM11 = 34,
+  STACKDETECTION_PSM12 = 35,
+  STACKDETECTION_PSM21 = 36,
+  STACKDETECTION_PSM22 = 37,
+  STACKDETECTION_PSH11 = 38,
+  STACKDETECTION_PSH12 = 39,
+  STACKDETECTION_PSH21 = 40,
+  STACKDETECTION_PSH22 = 41,
+  STACKDETECTION_ACTIVEFLAG = 42,
+  STACKDETECTION_ASSOCDATE = 43,
+  STACKDETECTION_HISTORYMODNUM = 44,
+  STACKDETECTION_DATARELEASE = 45,
+} StackDetection;
+
+typedef enum {
+  SKINNYOBJECT_OBJID = 1,
+  SKINNYOBJECT_IPPOBJID = 2,
+  SKINNYOBJECT_PROJECTIONCELLID = 3,
+  SKINNYOBJECT_DATARELEASE = 4,
+} SkinnyObject;
+
+typedef enum {
+  STACKORPHAN_PARTITIONKEY = 1,
+  STACKORPHAN_STACKDETECTID = 2,
+  STACKORPHAN_IPPDETECTID = 3,
+  STACKORPHAN_FILTERID = 4,
+  STACKORPHAN_STACKTYPEID = 5,
+  STACKORPHAN_SURVEYID = 6,
+  STACKORPHAN_PRIMARYF = 7,
+  STACKORPHAN_STACKMETAID = 8,
+  STACKORPHAN_SKYCELLID = 9,
+  STACKORPHAN_STACKVER = 10,
+  STACKORPHAN_XPOS = 11,
+  STACKORPHAN_YPOS = 12,
+  STACKORPHAN_XPOSERR = 13,
+  STACKORPHAN_YPOSERR = 14,
+  STACKORPHAN_INSTFLUX = 15,
+  STACKORPHAN_INSTFLUXERR = 16,
+  STACKORPHAN_PEAKFLUX = 17,
+  STACKORPHAN_SKY = 18,
+  STACKORPHAN_SKYERR = 19,
+  STACKORPHAN_SGSEP = 20,
+  STACKORPHAN_PSFWIDMAJOR = 21,
+  STACKORPHAN_PSFWIDMINOR = 22,
+  STACKORPHAN_PSFTHETA = 23,
+  STACKORPHAN_PSFLIKELIHOOD = 24,
+  STACKORPHAN_PSFCF = 25,
+  STACKORPHAN_INFOFLAG = 26,
+  STACKORPHAN_NFRAMES = 27,
+  STACKORPHAN_WLSIGMA = 28,
+  STACKORPHAN_EPS1 = 29,
+  STACKORPHAN_EPS2 = 30,
+  STACKORPHAN_PSM11 = 31,
+  STACKORPHAN_PSM12 = 32,
+  STACKORPHAN_PSM21 = 33,
+  STACKORPHAN_PSM22 = 34,
+  STACKORPHAN_PSH11 = 35,
+  STACKORPHAN_PSH12 = 36,
+  STACKORPHAN_PSH21 = 37,
+  STACKORPHAN_PSH22 = 38,
+  STACKORPHAN_ACTIVEFLAG = 39,
+  STACKORPHAN_ASSOCDATE = 40,
+  STACKORPHAN_HISTORYMODNUM = 41,
+  STACKORPHAN_DATARELEASE = 42,
+} StackOrphan;
+
+typedef enum {
+  OBJECTCALCOLOR_OBJID = 1,
+  OBJECTCALCOLOR_IPPOBJID = 2,
+  OBJECTCALCOLOR_FILTERID = 3,
+  OBJECTCALCOLOR_CALCOLOR = 4,
+  OBJECTCALCOLOR_CALCOLORERR = 5,
+  OBJECTCALCOLOR_CALIBMODNUM = 6,
+  OBJECTCALCOLOR_DATARELEASE = 7,
+} ObjectCalColor;
+
+#endif
