+#ifndef _WX_COCOA_SOUND_H_
+#define _WX_COCOA_SOUND_H_
+
+#include "wx/object.h"
+#include "wx/cocoa/ObjcRef.h"
+
+class WXDLLEXPORT wxSound : public wxSoundBase
+{
+public:
+ wxSound()
+ : m_cocoaNSSound(NULL)
+ {}
+ wxSound(const wxString& fileName, bool isResource = false)
+ : m_cocoaNSSound(NULL)
+ { Create(fileName, isResource); }
+ wxSound(int size, const wxByte* data)
+ : m_cocoaNSSound(NULL)
+ { LoadWAV(data,size,true); }
+ wxSound(const wxSound& sound); // why not?
+ ~wxSound();
+
+public:
+ bool Create(const wxString& fileName, bool isResource = false);
+ bool IsOk() const
+ { return m_cocoaNSSound; }
+ static void Stop();
+ static bool IsPlaying();
+
+ void SetNSSound(WX_NSSound cocoaNSSound);
+ inline WX_NSSound GetNSSound()
+ { return m_cocoaNSSound; }
+protected:
+ bool DoPlay(unsigned flags) const;
+ bool LoadWAV(const wxUint8 *data, size_t length, bool copyData);
+private:
+ WX_NSSound m_cocoaNSSound;
+ static const wxObjcAutoRefFromAlloc<struct objc_object *> sm_cocoaDelegate;
+};
+
+#endif //ndef _WX_COCOA_SOUND_H_