1 #ifndef _MYENDIAN_H
2 #define _MYENDIAN_H
3 /* endian.h */
4 /*****************************************************************************/
5 /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
6 /*                                                                           */
7 /* AS-Portierung                                                             */
8 /*                                                                           */
9 /* Little/Big-Endian-Routinen                                                */
10 /*                                                                           */
11 /* Historie: 30. 5.1996 Grundsteinlegung                                     */
12 /*            6. 7.1997 Dec32BlankString dazu                                */
13 /*            1. 6.2000 added LargeHIntFormat                                */
14 /*            7. 7.2000 added memory read/write functions                    */
15 /*                                                                           */
16 /*****************************************************************************/
17 
18 #include "datatypes.h"
19 
20 extern Boolean BigEndian;
21 
22 extern const char *Integ16Format, *Integ32Format, *Integ64Format;
23 extern const char *IntegerFormat, *LongIntFormat, *QuadIntFormat;
24 extern const char *LargeIntFormat, *LargeHIntFormat;
25 
26 
27 extern void WSwap(void *Field, int Cnt);
28 
29 extern void DSwap(void *Field, int Cnt);
30 
31 extern void QSwap(void *Field, int Cnt);
32 
33 extern void TSwap(void *Field, int Cnt);
34 
35 extern void DWSwap(void *Field, int Cnt);
36 
37 extern void QWSwap(void *Field, int Cnt);
38 
39 
40 extern Boolean Read2(FILE *file, void *Ptr);
41 
42 extern Boolean Read4(FILE *file, void *Ptr);
43 
44 extern Boolean Read8(FILE *file, void *Ptr);
45 
46 
47 extern Boolean Write2(FILE *file, void *Ptr);
48 
49 extern Boolean Write4(FILE *file, void *Ptr);
50 
51 extern Boolean Write8(FILE *file, void *Ptr);
52 
53 #define MRead1L(Buffer) (*((Byte *)(Buffer)))
54 
55 #define MRead1B(Buffer) (*((Byte *)(Buffer)))
56 
57 extern Word MRead2L(Byte *Buffer);
58 
59 extern Word MRead2B(Byte *Buffer);
60 
61 #define MWrite1L(Buffer, Value) (*((Byte*) (Buffer))) = Value;
62 
63 #define MWrite1B(Buffer, Value) (*((Byte*) (Buffer))) = Value;
64 
65 extern void MWrite2L(Byte *Buffer, Word Value);
66 
67 extern void MWrite2B(Byte *Buffer, Word Value);
68 
69 extern LongWord MRead4L(Byte *Buffer);
70 
71 extern LongWord MRead4B(Byte *Buffer);
72 
73 extern void MWrite4L(Byte *Buffer, LongWord Value);
74 
75 extern void MWrite4B(Byte *Buffer, LongWord Value);
76 
77 #ifdef HAS64
78 extern QuadWord MRead8L(Byte *Buffer);
79 
80 extern QuadWord MRead8B(Byte *Buffer);
81 
82 extern void MWrite8L(Byte *Buffer, QuadWord Value);
83 
84 extern void MWrite8B(Byte *Buffer, QuadWord Value);
85 #endif
86 
87 extern void endian_init(void);
88 #endif /* _MYENDIAN_H */
89