X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..b9efe021b554fa3967d1442cf758435c5cd5ae8f:/src/common/ipcbase.cpp diff --git a/src/common/ipcbase.cpp b/src/common/ipcbase.cpp index 717eb20c60..759727e1b5 100644 --- a/src/common/ipcbase.cpp +++ b/src/common/ipcbase.cpp @@ -5,11 +5,11 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "ipcbase.h" #endif @@ -26,10 +26,66 @@ #include "wx/ipcbase.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxServerBase, wxObject) IMPLEMENT_CLASS(wxClientBase, wxObject) IMPLEMENT_CLASS(wxConnectionBase, wxObject) -#endif +wxConnectionBase::wxConnectionBase(wxChar *buffer, int size) + : m_connected(true), + m_buffer(buffer), + m_buffersize(size), + m_deletebufferwhendone(false) +{ + if ( buffer == (wxChar *)NULL ) + { // behave like next constructor + m_buffersize = 0; + m_deletebufferwhendone = true; + } +} + +wxConnectionBase::wxConnectionBase() + : m_connected(true), + m_buffer(NULL), + m_buffersize(0), + m_deletebufferwhendone(true) +{ +} + +wxConnectionBase::wxConnectionBase(wxConnectionBase& copy) + : wxObject(), + m_connected(copy.m_connected), + m_buffer(copy.m_buffer), + m_buffersize(copy.m_buffersize), + m_deletebufferwhendone(false) + +{ + // copy constructor would require ref-counted pointer to buffer + wxFAIL_MSG( _T("Copy constructor of wxConnectionBase not implemented") ); +} + + +wxConnectionBase::~wxConnectionBase(void) +{ + if ( m_deletebufferwhendone && m_buffer ) + delete m_buffer; +} + +wxChar *wxConnectionBase::GetBufferAtLeast( size_t bytes ) +{ + if ( m_buffersize >= bytes ) + return m_buffer; + else + { // need to resize buffer + if ( m_deletebufferwhendone ) + { // we're in charge of buffer, increase it + if ( m_buffer ) + delete m_buffer; + m_buffer = new wxChar[bytes]; + m_buffersize = bytes; + return m_buffer; + } // user-supplied buffer, fail + else + return NULL; + } +}