1 //------------------------------------------------------------------------------
2 // GB_convert_any_to_full: convert any matrix to full
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 // All entries in A must be present, with no pending work; GB_as_if_full (A)
11 // must be true on input. A may be hypersparse, sparse, bitmap, or full on
12 // input, and full on output.
13
14 #include "GB.h"
15
16 GB_PUBLIC // used by MATLAB interface
GB_convert_any_to_full(GrB_Matrix A)17 void GB_convert_any_to_full // convert any matrix to full
18 (
19 GrB_Matrix A // matrix to convert to full
20 )
21 {
22
23 //--------------------------------------------------------------------------
24 // check inputs
25 //--------------------------------------------------------------------------
26
27 ASSERT_MATRIX_OK (A, "A converting any to full", GB0) ;
28 ASSERT (GB_as_if_full (A)) ;
29
30 if (GB_IS_FULL (A))
31 {
32 // already full; nothing to do
33 return ;
34 }
35
36 GBURBLE ("(%s to full) ", (A->h != NULL) ? "hypersparse" :
37 (GB_IS_BITMAP (A) ? "bitmap" : "sparse")) ;
38
39 //--------------------------------------------------------------------------
40 // free A->h, A->p, A->i, and A->b
41 //--------------------------------------------------------------------------
42
43 GB_ph_free (A) ;
44
45 if (!A->i_shallow) GB_FREE (&(A->i), A->i_size) ;
46 A->i = NULL ;
47 A->i_shallow = false ;
48
49 if (!A->b_shallow) GB_FREE (&(A->b), A->b_size) ;
50 A->b = NULL ;
51 A->b_shallow = false ;
52
53 int64_t avdim = A->vdim ;
54 int64_t avlen = A->vlen ;
55
56 A->plen = -1 ;
57 A->nvec = avdim ;
58 A->nvec_nonempty = (avlen == 0) ? 0 : avdim ;
59
60 A->magic = GB_MAGIC ;
61
62 //--------------------------------------------------------------------------
63 // return result
64 //--------------------------------------------------------------------------
65
66 ASSERT_MATRIX_OK (A, "A converted from any to full", GB0) ;
67 ASSERT (GB_IS_FULL (A)) ;
68 ASSERT (!GB_ZOMBIES (A)) ;
69 ASSERT (!GB_JUMBLED (A)) ;
70 ASSERT (!GB_PENDING (A)) ;
71 }
72
73