Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/Makefile
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/Makefile	(revision 33445)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/Makefile	(revision 33446)
@@ -52,4 +52,5 @@
 $(SRC)/mosaic_astrom.$(ARCH).o   \
 $(SRC)/fits_db.$(ARCH).o	 \
+$(SRC)/dvo_tiny_values.$(ARCH).o       \
 $(SRC)/dvo_image.$(ARCH).o       \
 $(SRC)/dvo_image_raw.$(ARCH).o   \
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvo.h	(revision 33445)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvo.h	(revision 33446)
@@ -269,13 +269,18 @@
 } PhotCodeData;
 
-// a reduced-subset structure for relastro
-typedef struct {
-  double         R;
-  double         D;
-  unsigned short Nmeasure;
-  int            measureOffset;
-  uint32_t       flags;
-  int            catID;
-} AverageTinyAstro;
+typedef enum {
+  DVO_TV_MEASURE = 0x01,
+  DVO_TV_AVERAGE = 0x02,
+} DVOTinyValueMode;
+
+// XXX DROP? // a reduced-subset structure for relastro
+// XXX DROP? typedef struct {
+// XXX DROP?   double         R;
+// XXX DROP?   double         D;
+// XXX DROP?   unsigned short Nmeasure;
+// XXX DROP?   int            measureOffset;
+// XXX DROP?   uint32_t       flags;
+// XXX DROP?   int            catID;
+// XXX DROP? } AverageTinyAstro;
 
 // a reduced-subset structure for relphot
@@ -609,3 +614,10 @@
 int HostTableWaitJobs (HostTable *table, char *file, int lineno);
 
-# endif
+// functions to support tiny versions of Average and Measure
+void CopyAverageToTiny (AverageTiny *averageT, Average *average);
+void CopyMeasureToTiny (MeasureTiny *measureT, Measure *measure);
+int populate_tiny_values (Catalog *catalog, DVOTinyValueMode mode);
+int free_tiny_values (Catalog *catalog);
+
+# endif // DVO_H
+
Index: /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dvo_tiny_values.c
===================================================================
--- /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 33446)
+++ /branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dvo_tiny_values.c	(revision 33446)
@@ -0,0 +1,75 @@
+# include "dvo.h"
+
+void CopyAverageToTiny (AverageTiny *averageT, Average *average) {
+  averageT[0].R     	    = average[0].R;
+  averageT[0].D     	    = average[0].D;
+  averageT[0].flags 	    = average[0].flags;
+  averageT[0].Nmeasure      = average[0].Nmeasure;
+  averageT[0].measureOffset = average[0].measureOffset;
+  averageT[0].catID         = average[0].catID;
+  return;
+}
+
+void CopyMeasureToTiny (MeasureTiny *measureT, Measure *measure) {
+  measureT[0].dR         = measure[0].dR;
+  measureT[0].dD         = measure[0].dD;
+  measureT[0].M          = measure[0].M;
+  measureT[0].Mcal       = measure[0].Mcal;
+  measureT[0].dM         = measure[0].dM;
+  measureT[0].airmass    = measure[0].airmass;
+  measureT[0].Xccd       = measure[0].Xccd;
+  measureT[0].Yccd       = measure[0].Yccd;
+  measureT[0].t          = measure[0].t;
+  measureT[0].dt         = measure[0].dt;
+  measureT[0].averef     = measure[0].averef;
+  measureT[0].imageID    = measure[0].imageID;
+  measureT[0].dbFlags    = measure[0].dbFlags;
+  measureT[0].photFlags  = measure[0].photFlags;
+  measureT[0].photcode   = measure[0].photcode;
+  measureT[0].catID      = measure[0].catID;
+  measureT[0].dXccd      = measure[0].dXccd;
+  measureT[0].dYccd      = measure[0].dYccd;
+  measureT[0].dRsys      = measure[0].dRsys;
+  return ;
+}
+
+// for the cases where we are not using a subset of the data, we still need to have a copy of these fields
+int populate_tiny_values (Catalog *catalog, DVOTinyValueMode mode) {
+
+  off_t i;
+
+  AverageTiny *averageT;
+  Average *average;
+
+  MeasureTiny *measureT;
+  Measure *measure;
+
+  if (mode & DVO_TV_AVERAGE) {
+    ALLOCATE (catalog[0].averageT, AverageTiny, catalog[0].Naverage);
+    average  = catalog[0].average;
+    averageT = catalog[0].averageT;
+
+    for (i = 0; i < catalog[0].Naverage; i++) {
+      CopyAverageToTiny (&catalog[0].averageT[i], &catalog[0].average[i]);
+    }
+  }
+
+  if (mode & DVO_TV_MEASURE) {
+    ALLOCATE (catalog[0].measureT, MeasureTiny, catalog[0].Nmeasure);
+    measure  = catalog[0].measure;
+    measureT = catalog[0].measureT;
+
+    for (i = 0; i < catalog[0].Nmeasure; i++) {
+      CopyMeasureToTiny (&catalog[0].measureT[i], &catalog[0].measure[i]);
+    }
+  }
+  return (TRUE);
+}
+
+int free_tiny_values (Catalog *catalog) {
+
+  if (catalog[0].averageT) free (catalog[0].averageT);
+  if (catalog[0].measureT) free (catalog[0].measureT);
+  return (TRUE);
+}
+
