add examples/metadata.c

relocates the static functions from metadata.h and adds MetadataCopy()
to the interface

Change-Id: I28bfa9233d3dd70dddf6b561fe0bf4be378db1ec
This commit is contained in:
James Zern
2012-12-11 13:55:31 -08:00
parent 207f89c0dc
commit 6bf208748c
5 changed files with 56 additions and 15 deletions

View File

@@ -30,21 +30,13 @@ typedef struct Metadata {
#define METADATA_OFFSET(x) offsetof(Metadata, x)
static void MetadataInit(Metadata* const m) {
memset(m, 0, sizeof(*m));
}
void MetadataInit(Metadata* const metadata);
void MetadataPayloadDelete(MetadataPayload* const payload);
void MetadataFree(Metadata* const metadata);
static void MetadataPayloadDelete(MetadataPayload* const payload) {
free(payload->bytes);
payload->bytes = NULL;
payload->size = 0;
}
static void MetadataFree(Metadata* const m) {
MetadataPayloadDelete(&m->exif);
MetadataPayloadDelete(&m->iccp);
MetadataPayloadDelete(&m->xmp);
}
// Stores 'metadata' to 'payload->bytes', returns false on allocation error.
int MetadataCopy(const char* metadata, size_t metadata_len,
MetadataPayload* const payload);
#if defined(__cplusplus) || defined(c_plusplus)
} // extern "C"