]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/buffer.h
added alpha channel support to wxDFB's wxBitmap
[wxWidgets.git] / include / wx / buffer.h
index c3d246e7fc46b18e5edc70260f2083c08dc859d0..8e7fd8dbb16e146f810ca11745d6831b0c3c09ad 100644 (file)
 #ifndef _WX_BUFFER_H
 #define _WX_BUFFER_H
 
-#include "wx/wxchar.h"
+#include "wx/chartype.h"
+#include "wx/wxcrtbase.h"
 
 #include <stdlib.h>             // malloc() and free()
 
-inline char *wxStrDup(const char *s) { return wxStrdupA(s); }
-#if wxUSE_WCHAR_T
-    inline wchar_t *wxStrDup(const wchar_t *ws) { return wxStrdupW(ws); }
-#endif
+class WXDLLIMPEXP_BASE wxCStrData;
 
 // ----------------------------------------------------------------------------
 // Special classes for (wide) character strings: they use malloc/free instead
@@ -33,7 +31,7 @@ public:
     typedef T CharType;
 
     wxCharTypeBuffer(const CharType *str = NULL)
-        : m_str(str ? wxStrDup(str) : NULL),
+        : m_str(str ? wxStrdup(str) : NULL),
           m_owned(true)
     {
     }
@@ -45,10 +43,10 @@ public:
         m_str[len] = (CharType)0;
     }
 
-    static wxCharTypeBuffer CreateNonOwned(const CharType *str)
+    static const wxCharTypeBuffer CreateNonOwned(const CharType *str)
     {
         wxCharTypeBuffer buf;
-        buf.m_str = str;
+        buf.m_str = wx_const_cast(CharType*, str);
         buf.m_owned = false;
         return buf;
     }
@@ -100,7 +98,7 @@ public:
     {
         if ( m_owned )
             free(m_str);
-        m_str = str ? wxStrDup(str) : NULL;
+        m_str = str ? wxStrdup(str) : NULL;
         m_owned = true;
         return *this;
     }
@@ -152,11 +150,14 @@ private:
     bool m_owned;
 };
 
-class WXDLLIMPEXP_BASE wxCharBuffer : public wxCharTypeBuffer<char>
+class wxCharBuffer : public wxCharTypeBuffer<char>
 {
 public:
     typedef wxCharTypeBuffer<char> wxCharTypeBufferBase;
 
+    wxCharBuffer(const wxCharTypeBufferBase& buf)
+        : wxCharTypeBufferBase(buf) {}
+
     wxCharBuffer(const CharType *str = NULL) : wxCharTypeBufferBase(str) {}
     wxCharBuffer(size_t len) : wxCharTypeBufferBase(len) {}
 
@@ -164,11 +165,14 @@ public:
 };
 
 #if wxUSE_WCHAR_T
-class WXDLLIMPEXP_BASE wxWCharBuffer : public wxCharTypeBuffer<wchar_t>
+class wxWCharBuffer : public wxCharTypeBuffer<wchar_t>
 {
 public:
     typedef wxCharTypeBuffer<wchar_t> wxCharTypeBufferBase;
 
+    wxWCharBuffer(const wxCharTypeBufferBase& buf)
+        : wxCharTypeBufferBase(buf) {}
+
     wxWCharBuffer(const CharType *str = NULL) : wxCharTypeBufferBase(str) {}
     wxWCharBuffer(size_t len) : wxCharTypeBufferBase(len) {}