* Made GSocket::GetError() exp/imp from net library and provide an inline

compatibility function.
* Provide a Null gs_gui_functions implementation.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott
2004-08-03 04:14:42 +00:00
parent c90cc42e98
commit a45068485c
3 changed files with 37 additions and 11 deletions

View File

@@ -332,8 +332,6 @@ void GSocket_SetNonBlocking(GSocket *socket, int non_block);
*/ */
void GSocket_SetTimeout(GSocket *socket, unsigned long millisec); void GSocket_SetTimeout(GSocket *socket, unsigned long millisec);
#endif /* ndef wxUSE_GSOCKET_CPLUSPLUS */
/* GSocket_GetError: /* GSocket_GetError:
* Returns the last error occured for this socket. Note that successful * Returns the last error occured for this socket. Note that successful
* operations do not clear this back to GSOCK_NOERROR, so use it only * operations do not clear this back to GSOCK_NOERROR, so use it only
@@ -341,8 +339,6 @@ void GSocket_SetTimeout(GSocket *socket, unsigned long millisec);
*/ */
GSocketError WXDLLIMPEXP_NET GSocket_GetError(GSocket *socket); GSocketError WXDLLIMPEXP_NET GSocket_GetError(GSocket *socket);
#ifndef wxUSE_GSOCKET_CPLUSPLUS
/* Callbacks */ /* Callbacks */
/* GSOCK_INPUT: /* GSOCK_INPUT:

View File

@@ -82,7 +82,7 @@ public:
GSocketEventFlags Select(GSocketEventFlags flags); GSocketEventFlags Select(GSocketEventFlags flags);
void SetNonBlocking(bool non_block); void SetNonBlocking(bool non_block);
void SetTimeout(unsigned long millis); void SetTimeout(unsigned long millis);
GSocketError GetError(); GSocketError WXDLLIMPEXP_NET GetError();
void SetCallback(GSocketEventFlags flags, void SetCallback(GSocketEventFlags flags,
GSocketCallback callback, char *cdata); GSocketCallback callback, char *cdata);
void UnsetCallback(GSocketEventFlags flags); void UnsetCallback(GSocketEventFlags flags);
@@ -155,6 +155,8 @@ inline void GSocket_SetNonBlocking(GSocket *socket, int non_block)
{ socket->SetNonBlocking(non_block); } { socket->SetNonBlocking(non_block); }
inline void GSocket_SetTimeout(GSocket *socket, unsigned long millisec) inline void GSocket_SetTimeout(GSocket *socket, unsigned long millisec)
{ socket->SetTimeout(millisec); } { socket->SetTimeout(millisec); }
inline GSocketError GSocket_GetError(GSocket *socket)
{ return socket->GetError(); }
inline void GSocket_SetCallback(GSocket *socket, GSocketEventFlags flags, inline void GSocket_SetCallback(GSocket *socket, GSocketEventFlags flags,
GSocketCallback fallback, char *cdata) GSocketCallback fallback, char *cdata)
{ socket->SetCallback(flags,fallback,cdata); } { socket->SetCallback(flags,fallback,cdata); }

View File

@@ -83,6 +83,32 @@
static class GSocketGUIFunctionsTable *gs_gui_functions; static class GSocketGUIFunctionsTable *gs_gui_functions;
class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable
{
public:
virtual bool OnInit();
virtual void OnExit();
virtual bool CanUseEventLoop();
virtual bool Init_Socket(GSocket *socket);
virtual void Destroy_Socket(GSocket *socket);
virtual void Enable_Events(GSocket *socket);
virtual void Disable_Events(GSocket *socket);
};
bool GSocketGUIFunctionsTableNull::OnInit()
{ return true; }
void GSocketGUIFunctionsTableNull::OnExit()
{}
bool GSocketGUIFunctionsTableNull::CanUseEventLoop()
{ return false; }
bool GSocketGUIFunctionsTableNull::Init_Socket(GSocket *socket)
{ return true; }
void GSocketGUIFunctionsTableNull::Destroy_Socket(GSocket *socket)
{}
void GSocketGUIFunctionsTableNull::Enable_Events(GSocket *socket)
{}
void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *socket)
{}
/* Global initialisers */ /* Global initialisers */
void GSocket_SetGUIFunctions(struct GSocketGUIFunctionsTable *guifunc) void GSocket_SetGUIFunctions(struct GSocketGUIFunctionsTable *guifunc)
@@ -94,12 +120,14 @@ int GSocket_Init(void)
{ {
WSADATA wsaData; WSADATA wsaData;
if (gs_gui_functions) if (!gs_gui_functions)
{ {
if ( !gs_gui_functions->OnInit() ) static class GSocketGUIFunctionsTableNull table;
{ gs_gui_functions = &table;
return 0; }
} if ( !gs_gui_functions->OnInit() )
{
return 0;
} }
/* Initialize WinSocket */ /* Initialize WinSocket */
@@ -902,7 +930,7 @@ void GSocket::SetTimeout(unsigned long millis)
* operations do not clear this back to GSOCK_NOERROR, so use it only * operations do not clear this back to GSOCK_NOERROR, so use it only
* after an error. * after an error.
*/ */
GSocketError GSocket::GetError() GSocketError WXDLLIMPEXP_NET GSocket::GetError()
{ {
assert(this); assert(this);