1 //------------------------------------------------------------------------------
2 // GB_convert_any_to_bitmap: convert any matrix to bitmap
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 // The input matrix may be jumbled and have zombies, and can still be converted
11 // to a bitmap.
12
13 #include "GB.h"
14 #define GB_FREE_ALL ;
15
GB_convert_any_to_bitmap(GrB_Matrix A,GB_Context Context)16 GrB_Info GB_convert_any_to_bitmap // convert to bitmap
17 (
18 GrB_Matrix A, // matrix to convert to bitmap
19 GB_Context Context
20 )
21 {
22
23 //--------------------------------------------------------------------------
24 // check inputs
25 //--------------------------------------------------------------------------
26
27 GrB_Info info ;
28 ASSERT_MATRIX_OK (A, "A being converted to bitmap", GB0) ;
29 ASSERT (GB_ZOMBIES_OK (A)) ; // A can have zombies
30 ASSERT (GB_JUMBLED_OK (A)) ; // A can be jumbled
31 GB_MATRIX_WAIT_IF_PENDING (A) ; // A cannot have pending tuples
32 ASSERT (!GB_PENDING (A)) ;
33
34 //--------------------------------------------------------------------------
35 // convert A to bitmap
36 //--------------------------------------------------------------------------
37
38 if (GB_IS_HYPERSPARSE (A))
39 {
40 // convert from hypersparse to bitmap
41 GB_OK (GB_convert_sparse_to_bitmap (A, Context)) ;
42 }
43 else if (GB_IS_FULL (A))
44 {
45 // convert from full to bitmap
46 GB_OK (GB_convert_full_to_bitmap (A, Context)) ;
47 }
48 else if (GB_IS_BITMAP (A))
49 {
50 // already bitmap; nothing to do
51 ;
52 }
53 else
54 {
55 // convert from sparse to bitmap
56 GB_OK (GB_convert_sparse_to_bitmap (A, Context)) ;
57 }
58
59 //--------------------------------------------------------------------------
60 // return result
61 //--------------------------------------------------------------------------
62
63 ASSERT_MATRIX_OK (A, "A to bitmap", GB0) ;
64 ASSERT (GB_IS_BITMAP (A)) ;
65 ASSERT (!GB_ZOMBIES (A)) ;
66 ASSERT (!GB_JUMBLED (A)) ;
67 ASSERT (!GB_PENDING (A)) ;
68 return (GrB_SUCCESS) ;
69 }
70
71