/[pearpc]/src/io/prom/fs/hfsplus/swab.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /src/io/prom/fs/hfsplus/swab.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 8 months ago) by dpavlin
File MIME type: text/plain
File size: 2315 byte(s)
import upstream CVS
1 dpavlin 1 /*
2     * libhfs - library for reading and writing Macintosh HFS volumes
3     *
4     * Copyright (C) 2000 Klaus Halfmann <klaus.halfmann@feri.de>
5     * Original work 1996-1998 Robert Leslie <rob@mars.org>
6     *
7     * This file defines some byte swapping function. I did not find this
8     * in any standard or linux way.
9     *
10     * This program is free software; you can redistribute it and/or modify
11     * it under the terms of the GNU General Public License as published by
12     * the Free Software Foundation; either version 2 of the License, or
13     * (at your option) any later version.
14     *
15     * This program is distributed in the hope that it will be useful,
16     * but WITHOUT ANY WARRANTY; without even the implied warranty of
17     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18     * GNU General Public License for more details.
19     *
20     * You should have received a copy of the GNU General Public License
21     * along with this program; if not, write to the Free Software
22     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23     *
24     */
25    
26     #include "tools/endianess.h"
27     #include "apple.h"
28    
29     /* basic fuction:
30     value = swab_inc(ptr);
31     ptr is afterwards incremented by sizeof(value)
32     */
33    
34     #define bswap_16(i) createHostInt(&(i), 2, big_endian)
35     #define bswap_32(i) createHostInt(&(i), 4, big_endian)
36     #define bswap_64(i) createHostInt64(&(i), 8, big_endian)
37    
38     #define bswabU16(val) bswap_16(val)
39    
40     static inline UInt8 bswabU8_inc(char **ptr)
41     {
42     UInt8 v = *(UInt8 *)*ptr;
43     *ptr += 1;
44     return v;
45     }
46    
47     static inline UInt16 bswabU16_inc(char **ptr)
48     {
49     UInt16 v = *(UInt16 *)*ptr;
50     *ptr += 2;
51     return bswap_16(v);
52     }
53    
54     static inline UInt32 bswabU32_inc(char **ptr)
55     {
56     UInt32 v = *(UInt32 *)*ptr;
57     *ptr += 4;
58     return bswap_32(v);
59     }
60    
61     static inline APPLEUInt64 bswabU64_inc(char **ptr)
62     {
63     APPLEUInt64 v = *(APPLEUInt64 *)*ptr;
64     *ptr += 8;
65     return bswap_64(v);
66     }
67    
68     static inline void bstoreU8_inc(char **ptr, UInt8 val)
69     {
70     UInt8 **p = (UInt8 **)ptr;
71     **p = val;
72     *ptr += 1;
73     }
74    
75     static inline void bstoreU16_inc(char **ptr, UInt16 val)
76     {
77     UInt16 **p = (UInt16 **)ptr;
78     **p = bswap_16(val);
79     *ptr += 2;
80     }
81    
82     static inline void bstoreU32_inc(char **ptr, UInt32 val)
83     {
84     UInt32 **p = (UInt32 **)ptr;
85     **p = bswap_32(val);
86     *ptr += 4;
87     }
88    
89     static inline void bstoreU64_inc(char **ptr, APPLEUInt64 val)
90     {
91     APPLEUInt64 **p = (APPLEUInt64 **)ptr;
92     **p = bswap_64(val);
93     *ptr += 8;
94     }
95    

  ViewVC Help
Powered by ViewVC 1.1.26