Avoided ABI breakage
[openjpeg.git] / indexer_JPIP / tgt.h
1 /*
2  * Copyright (c) 2001-2002, David Janssens
3  * Copyright (c) 2003, Yannick Verschueren
4  * Copyright (c) 2003,  Communications and remote sensing Laboratory, Universite catholique de Louvain, Belgium
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26  * POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #ifndef __TGT_H
30 #define __TGT_H
31
32 typedef struct tgt_node {
33         struct tgt_node *parent;
34         int value;
35         int low;
36         int known;
37 } tgt_node_t;
38
39 typedef struct {
40         int numleafsh;
41         int numleafsv;
42         int numnodes;
43         tgt_node_t *nodes;
44 } tgt_tree_t;
45
46 /*
47  * Create a tag-tree
48  * numleafsh: width of the array of leafs of the tree
49  * numleafsv: height of the array of leafs of the tree
50  */
51 tgt_tree_t *tgt_create(int numleafsh, int numleafsv);
52
53 /*
54  * Reset a tag-tree (set all leafs to 0)
55  * tree: tag-tree to reset
56  */
57 void tgt_reset(tgt_tree_t *tree);
58
59 /*
60  * Destroy a tag-tree, liberating memory
61  * tree: tag-tree to destroy
62  */
63 void tgt_destroy(tgt_tree_t *tree);
64
65 /*
66  * Set the value of a leaf of a tag-tree
67  * tree: tag-tree to modify
68  * leafno: number that identifies the leaf to modify
69  * value: new value of the leaf
70  */
71 void tgt_setvalue(tgt_tree_t *tree, int leafno, int value);
72
73 /*
74  * Decode the value of a leaf of the tag-tree up to a given threshold
75  * leafno: number that identifies the leaf to decode
76  * threshold: threshold to use when decoding value of the leaf
77  */
78 int tgt_decode(tgt_tree_t *tree, int leafno, int threshold);
79
80 #endif