#ifndef PM_CONCEPTS_READ_H
#define PM_CONCEPTS_READ_H

#include "pslib.h"
#include "pmFPA.h"

bool pmConceptsReadFromCamera(psMetadata *specs, // The concept specifications
                              pmCell *cell,  // The cell
                              psMetadata *target // Place into which to read the concepts
                             );
bool pmConceptsReadFromDefaults(psMetadata *specs, // The concept specifications
                                pmFPA *fpa, // The FPA
                                pmChip *chip, // The chip
                                pmCell *cell, // The cell
                                psMetadata *target // Place into which to read the concepts
                               );
bool pmConceptsReadFromHeader(psMetadata *specs, // The concept specifications
                              pmFPA *fpa, // The FPA
                              pmChip *chip, // The chip
                              pmCell *cell,  // The cell
                              psMetadata *target // Place into which to read the concepts
                             );
bool pmConceptsReadFromDatabase(psMetadata *specs, // The concept specifications
                                pmFPA *fpa, // The FPA
                                pmChip *chip, // The chip
                                pmCell *cell,  // The cell
                                psDB *db, // The database handle
                                psMetadata *target // Place into which to read the concepts
                               );




#ifdef OLD
psMetadataItem *pmConceptReadFromCamera(pmCell *cell, // The cell
                                        const char *concept // Name of concept
                                       );

psMetadataItem *pmConceptReadFromHeader(pmFPA *fpa, // The FPA that contains the chip
                                        pmChip *chip, // The chip that contains the cell
                                        pmCell *cell, // The cell
                                        const char *concept // Name of concept
                                       );

psMetadataItem *pmConceptReadFromDefault(pmFPA *fpa, // The FPA that contains the chip
        pmChip *chip, // The chip that contains the cell
        pmCell *cell, // The cell
        const char *concept // Name of concept
                                        );

psMetadataItem *pmConceptReadFromDB(pmFPA *fpa, // The FPA that contains the chip
                                    pmChip *chip, // The chip that contains the cell
                                    pmCell *cell, // The cell
                                    psDB *db, // DB handle
                                    const char *concept // Name of concept
                                   );

psMetadataItem *pmConceptRead(pmFPA *fpa, // The FPA
                              pmChip *chip,// The chip
                              pmCell *cell, // The cell
                              psDB *db, // DB handle
                              const char *concept // Concept name
                             );

float pmConceptReadF32(pmFPA *fpa,        // The FPA
                       pmChip *chip,      // The chip
                       pmCell *cell,      // The cell
                       psDB *db,          // DB handle
                       const char *name // Name of the concept
                      );

double pmConceptReadF64(pmFPA *fpa,   // The FPA
                        pmChip *chip, // The chip
                        pmCell *cell, // The cell
                        psDB *db,     // DB handle
                        const char *name // Name of the concept
                       );

int pmConceptReadS32(pmFPA *fpa,   // The FPA
                     pmChip *chip, // The chip
                     pmCell *cell, // The cell
                     psDB *db,     // DB handle
                     const char *name // Name of the concept
                    );

psString pmConceptReadString(pmFPA *fpa, // The FPA
                             pmChip *chip, // The chip
                             pmCell *cell, // The cell
                             psDB *db,  // DB handle
                             const char *name // Name of the concept
                            );
#endif

#endif
