1 /*!
2 \file
3 \brief Data structures and prototypes for GKlib integration
4 
5 \date  Started 12/23/2008
6 \author George
7 \version\verbatim $Id: gklib_defs.h 10395 2011-06-23 23:28:06Z karypis $ \endverbatim
8 */
9 
10 #ifndef _LIBMETIS_GKLIB_H_
11 #define _LIBMETIS_GKLIB_H_
12 
13 #include "gklib_rename.h"
14 
15 /*************************************************************************/
16 /*! Stores a weighted edge */
17 /*************************************************************************/
18 typedef struct {
19   idx_t u, v, w;               /*!< Edge (u,v) with weight w */
20 } uvw_t;
21 
22 /*************************************************************************
23 * Define various data structure using GKlib's templates.
24 **************************************************************************/
25 GK_MKKEYVALUE_T(ikv_t, idx_t, idx_t)
26 GK_MKKEYVALUE_T(rkv_t, real_t, idx_t)
27 GK_MKPQUEUE_T(ipq_t, ikv_t)
28 GK_MKPQUEUE_T(rpq_t, rkv_t)
29 
30 
31 /* gklib.c */
32 GK_MKBLAS_PROTO(i, idx_t, idx_t)
33 GK_MKBLAS_PROTO(r, real_t, real_t)
34 GK_MKALLOC_PROTO(i, idx_t)
35 GK_MKALLOC_PROTO(r, real_t)
36 GK_MKALLOC_PROTO(ikv, ikv_t)
37 GK_MKALLOC_PROTO(rkv, rkv_t)
38 GK_MKPQUEUE_PROTO(ipq, ipq_t, idx_t, idx_t)
39 GK_MKPQUEUE_PROTO(rpq, rpq_t, real_t, idx_t)
40 GK_MKRANDOM_PROTO(i, idx_t, idx_t)
41 GK_MKARRAY2CSR_PROTO(i, idx_t)
42 void isorti(size_t n, idx_t *base);
43 void isortd(size_t n, idx_t *base);
44 void rsorti(size_t n, real_t *base);
45 void rsortd(size_t n, real_t *base);
46 void ikvsorti(size_t n, ikv_t *base);
47 void ikvsortii(size_t n, ikv_t *base);
48 void ikvsortd(size_t n, ikv_t *base);
49 void rkvsorti(size_t n, rkv_t *base);
50 void rkvsortd(size_t n, rkv_t *base);
51 void uvwsorti(size_t n, uvw_t *base);
52 
53 #endif
54