Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (octave_sun_utils_h)
00024 #define octave_sun_utils_h 1
00025
00026
00027
00028
00029
00030
00031
00032 #if defined (__sparc) && defined (__GNUC__)
00033
00034 inline double
00035 access_double (double *unaligned_ptr)
00036 {
00037 union d2i { double d; int i[2]; };
00038
00039 union d2i *p = (union d2i *) unaligned_ptr;
00040 union d2i u;
00041
00042 u.i[0] = p->i[0];
00043 u.i[1] = p->i[1];
00044
00045 return u.d;
00046 }
00047
00048 inline void
00049 assign_double (double *unaligned_ptr, double value)
00050 {
00051 union d2i { double d; int i[2]; };
00052
00053 double *ptr = &value;
00054 union d2i *v = (union d2i *) ptr;
00055 union d2i *p = (union d2i *) unaligned_ptr;
00056
00057 p->i[0] = v->i[0];
00058 p->i[1] = v->i[1];
00059 }
00060
00061 #endif
00062 #endif