2 * $Id: byte_manager.h 44 2011-02-15 12:32:29Z kaori $
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_
34 //! 1Byte parameter type
35 typedef unsigned char Byte_t;
37 //! 2Byte parameter type
38 typedef unsigned short int Byte2_t;
40 //! 4Byte parameter type
41 typedef unsigned int Byte4_t;
43 //! 8Byte parameter type
44 typedef unsigned long long int Byte8_t;
48 * fetch bytes of data in file stream
50 * @param[in] fd file discriptor
51 * @param[in] offset start Byte position
52 * @param[in] size Byte length
53 * @return pointer to the fetched data
55 Byte_t * fetch_bytes( int fd, long offset, int size);
59 * fetch a 1-byte Byte codes in file stream
61 * @param[in] fd file discriptor
62 * @param[in] offset start Byte position
63 * @return fetched codes
65 Byte_t fetch_1byte( int fd, long offset);
68 * fetch a 2-byte big endian Byte codes in file stream
70 * @param[in] fd file discriptor
71 * @param[in] offset start Byte position
72 * @return fetched codes
74 Byte2_t fetch_2bytebigendian( int fd, long offset);
77 * fetch a 4-byte big endian Byte codes in file stream
79 * @param[in] fd file discriptor
80 * @param[in] offset start Byte position
81 * @return fetched codes
83 Byte4_t fetch_4bytebigendian( int fd, long offset);
86 * fetch a 8-byte big endian Byte codes in file stream
88 * @param[in] fd file discriptor
89 * @param[in] offset start Byte position
90 * @return fetched codes
92 Byte8_t fetch_8bytebigendian( int fd, long offset);
96 * convert 2-byte big endian Byte codes to number
98 * @param[in] buf Byte codes
99 * @return resolved number
101 Byte2_t big2( Byte_t *buf);
104 * convert 4-byte big endian Byte codes to number
106 * @param[in] buf Byte codes
107 * @return resolved number
109 Byte4_t big4( Byte_t *buf);
112 * convert 8-byte big endian Byte codes to number
114 * @param[in] buf Byte codes
115 * @return resolved number
117 Byte8_t big8( Byte_t *buf);
120 #endif /* !BYTE_MANAGER_H_ */