Rip out useless indirection in the callback list management.

This commit is contained in:
Adam Jackson 2008-01-31 12:05:08 +11:00
parent 0d492b2166
commit aa5216e897
3 changed files with 6 additions and 35 deletions

View File

@ -816,16 +816,8 @@ _DeleteCallbackList(
*pcbl = NULL; *pcbl = NULL;
} }
static CallbackFuncsRec default_cbfuncs =
{
_AddCallback,
_DeleteCallback,
_CallCallbacks,
_DeleteCallbackList
};
static Bool static Bool
CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs) CreateCallbackList(CallbackListPtr *pcbl)
{ {
CallbackListPtr cbl; CallbackListPtr cbl;
int i; int i;
@ -833,7 +825,6 @@ CreateCallbackList(CallbackListPtr *pcbl, CallbackFuncsPtr cbfuncs)
if (!pcbl) return FALSE; if (!pcbl) return FALSE;
cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec)); cbl = (CallbackListPtr) xalloc(sizeof(CallbackListRec));
if (!cbl) return FALSE; if (!cbl) return FALSE;
cbl->funcs = cbfuncs ? *cbfuncs : default_cbfuncs;
cbl->inCallback = 0; cbl->inCallback = 0;
cbl->deleted = FALSE; cbl->deleted = FALSE;
cbl->numDeleted = 0; cbl->numDeleted = 0;
@ -864,31 +855,31 @@ AddCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
if (!pcbl) return FALSE; if (!pcbl) return FALSE;
if (!*pcbl) if (!*pcbl)
{ /* list hasn't been created yet; go create it */ { /* list hasn't been created yet; go create it */
if (!CreateCallbackList(pcbl, (CallbackFuncsPtr)NULL)) if (!CreateCallbackList(pcbl))
return FALSE; return FALSE;
} }
return ((*(*pcbl)->funcs.AddCallback) (pcbl, callback, data)); return _AddCallback(pcbl, callback, data);
} }
_X_EXPORT Bool _X_EXPORT Bool
DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data) DeleteCallback(CallbackListPtr *pcbl, CallbackProcPtr callback, pointer data)
{ {
if (!pcbl || !*pcbl) return FALSE; if (!pcbl || !*pcbl) return FALSE;
return ((*(*pcbl)->funcs.DeleteCallback) (pcbl, callback, data)); return _DeleteCallback(pcbl, callback, data);
} }
void void
CallCallbacks(CallbackListPtr *pcbl, pointer call_data) CallCallbacks(CallbackListPtr *pcbl, pointer call_data)
{ {
if (!pcbl || !*pcbl) return; if (!pcbl || !*pcbl) return;
(*(*pcbl)->funcs.CallCallbacks) (pcbl, call_data); _CallCallbacks(pcbl, call_data);
} }
void void
DeleteCallbackList(CallbackListPtr *pcbl) DeleteCallbackList(CallbackListPtr *pcbl)
{ {
if (!pcbl || !*pcbl) return; if (!pcbl || !*pcbl) return;
(*(*pcbl)->funcs.DeleteCallbackList) (pcbl); _DeleteCallbackList(pcbl);
} }
void void

View File

@ -498,25 +498,6 @@ typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
typedef void (*CallbackProcPtr) ( typedef void (*CallbackProcPtr) (
CallbackListPtr *, pointer, pointer); CallbackListPtr *, pointer, pointer);
typedef Bool (*AddCallbackProcPtr) (
CallbackListPtr *, CallbackProcPtr, pointer);
typedef Bool (*DeleteCallbackProcPtr) (
CallbackListPtr *, CallbackProcPtr, pointer);
typedef void (*CallCallbacksProcPtr) (
CallbackListPtr *, pointer);
typedef void (*DeleteCallbackListProcPtr) (
CallbackListPtr *);
typedef struct _CallbackProcs {
AddCallbackProcPtr AddCallback;
DeleteCallbackProcPtr DeleteCallback;
CallCallbacksProcPtr CallCallbacks;
DeleteCallbackListProcPtr DeleteCallbackList;
} CallbackFuncsRec, *CallbackFuncsPtr;
extern Bool AddCallback( extern Bool AddCallback(
CallbackListPtr * /*pcbl*/, CallbackListPtr * /*pcbl*/,
CallbackProcPtr /*callback*/, CallbackProcPtr /*callback*/,

View File

@ -187,7 +187,6 @@ typedef struct _CallbackRec {
} CallbackRec, *CallbackPtr; } CallbackRec, *CallbackPtr;
typedef struct _CallbackList { typedef struct _CallbackList {
CallbackFuncsRec funcs;
int inCallback; int inCallback;
Bool deleted; Bool deleted;
int numDeleted; int numDeleted;