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