Index: trunk/ippdb/src/ippdb.h
===================================================================
--- trunk/ippdb/src/ippdb.h	(revision 8228)
+++ trunk/ippdb/src/ippdb.h	(revision 8266)
@@ -286,4 +286,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an weather
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool weatherDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const weatherRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -500,4 +512,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an skyp_transparency
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool skyp_transparencyDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const skyp_transparencyRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -724,4 +748,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an skyp_absorption
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool skyp_absorptionDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const skyp_absorptionRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -934,4 +970,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an skyp_emission
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool skyp_emissionDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const skyp_emissionRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -1150,4 +1198,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an dimm
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool dimmDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const dimmRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -1361,4 +1421,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an skyp_ir
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool skyp_irDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const skyp_irRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -1563,4 +1635,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an dome
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool domeDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const domeRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -1771,4 +1855,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an telescope
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool telescopeDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const telescopeRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -1978,4 +2074,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an summitExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool summitExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const summitExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -2184,4 +2292,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an pzPendingExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool pzPendingExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const pzPendingExpRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -2396,4 +2516,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an pzPendingImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool pzPendingImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const pzPendingImfileRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -2603,4 +2735,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an newExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool newExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const newExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -2805,4 +2949,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an newImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool newImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const newImfileRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -3037,4 +3193,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an rawDetrendExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool rawDetrendExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const rawDetrendExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -3267,4 +3435,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an rawScienceExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool rawScienceExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const rawScienceExpRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -3519,4 +3699,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an rawImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool rawImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const rawImfileRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -3757,4 +3949,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an p1PendingExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p1PendingExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p1PendingExpRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -4001,4 +4205,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an p2PendingExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p2PendingExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p2PendingExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -4211,4 +4427,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an p2PendingImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p2PendingImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p2PendingImfileRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -4455,4 +4683,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an p2DoneExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p2DoneExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p2DoneExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -4665,4 +4905,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an p2DoneImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p2DoneImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p2DoneImfileRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -4905,4 +5157,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an p3PendingExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool p3PendingExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const p3PendingExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -5099,4 +5363,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an detRun
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detRunDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detRunRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -5339,4 +5615,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detInputExp
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detInputExpDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detInputExpRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -5546,4 +5834,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detProcessedImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detProcessedImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detProcessedImfileRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -5753,4 +6053,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detStackedImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detStackedImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detStackedImfileRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -5960,4 +6272,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detNormalizedImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detNormalizedImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detNormalizedImfileRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -6158,4 +6482,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an detMasterFrame
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detMasterFrameDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detMasterFrameRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -6361,4 +6697,16 @@
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an detMasterImfile
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detMasterImfileDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detMasterImfileRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -6581,4 +6929,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detResidImfileAnalysis
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detResidImfileAnalysisDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detResidImfileAnalysisRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
@@ -6617,4 +6977,5 @@
     char            *exp_id;
     char            *recipe;
+    bool            keep;
     bool            accept;
 } detResidExpAnalysisRow;
@@ -6630,4 +6991,5 @@
     const char      *exp_id,
     const char      *recipe,
+    bool            keep,
     bool            accept
 );
@@ -6664,4 +7026,5 @@
     const char      *exp_id,
     const char      *recipe,
+    bool            keep,
     bool            accept
 );
@@ -6689,4 +7052,5 @@
     char            **exp_id,
     char            **recipe,
+    bool            *keep,
     bool            *accept
 );
@@ -6788,4 +7152,16 @@
     unsigned long long limit            ///< Maximum number of elements to return
 );
+/** Deletes a row from the database coresponding to an detResidExpAnalysis
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool detResidExpAnalysisDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const detResidExpAnalysisRow *object    ///< Object to delete
+);
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
  *
