xref: /titanic_52/usr/src/lib/mergeq/mergeq.h (revision 7fd791373689a6af05e27efec3b1ab556e02aa23)
1*7fd79137SRobert Mustacchi /*
2*7fd79137SRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*7fd79137SRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*7fd79137SRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*7fd79137SRobert Mustacchi  * 1.0 of the CDDL.
6*7fd79137SRobert Mustacchi  *
7*7fd79137SRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*7fd79137SRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*7fd79137SRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*7fd79137SRobert Mustacchi  */
11*7fd79137SRobert Mustacchi 
12*7fd79137SRobert Mustacchi /*
13*7fd79137SRobert Mustacchi  * Copyright 2015 Joyent, Inc.
14*7fd79137SRobert Mustacchi  */
15*7fd79137SRobert Mustacchi 
16*7fd79137SRobert Mustacchi #ifndef _MERGEQ_H
17*7fd79137SRobert Mustacchi #define	_MERGEQ_H
18*7fd79137SRobert Mustacchi 
19*7fd79137SRobert Mustacchi /*
20*7fd79137SRobert Mustacchi  * mergeq library routines
21*7fd79137SRobert Mustacchi  */
22*7fd79137SRobert Mustacchi 
23*7fd79137SRobert Mustacchi #include <sys/types.h>
24*7fd79137SRobert Mustacchi #include <stdint.h>
25*7fd79137SRobert Mustacchi 
26*7fd79137SRobert Mustacchi #ifdef __cplusplus
27*7fd79137SRobert Mustacchi extern "C" {
28*7fd79137SRobert Mustacchi #endif
29*7fd79137SRobert Mustacchi 
30*7fd79137SRobert Mustacchi typedef struct mergeq mergeq_t;
31*7fd79137SRobert Mustacchi typedef int (mergeq_proc_f)(void *, void *, void **, void *);
32*7fd79137SRobert Mustacchi 
33*7fd79137SRobert Mustacchi extern int mergeq_init(mergeq_t **, uint_t);
34*7fd79137SRobert Mustacchi extern void mergeq_fini(mergeq_t *);
35*7fd79137SRobert Mustacchi 
36*7fd79137SRobert Mustacchi extern int mergeq_add(mergeq_t *, void *);
37*7fd79137SRobert Mustacchi 
38*7fd79137SRobert Mustacchi #define	MERGEQ_ERROR	-1
39*7fd79137SRobert Mustacchi #define	MERGEQ_UERROR	-2
40*7fd79137SRobert Mustacchi extern int mergeq_merge(mergeq_t *, mergeq_proc_f *, void *, void **, int *);
41*7fd79137SRobert Mustacchi 
42*7fd79137SRobert Mustacchi /*
43*7fd79137SRobert Mustacchi  * Routines consumers need to implement
44*7fd79137SRobert Mustacchi  */
45*7fd79137SRobert Mustacchi extern void *mergeq_alloc(size_t);
46*7fd79137SRobert Mustacchi extern void mergeq_free(void *, size_t);
47*7fd79137SRobert Mustacchi 
48*7fd79137SRobert Mustacchi #ifdef __cplusplus
49*7fd79137SRobert Mustacchi }
50*7fd79137SRobert Mustacchi #endif
51*7fd79137SRobert Mustacchi 
52*7fd79137SRobert Mustacchi #endif /* _MERGEQ_H */
53