Fix some typos (found by codespell)
[openjpeg.git] / src / lib / openjpip / metadata_manager.h
1 /*
2  * $Id$
3  *
4  * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium
5  * Copyright (c) 2002-2014, Professor Benoit Macq
6  * Copyright (c) 2010-2011, Kaori Hagihara
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #ifndef     METADATA_MANAGER_H_
32 #define     METADATA_MANAGER_H_
33
34 #include "box_manager.h"
35 #include "placeholder_manager.h"
36
37 typedef struct boxcontents_param {
38     OPJ_OFF_T offset; /**< byte position of the box contents in the file*/
39     Byte8_t length; /**< length of the box contents*/
40 } boxcontents_param_t;
41
42 /** metadata-bin parameters*/
43 typedef struct metadata_param {
44     Byte8_t idx;                                  /**< index number*/
45     boxlist_param_t *boxlist;                 /**< box list*/
46     placeholderlist_param_t *placeholderlist; /**< placeholder box list*/
47     boxcontents_param_t
48     *boxcontents;         /**< box contents in case of no boxlist and placeholderlist*/
49     struct metadata_param
50         *next;              /**< pointer to the next metadata-bin*/
51 } metadata_param_t;
52
53 /** metadata-bin list parameters*/
54 typedef struct metadatalist_param {
55     metadata_param_t *first; /**< first metadata-bin pointer of the list*/
56     metadata_param_t *last;  /**< last metadata-bin pointer of the list*/
57 } metadatalist_param_t;
58
59
60 /**
61  * generate a metadata list
62  *
63  * @return pointer to the generated metadata list
64  */
65 metadatalist_param_t * gene_metadatalist(void);
66
67
68 /**
69  * construct metadata-bin list of JP2 file
70  *
71  * @param[in] fd file descriptor
72  * @return            pointer to the generated metadata-bin list
73  */
74 metadatalist_param_t * const_metadatalist(int fd);
75
76
77 /**
78  * delete metadata list
79  *
80  * @param[in,out] list address of the metadata list pointer
81  */
82 void delete_metadatalist(metadatalist_param_t **list);
83
84
85 /**
86  * generate a metadata bin
87  *
88  * @param[in] idx         metadata-bin index
89  * @param[in] boxlist     box list pointer
90  * @param[in] phldlist    placeholder list pointer
91  * @param[in] boxcontents boxcontents pointer
92  * @return                pointer to the generated metadata bin
93  */
94 metadata_param_t * gene_metadata(Byte8_t idx, boxlist_param_t *boxlist,
95                                  placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents);
96
97 /**
98  * delete a metadata bin
99  *
100  * @param[in,out] metadata address of the deleting metadata bin pointer
101  */
102 void delete_metadata(metadata_param_t **metadata);
103
104 /**
105  * generate box contents
106  *
107  * @return pointer to the box contents
108  */
109 boxcontents_param_t * gene_boxcontents(OPJ_OFF_T offset, OPJ_SIZE_T length);
110
111 /**
112  * print metadata-bin parameters
113  *
114  * @param[in] metadata metadata-bin pointer
115  */
116 void print_metadata(metadata_param_t *metadata);
117
118 /**
119  * print all metadata parameters
120  *
121  * @param[in] list metadata list pointer
122  */
123 void print_allmetadata(metadatalist_param_t *list);
124
125
126 /**
127  * search a metadata bin by index
128  *
129  * @param[in] idx  index
130  * @param[in] list metadata-bin list pointer
131  * @return         found metadata-bin pointer
132  */
133 metadata_param_t * search_metadata(Byte8_t idx, metadatalist_param_t *list);
134
135
136 /**
137  * search a metadata index by box-type
138  *
139  * @param[in] boxtype box-type
140  * @param[in] list    metadata-bin list pointer
141  * @return            found metadata-bin index, if not found, -1
142  */
143 Byte8_t search_metadataidx(char boxtype[4], metadatalist_param_t *list);
144
145
146 /**
147  * insert a metadata-bin into list
148  *
149  * @param[in] metabin      metadata-bin pointer
150  * @param[in] metadatalist metadata list pointer
151  */
152 void insert_metadata_into_list(metadata_param_t *metabin,
153                                metadatalist_param_t *metadatalist);
154
155 #endif      /* !METADATA_MANAGER_H_ */