Bug #1267: Integrate METIS graph partitioning library
[charm.git] / src / libs / ck-libs / metis / GKlib / gk_mkutils.h
bloba092f2227d33395b1b67b25874e48eed23a75c52
1 /*!
2 \file
3 \brief Templates for various utility routines
5 \date Started 5/28/07
6 \author George
7 \version\verbatim $Id: gk_mkutils.h 10711 2011-08-31 22:23:04Z karypis $ \endverbatim
8 */
10 #ifndef _GK_MKUTILS_H_
11 #define _GK_MKUTILS_H_
14 #define GK_MKARRAY2CSR(PRFX, TYPE)\
15 /*************************************************************************/\
16 /*! The macro for gk_?array2csr() routine */\
17 /**************************************************************************/\
18 void PRFX ## array2csr(TYPE n, TYPE range, TYPE *array, TYPE *ptr, TYPE *ind)\
20 TYPE i;\
22 for (i=0; i<=range; i++)\
23 ptr[i] = 0;\
25 for (i=0; i<n; i++)\
26 ptr[array[i]]++;\
28 /* Compute the ptr, ind structure */\
29 MAKECSR(i, range, ptr);\
30 for (i=0; i<n; i++)\
31 ind[ptr[array[i]]++] = i;\
32 SHIFTCSR(i, range, ptr);\
36 #define GK_MKARRAY2CSR_PROTO(PRFX, TYPE)\
37 void PRFX ## array2csr(TYPE n, TYPE range, TYPE *array, TYPE *ptr, TYPE *ind);\
40 #endif