]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/buffer.h
added WX_ASSERT_MESSAGE macro to simply using CPPUNIT_ASSERT_MESSAGE with wxString...
[wxWidgets.git] / include / wx / buffer.h
index 6d50b2a0a9035ac69bb4d9e46727b04a1653580d..81a445afe57bbc98a9c03039efdc37075691eeeb 100644 (file)
 #define _WX_BUFFER_H
 
 #include "wx/chartype.h"
-#include "wx/wxcrt.h"
+#include "wx/wxcrtbase.h"
 
 #include <stdlib.h>             // malloc() and free()
 
-class WXDLLIMPEXP_BASE wxCStrData;
-
-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_FWD_BASE wxCStrData;
 
 // ----------------------------------------------------------------------------
 // Special classes for (wide) character strings: they use malloc/free instead
@@ -30,13 +25,13 @@ inline char *wxStrDup(const char *s) { return wxStrdupA(s); }
 // ----------------------------------------------------------------------------
 
 template <typename T>
-class wxCharTypeBuffer
+class WXDLLIMPEXP_BASE wxCharTypeBuffer
 {
 public:
     typedef T CharType;
 
     wxCharTypeBuffer(const CharType *str = NULL)
-        : m_str(str ? wxStrDup(str) : NULL),
+        : m_str(str ? wxStrdup(str) : NULL),
           m_owned(true)
     {
     }
@@ -103,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;
     }
@@ -155,6 +150,8 @@ private:
     bool m_owned;
 };
 
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<char> )
+
 class WXDLLIMPEXP_BASE wxCharBuffer : public wxCharTypeBuffer<char>
 {
 public:
@@ -170,6 +167,8 @@ public:
 };
 
 #if wxUSE_WCHAR_T
+WXDLLIMPEXP_TEMPLATE_INSTANCE_BASE( wxCharTypeBuffer<wchar_t> )
+
 class WXDLLIMPEXP_BASE wxWCharBuffer : public wxCharTypeBuffer<wchar_t>
 {
 public:
@@ -227,6 +226,13 @@ typedef wxWritableCharTypeBuffer<wchar_t> wxWritableWCharBuffer;
     #define wxWX2WCbuf wxWCharBuffer
 #endif // Unicode/ANSI
 
+// type of the value returned by wxString::utf8_str()
+#if wxUSE_UNICODE_UTF8
+    #define wxUTF8Buf char *
+#else
+    #define wxUTF8Buf wxCharBuffer
+#endif
+
 // ----------------------------------------------------------------------------
 // A class for holding growable data buffers (not necessarily strings)
 // ----------------------------------------------------------------------------
@@ -289,7 +295,7 @@ private:
 };
 
 
-class wxMemoryBuffer
+class WXDLLIMPEXP_BASE wxMemoryBuffer
 {
 public:
     // ctor and dtor