]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/buffer.h
87b05070225950cae2034eb811e08286d652f89f
   1 /////////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     auto buffer classes: buffers which automatically free memory 
   4 // Author:      Vadim Zeitlin 
   8 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr> 
   9 // Licence:     wxWindows license 
  10 /////////////////////////////////////////////////////////////////////////////// 
  12 // these classes are for private use only for now, they're not documented 
  17 #include <string.h> // strdup 
  18 #include <wchar.h>  // wchar_t 
  20 // ---------------------------------------------------------------------------- 
  21 // Special classes for (wide) character strings: they use malloc/free instead 
  23 // ---------------------------------------------------------------------------- 
  28     wxCharBuffer(const char *str
) 
  30         wxASSERT_MSG( str
, _T("NULL string in wxCharBuffer") ); 
  32         m_str 
= str 
? strdup(str
) : (char *)NULL
; 
  34     wxCharBuffer(size_t len
) 
  36         m_str 
= (char *)malloc(len
+1); 
  39     // no need to check for NULL, free() does it 
  40    ~wxCharBuffer() { free(m_str
); } 
  42    wxCharBuffer(const wxCharBuffer
& src
) 
  45      // no reference count yet... 
  46      ((wxCharBuffer
*)&src
)->m_str 
= (char *)NULL
; 
  48    wxCharBuffer
& operator=(const wxCharBuffer
& src
) 
  51      // no reference count yet... 
  52      ((wxCharBuffer
*)&src
)->m_str 
= (char *)NULL
; 
  56    operator const char *() const { return m_str
; } 
  65     wxWCharBuffer(const wchar_t *wcs
) 
  67         wxASSERT_MSG( wcs
, _T("NULL string in wxWCharBuffer") ); 
  69         m_wcs 
= wcs 
? (wchar_t *)malloc((wcslen(wcs
)+1)*sizeof(wchar_t)) 
  71         if (m_wcs
) wcscpy(m_wcs
, wcs
); 
  73     wxWCharBuffer(size_t len
) 
  75         m_wcs 
= (wchar_t *)malloc((len
+1)*sizeof(wchar_t)); 
  79     // no need to check for NULL, free() does it 
  80    ~wxWCharBuffer() { free(m_wcs
); } 
  82    wxWCharBuffer(const wxWCharBuffer
& src
) 
  85      // no reference count yet... 
  86      (wxWCharBuffer
)src
.m_wcs 
= (wchar_t *)NULL
; 
  88    wxWCharBuffer
& operator=(const wxWCharBuffer
& src
) 
  91      // no reference count yet... 
  92      (wxWCharBuffer
)src
.m_wcs 
= (wchar_t *)NULL
; 
  96    operator const wchar_t *() const { return m_wcs
; } 
 103 #define wxMB2WXbuf wxWCharBuffer 
 104 #define wxWX2MBbuf wxCharBuffer 
 105 #define wxWC2WXbuf wxChar* 
 106 #define wxWX2WCbuf wxChar* 
 108 #define wxMB2WXbuf wxChar* 
 109 #define wxWX2MBbuf wxChar* 
 110 #define wxWC2WXbuf wxCharBuffer 
 111 #define wxWX2WCbuf wxWCharBuffer 
 114 // ---------------------------------------------------------------------------- 
 115 // template class for any kind of data 
 116 // ---------------------------------------------------------------------------- 
 120 #endif // _WX_BUFFER_H