public:
void BigEndianOrdered(bool be_order) { m_be_order = be_order; }
+ // By default we use extended precision (80 bit) format for both float and
+ // doubles. Call this function to switch to alternative representation in
+ // which IEEE 754 single precision (32 bits) is used for floats and double
+ // precision (64 bits) is used for doubles.
+ void UseBasicPrecisions()
+ {
+#if wxUSE_APPLE_IEEE
+ m_useExtendedPrecision = false;
+#endif // wxUSE_APPLE_IEEE
+ }
+
+ // UseExtendedPrecision() is not very useful as it corresponds to the
+ // default value, only call it in your code if you want the compilation
+ // fail with the error when using wxWidgets library compiled without
+ // extended precision support.
+#if wxUSE_APPLE_IEEE
+ void UseExtendedPrecision()
+ {
+ m_useExtendedPrecision = true;
+ }
+#endif // wxUSE_APPLE_IEEE
+
#if wxUSE_UNICODE
void SetConv( const wxMBConv &conv );
wxMBConv *GetConv() const { return m_conv; }
bool m_be_order;
+#if wxUSE_APPLE_IEEE
+ bool m_useExtendedPrecision;
+#endif // wxUSE_APPLE_IEEE
+
#if wxUSE_UNICODE
wxMBConv *m_conv;
#endif
wxUint16 Read16();
wxUint8 Read8();
double ReadDouble();
+ float ReadFloat();
wxString ReadString();
#if wxHAS_INT64
void Read16(wxUint16 *buffer, size_t size);
void Read8(wxUint8 *buffer, size_t size);
void ReadDouble(double *buffer, size_t size);
+ void ReadFloat(float *buffer, size_t size);
wxDataInputStream& operator>>(wxString& s);
wxDataInputStream& operator>>(wxInt8& c);
void Write16(wxUint16 i);
void Write8(wxUint8 i);
void WriteDouble(double d);
+ void WriteFloat(float f);
void WriteString(const wxString& string);
#if wxHAS_INT64
void Write16(const wxUint16 *buffer, size_t size);
void Write8(const wxUint8 *buffer, size_t size);
void WriteDouble(const double *buffer, size_t size);
+ void WriteFloat(const float *buffer, size_t size);
wxDataOutputStream& operator<<(const wxString& string);
wxDataOutputStream& operator<<(wxInt8 c);