]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/datstrm.h
Define WXBUILDING in Xcode projects.
[wxWidgets.git] / include / wx / datstrm.h
index 362f3b4c916f8dcb3fdab432d09a4592972ee192..3a6136fe4b22903e6d53562bde3b9bc4e32db03f 100644 (file)
@@ -24,6 +24,28 @@ class WXDLLIMPEXP_BASE wxDataStreamBase
 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; }
@@ -38,6 +60,10 @@ protected:
 
     bool m_be_order;
 
+#if wxUSE_APPLE_IEEE
+    bool m_useExtendedPrecision;
+#endif // wxUSE_APPLE_IEEE
+
 #if wxUSE_UNICODE
     wxMBConv *m_conv;
 #endif
@@ -63,6 +89,7 @@ public:
     wxUint16 Read16();
     wxUint8 Read8();
     double ReadDouble();
+    float ReadFloat();
     wxString ReadString();
 
 #if wxHAS_INT64
@@ -81,6 +108,7 @@ public:
     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);
@@ -125,6 +153,7 @@ public:
     void Write16(wxUint16 i);
     void Write8(wxUint8 i);
     void WriteDouble(double d);
+    void WriteFloat(float f);
     void WriteString(const wxString& string);
 
 #if wxHAS_INT64
@@ -143,6 +172,7 @@ public:
     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);