#ifndef RPMHOOK_H #define RPMHOOK_H typedef union { /*@observer@*/ const char * s; int i; float f; /*@observer@*/ void * p; } rpmhookArgv; typedef struct rpmhookArgs_s { int argc; const char * argt; rpmhookArgv argv[1]; } * rpmhookArgs; typedef int (*rpmhookFunc) (rpmhookArgs args, void *data); /*@only@*/ rpmhookArgs rpmhookArgsNew(int argc) /*@*/; /*@null@*/ rpmhookArgs rpmhookArgsFree(/*@only@*/ /*@null@*/ rpmhookArgs args) /*@modifies args @*/; void rpmhookRegister(const char *name, rpmhookFunc func, void *data) /*@globals internalState @*/ /*@modifies internalState @*/; void rpmhookUnregister(const char *name, rpmhookFunc func, void *data) /*@*/; void rpmhookUnregisterAny(const char *name, rpmhookFunc func) /*@*/; void rpmhookUnregisterAll(const char *name) /*@*/; void rpmhookCall(const char *name, const char *argt, ...) /*@*/; void rpmhookCallArgs(const char *name, rpmhookArgs args) /*@globals internalState @*/ /*@modifies internalState @*/; #endif