summaryrefslogtreecommitdiff
path: root/rpmio/rpmhook.h
blob: d7dc26e57506158b4b07e039af32567fd4d1747e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#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)
	/*@*/;
rpmhookArgs rpmhookArgsFree(/*@only@*/ 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