1548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* exif-mnote-data-priv.h
2548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
3548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Copyright (c) 2003 Lutz Mueller <lutz@users.sourceforge.net>
4548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
5548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is free software; you can redistribute it and/or
6548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * modify it under the terms of the GNU Lesser General Public
7548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License as published by the Free Software Foundation; either
8548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * version 2 of the License, or (at your option) any later version.
9548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
10548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is distributed in the hope that it will be useful,
11548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * but WITHOUT ANY WARRANTY; without even the implied warranty of
12548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Lesser General Public License for more details.
14548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
15548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * You should have received a copy of the GNU Lesser General Public
16548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License along with this library; if not, write to the
17548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Boston, MA  02110-1301  USA.
19548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */
20548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
21548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef __EXIF_MNOTE_DATA_PRIV_H__
22548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define __EXIF_MNOTE_DATA_PRIV_H__
23548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
24548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus
25548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern "C" {
26548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __cplusplus */
27548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
28548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-mnote-data.h>
29548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-byte-order.h>
30548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-log.h>
31548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
32548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
33548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef struct _ExifMnoteDataMethods ExifMnoteDataMethods;
34548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
35548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
36548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstruct _ExifMnoteDataMethods {
37548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
38548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* Life cycle */
39548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	void (* free) (ExifMnoteData *);
40548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
41548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* Modification */
42548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	void (* save) (ExifMnoteData *, unsigned char **, unsigned int *);
43548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	void (* load) (ExifMnoteData *, const unsigned char *, unsigned int);
44548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	void (* set_offset)     (ExifMnoteData *, unsigned int);
45548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	void (* set_byte_order) (ExifMnoteData *, ExifByteOrder);
46548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
47548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* Query */
48548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	unsigned int (* count)           (ExifMnoteData *);
49548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen        unsigned int (* get_id)          (ExifMnoteData *, unsigned int);
50548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	const char * (* get_name)        (ExifMnoteData *, unsigned int);
51548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	const char * (* get_title)       (ExifMnoteData *, unsigned int);
52548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	const char * (* get_description) (ExifMnoteData *, unsigned int);
53548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	char * (* get_value)             (ExifMnoteData *, unsigned int, char *val, unsigned int maxlen);
54548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen};
55548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
56548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
57548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef struct _ExifMnoteDataPriv ExifMnoteDataPriv;
58548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
59548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
60548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstruct _ExifMnoteData
61548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
62548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifMnoteDataPriv *priv;
63548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
64548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifMnoteDataMethods methods;
65548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
66548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* Logging */
67548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifLog *log;
68548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
69548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* Memory management */
70548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifMem *mem;
71548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen};
72548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
73548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
74548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid exif_mnote_data_construct      (ExifMnoteData *, ExifMem *mem);
75548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
76548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
77548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid exif_mnote_data_set_byte_order (ExifMnoteData *, ExifByteOrder);
78548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
79548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/*! \internal */
80548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid exif_mnote_data_set_offset     (ExifMnoteData *, unsigned int);
81548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
82548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus
83548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
84548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __cplusplus */
85548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
86548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* __EXIF_MNOTE_PRIV_H__ */
87