00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if !defined (octave_mach_info_h)
00025 #define octave_mach_info_h 1
00026
00027 #include <string>
00028
00029 class
00030 OCTAVE_API
00031 oct_mach_info
00032 {
00033 protected:
00034
00035 oct_mach_info (void);
00036
00037 public:
00038
00039 enum float_format
00040 {
00041 flt_fmt_unknown,
00042 flt_fmt_ieee_little_endian,
00043 flt_fmt_ieee_big_endian,
00044 flt_fmt_vax_d,
00045 flt_fmt_vax_g,
00046 flt_fmt_cray
00047 };
00048
00049 static bool instance_ok (void);
00050
00051 static float_format native_float_format (void);
00052
00053 static bool words_big_endian (void);
00054
00055 static bool words_little_endian (void);
00056
00057 static float_format string_to_float_format (const std::string&);
00058
00059 static std::string float_format_as_string (float_format);
00060
00061 private:
00062
00063 static oct_mach_info *instance;
00064
00065 void init_float_format (void) const;
00066
00067 void ten_little_endians (void) const;
00068
00069
00070 mutable float_format native_float_fmt;
00071
00072
00073 mutable bool big_chief;
00074
00075
00076
00077 oct_mach_info (const oct_mach_info&);
00078
00079 oct_mach_info& operator = (const oct_mach_info&);
00080 };
00081
00082 #endif
00083
00084
00085
00086
00087
00088