85 lines
2.2 KiB
C
85 lines
2.2 KiB
C
/* $Id$ */
|
||
|
||
/* includes for general purpose callback tasks */
|
||
/*
|
||
* Original Author: Marty Kraimer
|
||
* Date: 07-18-91
|
||
*/
|
||
|
||
/********************COPYRIGHT NOTIFICATION**********************************
|
||
This software was developed under a United States Government license
|
||
described on the COPYRIGHT_UniversityOfChicago file included as part
|
||
of this distribution.
|
||
****************************************************************************/
|
||
|
||
/* Modification Log:
|
||
* -----------------
|
||
* .01 12-12-91 mrk Initial version
|
||
* .02 04-05-94 mrk Remove casts on Lvalues (ANSI forbids)
|
||
* .02 02-09-95 joh if def'd out typedef CALLBACK for
|
||
* windows
|
||
*/
|
||
|
||
|
||
#ifndef INCcallbackh
|
||
#define INCcallbackh 1
|
||
|
||
/*
|
||
* WINDOWS also has a "CALLBACK" type def
|
||
*/
|
||
#ifdef _WIN32
|
||
# ifdef CALLBACK
|
||
# undef CALLBACK
|
||
# endif /*CALLBACK*/
|
||
#endif /*_WIN32*/
|
||
|
||
#define NUM_CALLBACK_PRIORITIES 3
|
||
#define priorityLow 0
|
||
#define priorityMedium 1
|
||
#define priorityHigh 2
|
||
|
||
typedef struct callbackPvt {
|
||
#ifdef __STDC__
|
||
void (*callback)(struct callbackPvt*);
|
||
#else
|
||
void(*callback)();
|
||
#endif
|
||
int priority;
|
||
void *user; /*for use by callback user*/
|
||
}CALLBACK;
|
||
|
||
#ifdef __STDC__
|
||
typedef void (*CALLBACKFUNC)(struct callbackPvt*);
|
||
#else
|
||
typedef void (*CALLBACKFUNC)();
|
||
#endif
|
||
|
||
#define callbackSetCallback(PFUN,PCALLBACK)\
|
||
( (PCALLBACK)->callback = (PFUN) )
|
||
#define callbackSetPriority(PRIORITY,PCALLBACK)\
|
||
( (PCALLBACK)->priority = (PRIORITY) )
|
||
#define callbackSetUser(USER,PCALLBACK)\
|
||
( (PCALLBACK)->user = (void *)(USER) )
|
||
#define callbackGetUser(USER,PCALLBACK)\
|
||
( (USER) = (void *)((CALLBACK *)(PCALLBACK))->user )
|
||
|
||
#ifdef __STDC__
|
||
long callbackInit();
|
||
void callbackRequest(CALLBACK *pCallback);
|
||
void callbackRequestProcessCallback(CALLBACK *pCallback,
|
||
int Priority, void *pRec);
|
||
void callbackRequestDelayed(CALLBACK *pCallback,double seconds);
|
||
void callbackRequestProcessCallbackDelayed(CALLBACK *pCallback,
|
||
int Priority, void *pRec,double seconds);
|
||
int callbackSetQueueSize(int size);
|
||
#else
|
||
long callbackInit();
|
||
void callbackRequest();
|
||
void callbackRequestProcessCallback();
|
||
void callbackRequestDelayed();
|
||
void callbackRequestProcessCallbackDelayed();
|
||
int callbackSetQueueSize();
|
||
#endif /*__STDC__*/
|
||
|
||
#endif /*INCcallbackh*/
|