1 /*****************************************************************************/
2 /*                                                                           */
3 /*                                  CPUCVT.H                                 */
4 /*                                                                           */
5 /* (C) 1993-95  Ullrich von Bassewitz                                        */
6 /*              Zwehrenbuehlstrasse 33                                       */
7 /*              D-72070 Tuebingen                                            */
8 /* EMail:       uz@ibb.schwaben.com                                          */
9 /*                                                                           */
10 /*****************************************************************************/
11 
12 
13 
14 // $Id$
15 //
16 // $Log$
17 //
18 //
19 
20 
21 
22 // This file contains code to convert to and from little endian data types
23 // into the native format.
24 
25 
26 
27 #ifndef __CPUCVT_H
28 #define __CPUCVT_H
29 
30 
31 
32 #include "machine.h"
33 
34 
35 
36 /*****************************************************************************/
37 /*                                   Types                                   */
38 /*****************************************************************************/
39 
40 
41 
42 union _double {
43     double      F;
44     u32         I [2];
45 };
46 
47 
48 
49 /*****************************************************************************/
50 /*                                   Code                                    */
51 /*****************************************************************************/
52 
53 
54 
55 #ifdef CPU_LITTLE_ENDIAN
56 
57 // We already have little endian format, inline no-op functions
ToLittleEndian(i16 &)58 inline void ToLittleEndian (i16&) { }
ToLittleEndian(i32 &)59 inline void ToLittleEndian (i32&) { }
ToLittleEndian(u16 &)60 inline void ToLittleEndian (u16&) { }
ToLittleEndian(u32 &)61 inline void ToLittleEndian (u32&) { }
ToLittleEndian(_double &)62 inline void ToLittleEndian (_double&) { }
63 
FromLittleEndian(i16 &)64 inline void FromLittleEndian (i16&) { }
FromLittleEndian(i32 &)65 inline void FromLittleEndian (i32&) { }
FromLittleEndian(u16 &)66 inline void FromLittleEndian (u16&) { }
FromLittleEndian(u32 &)67 inline void FromLittleEndian (u32&) { }
FromLittleEndian(_double &)68 inline void FromLittleEndian (_double&) { }
69 
70 #else
71 
72 // We have to convert
73 void ToLittleEndian (i16& X);
74 void ToLittleEndian (i32& X);
75 void ToLittleEndian (u16& X);
76 void ToLittleEndian (u32& X);
77 void ToLittleEndian (_double& X);
78 
79 void FromLittleEndian (i16& X);
80 void FromLittleEndian (i32& X);
81 void FromLittleEndian (u16& X);
82 void FromLittleEndian (u32& X);
83 void FromLittleEndian (_double& X);
84 
85 #endif
86 
87 
88 
89 // End of CPUCVT.H
90 
91 #endif
92 
93