#ifndef PS_ADDITIONALS_H
#define PS_ADDITIONALS_H

#include "pslib.h"

// Deep copy of metadata
psMetadata *pap_psMetadataCopy(psMetadata *out, const psMetadata *in);

// Get a value from the metadata that we believe should be metadata.
psMetadata *psMetadataLookupMD(bool *status, const psMetadata *md, const char *key);

// Get a value from the metadata that we believe should be a string
char *psMetadataLookupString(bool *status, const psMetadata *md, const char *key);

#if 0
pmChip *psMetadataLookupChip(bool *status, const psMetadata *md, const char *key);
pmCell *psMetadataLookupCell(bool *status, const psMetadata *md, const char *key);
#endif

// Print out the metadata
void psMetadataPrint(psMetadata *md, int level);

// Argument handling
int psArgumentVerbosity(int *argc, char **argv);
int psArgumentGet(int argc, char **argv, const char *arg);
bool psArgumentRemove(int argnum, int *argc, char **argv);
bool psArgumentParse(psMetadata *arguments, int *argc, char **argv);
void psArgumentHelp(psMetadata *arguments);

#endif
