+// ----------------------------------------------------------------------------
+// wxDataFormat identifies the single format of data
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxDataFormat
+{
+public:
+ // the clipboard formats under Win32 are UINTs
+ typedef unsigned int NativeFormat;
+
+ wxDataFormat(NativeFormat format = wxDF_INVALID) { m_format = format; }
+ wxDataFormat& operator=(NativeFormat format)
+ { m_format = format; return *this; }
+
+ // defautl copy ctor/assignment operators ok
+
+ // comparison (must have both versions)
+ bool operator==(wxDataFormatId format) const
+ { return m_format == (NativeFormat)format; }
+ bool operator!=(wxDataFormatId format) const
+ { return m_format != (NativeFormat)format; }
+ bool operator==(const wxDataFormat& format) const
+ { return m_format == format.m_format; }
+ bool operator!=(const wxDataFormat& format) const
+ { return m_format != format.m_format; }
+
+ // explicit and implicit conversions to NativeFormat which is one of
+ // standard data types (implicit conversion is useful for preserving the
+ // compatibility with old code)
+ NativeFormat GetFormatId() const { return m_format; }
+ operator NativeFormat() const { return m_format; }
+
+ // this only works with standard ids
+ void SetId(wxDataFormatId format) { m_format = format; }
+
+ // string ids are used for custom types - this SetId() must be used for
+ // application-specific formats
+ wxString GetId() const;
+ void SetId(const wxChar *format);
+
+private:
+ // returns TRUE if the format is one of those defined in wxDataFormatId
+ bool IsStandard() const { return m_format > 0 && m_format < wxDF_MAX; }
+
+ NativeFormat m_format;
+};
+