1 //------------------------------------------------------------------------------
2 // GrB_Matrix_build: build a sparse GraphBLAS matrix
3 //------------------------------------------------------------------------------
4 
5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6 // SPDX-License-Identifier: Apache-2.0
7 
8 //------------------------------------------------------------------------------
9 
10 #include "GB_build.h"
11 
12 #define GB_MATRIX_BUILD(prefix,type,T)                                        \
13 GrB_Info GB_EVAL3 (prefix, _Matrix_build_, T) /* build a matrix from tuples */\
14 (                                                                             \
15     GrB_Matrix C,                   /* matrix to build                    */  \
16     const GrB_Index *I,             /* array of row indices of tuples     */  \
17     const GrB_Index *J,             /* array of column indices of tuples  */  \
18     const type *X,                  /* array of values of tuples          */  \
19     GrB_Index nvals,                /* number of tuples                   */  \
20     const GrB_BinaryOp dup          /* binary op to assemble duplicates   */  \
21 )                                                                             \
22 {                                                                             \
23     GB_WHERE (C, "GrB_Matrix_build_" GB_STR(T) " (C, I, J, X, nvals, dup)") ; \
24     GB_BURBLE_START ("GrB_Matrix_build") ;                                    \
25     GB_RETURN_IF_NULL_OR_FAULTY (C) ;                                         \
26     GrB_Info info = GB_matvec_build (C, I, J, X, nvals, dup,                  \
27         GB_ ## T ## _code, true, Context) ;                                   \
28     GB_BURBLE_END ;                                                           \
29     return (info) ;                                                           \
30 }
31 
32 GB_MATRIX_BUILD (GrB, bool      , BOOL   )
33 GB_MATRIX_BUILD (GrB, int8_t    , INT8   )
34 GB_MATRIX_BUILD (GrB, uint8_t   , UINT8  )
35 GB_MATRIX_BUILD (GrB, int16_t   , INT16  )
36 GB_MATRIX_BUILD (GrB, uint16_t  , UINT16 )
37 GB_MATRIX_BUILD (GrB, int32_t   , INT32  )
38 GB_MATRIX_BUILD (GrB, uint32_t  , UINT32 )
39 GB_MATRIX_BUILD (GrB, int64_t   , INT64  )
40 GB_MATRIX_BUILD (GrB, uint64_t  , UINT64 )
41 GB_MATRIX_BUILD (GrB, float     , FP32   )
42 GB_MATRIX_BUILD (GrB, double    , FP64   )
43 GB_MATRIX_BUILD (GxB, GxB_FC32_t, FC32   )
44 GB_MATRIX_BUILD (GxB, GxB_FC64_t, FC64   )
45 GB_MATRIX_BUILD (GrB, void      , UDT    )
46 
47