4 * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
5 * Copyright (c) 2002-2011, Professor Benoit Macq
6 * Copyright (c) 2010-2011, Kaori Hagihara
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
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.
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.
31 #ifndef BYTE_MANAGER_H_
32 #define BYTE_MANAGER_H_
36 #include "opj_stdint.h"
37 typedef uint8_t Byte_t;
38 typedef uint16_t Byte2_t;
39 typedef uint32_t Byte4_t;
40 typedef uint64_t Byte8_t;
43 * fetch bytes of data in file stream
45 * @param[in] fd file discriptor
46 * @param[in] offset start Byte position
47 * @param[in] size Byte length
48 * @return pointer to the fetched data
50 Byte_t * fetch_bytes( int fd, OPJ_OFF_T offset, OPJ_SIZE_T size);
54 * fetch a 1-byte Byte codes in file stream
56 * @param[in] fd file discriptor
57 * @param[in] offset start Byte position
58 * @return fetched codes
60 Byte_t fetch_1byte( int fd, OPJ_OFF_T offset);
63 * fetch a 2-byte big endian Byte codes in file stream
65 * @param[in] fd file discriptor
66 * @param[in] offset start Byte position
67 * @return fetched codes
69 Byte2_t fetch_2bytebigendian( int fd, OPJ_OFF_T offset);
72 * fetch a 4-byte big endian Byte codes in file stream
74 * @param[in] fd file discriptor
75 * @param[in] offset start Byte position
76 * @return fetched codes
78 Byte4_t fetch_4bytebigendian( int fd, OPJ_OFF_T offset);
81 * fetch a 8-byte big endian Byte codes in file stream
83 * @param[in] fd file discriptor
84 * @param[in] offset start Byte position
85 * @return fetched codes
87 Byte8_t fetch_8bytebigendian( int fd, OPJ_OFF_T offset);
91 * convert 2-byte big endian Byte codes to number
93 * @param[in] buf Byte codes
94 * @return resolved number
96 Byte2_t big2( Byte_t *buf);
99 * convert 4-byte big endian Byte codes to number
101 * @param[in] buf Byte codes
102 * @return resolved number
104 Byte4_t big4( Byte_t *buf);
107 * convert 8-byte big endian Byte codes to number
109 * @param[in] buf Byte codes
110 * @return resolved number
112 Byte8_t big8( Byte_t *buf);
115 * modify 4Byte code in a codestream
117 * @param[in] code code value
118 * @param[out] stream modifying codestream
120 void modify_4Bytecode( Byte4_t code, Byte_t *stream);
125 * @param[in] fd file discriptor
128 OPJ_OFF_T get_filesize( int fd);
130 #endif /* !BYTE_MANAGER_H_ */