text: /////////////////////////////////////////////////////////////////////////////
  // Name:        common/clntdata.cpp
  // Purpose:     A mixin class for holding a wxClientData or void pointer
  // Author:      Robin Dunn
  // Modified by:
  // Created:     9-Oct-2001
  // RCS-ID:      $Id: clntdata.cpp 35650 2005-09-23 12:56:45Z MR $
  // Copyright:   (c) wxWidgets team
  // Licence:     wxWindows licence
  /////////////////////////////////////////////////////////////////////////////
  
  // For compilers that support precompilation, includes "wx.h".
  #include "wx/wxprec.h"
  
  #ifdef __BORLANDC__
      #pragma hdrstop
  #endif
  
  #include "wx/clntdata.h"
  
  
  // ----------------------------------------------------------------------------
  
  
  wxClientDataContainer::wxClientDataContainer()
  {
      // no client data (yet)
      m_clientData = NULL;
      m_clientDataType = wxClientData_None;
  }
  
  wxClientDataContainer::~wxClientDataContainer()
  {
      // we only delete object data, not untyped
      if ( m_clientDataType == wxClientData_Object )
          delete m_clientObject;
  }
  
  void wxClientDataContainer::DoSetClientObject( wxClientData *data )
  {
      wxASSERT_MSG( m_clientDataType != wxClientData_Void,
                    wxT("can't have both object and void client data") );
  
      if ( m_clientObject )
          delete m_clientObject;
  
      m_clientObject = data;
      m_clientDataType = wxClientData_Object;
  }
  
  wxClientData *wxClientDataContainer::DoGetClientObject() const
  {
      // it's not an error to call GetClientObject() on a window which doesn't
      // have client data at all - NULL will be returned
      wxASSERT_MSG( m_clientDataType != wxClientData_Void,
                    wxT("this window doesn't have object client data") );
  
      return m_clientObject;
  }
  
  void wxClientDataContainer::DoSetClientData( void *data )
  {
      wxASSERT_MSG( m_clientDataType != wxClientData_Object,
                    wxT("can't have both object and void client data") );
  
      m_clientData = data;
      m_clientDataType = wxClientData_Void;
  }
  
  void *wxClientDataContainer::DoGetClientData() const
  {
      // it's not an error to call GetClientData() on a window which doesn't have
      // client data at all - NULL will be returned
      wxASSERT_MSG( m_clientDataType != wxClientData_Object,
                    wxT("this window doesn't have void client data") );
  
      return m_clientData;
  }
  
  
  // ----------------------------------------------------------------------------
  
  
  