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