pfdExtensor(3pf) OpenGL Performer 3.2.2 libpfdu Reference Pages
NAME
pfdAddState, pfdStateCallback, pfdGetStateCallback, pfdGetStateToken,
pfdGetUniqueStateToken, pfdNewExtensor, pfdNewExtensorType,
pfdCompareExtensor, pfdCompareExtraStates, pfdCopyExtraStates,
pfdGetExtensor, pfdGetExtensorType, pfdUniqifyData - Flexible callback
extension mechanism
FUNCTION SPECIFICATION
#include <Performer/pfdu.h>
int pfdAddState(void *name, long dataSize,
void (*initialize)(void *data),
void (*deletor)(void *data),
int (*compare)(void *data1, void *data2),
long (*copy)(void *dst, void *src), int token);
void pfdStateCallback(int stateToken, int whichCBack,
pfNodeTravFuncType callback);
pfNodeTravFuncType pfdGetStateCallback(int stateToken, int which);
int pfdGetStateToken(void *name);
int pfdGetUniqueStateToken(void);
pfdExtensor * pfdNewExtensor(int which);
pfdExtensorType * pfdNewExtensorType(int token);
int pfdCompareExtensor(void *a, void *b);
int pfdCompareExtraStates(void *lista, void *listb);
void pfdCopyExtraStates(pfList *dst, pfList *src);
pfdExtensor * pfdGetExtensor(int token);
pfdExtensorType * pfdGetExtensorType(int token);
void * pfdUniqifyData(pfList *dataList, const void *data,
long dataSize, void *(*newData)(long),
int (*compare)(void *, void *),
long (*copy)(void *, void *),
int *compareResult);
DESCRIPTION
/* Define minimal Extensor as state in the builder */
/* Note a token will be created for you and passed back if the token */
/* arg is NULL */
extern int pfdAddState(void *name,
long dataSize,
void (*initialize)(void *data),
Page 1
pfdExtensor(3pf) OpenGL Performer 3.2.2 libpfdu Reference Pages
void (*deletor)(void *data),
int (*compare)(void *data1, void *data2),
long (*copy)(void *dst, void *src),
int token);
/* Extend Extensor Definition through callbacks listed above */
/* Specify function callbacks for an Extensor */
extern void pfdStateCallback(int stateToken, int whichCBack, pfNodeTravFuncType callback);
extern pfNodeTravFuncType pfdGetStateCallback(int stateToken, int which);
/* Look up the builder state token to use for a registered name */
extern int pfdGetStateToken(void *name);
/* Get the next Unique State token that can be used as a valid */
/* token for user state in the builder */
extern int pfdGetUniqueStateToken(void);
/* Create Generic Extensors and Extensor Definitions */
/* Note the builder creates these automatically based on user */
/* definition of extensors through pfdAddState and appropriately */
/* creates instances of an Extensor based on the current user state */
extern pfdExtensor* pfdNewExtensor(int which);
extern pfdExtensorType* pfdNewExtensorType(int token);
/* Needed to share Extensors and do internal extensor caching */
extern int pfdCompareExtensor(void *a, void *b);
/* Compare a list of Extensors */
extern int pfdCompareExtraStates(void *lista, void *listb);
extern void pfdCopyExtraStates(pfList *dst, pfList *src);
/* Find an instance of an Extensor in the Builder's current User State */
extern pfdExtensor* pfdGetExtensor(int token);
/* Find a Extensor Definitions in the Builder */
extern pfdExtensorType* pfdGetExtensorType(int token);
/* Share Arbitrary data */
extern void *pfdUniqifyData(pfList *dataList, const void *data,
long dataSize, void *(*newData)(long),
int (*compare)(void *,void *),
long (*copy)(void *, void *),
int *compareResult);
NOTES
The libpfdu source code, object code and documentation are provided as
unsupported software. Routines are subject to change in future releases.
Page 2