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

View File

@ -498,25 +498,6 @@ typedef struct _CallbackList *CallbackListPtr; /* also in misc.h */
typedef void (*CallbackProcPtr) (
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(
CallbackListPtr * /*pcbl*/,
CallbackProcPtr /*callback*/,

View File

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