1 /* ========================================================================== */
2 /* === UMFPACK_free_symbolic ================================================ */
3 /* ========================================================================== */
4 
5 /* -------------------------------------------------------------------------- */
6 /* Copyright (c) 2005-2012 by Timothy A. Davis, http://www.suitesparse.com.   */
7 /* All Rights Reserved.  See ../Doc/License.txt for License.                  */
8 /* -------------------------------------------------------------------------- */
9 
10 /*
11     User-callable.  See umfpack_free_symbolic.h for details.
12     All 10 objects comprising the Symbolic object are free'd via UMF_free.
13 */
14 
15 #include "umf_internal.h"
16 #include "umf_free.h"
17 
UMFPACK_free_symbolic(void ** SymbolicHandle)18 GLOBAL void UMFPACK_free_symbolic
19 (
20     void **SymbolicHandle
21 )
22 {
23 
24     SymbolicType *Symbolic ;
25     if (!SymbolicHandle)
26     {
27 	return ;
28     }
29     Symbolic = *((SymbolicType **) SymbolicHandle) ;
30     if (!Symbolic)
31     {
32 	return ;
33     }
34 
35     (void) UMF_free ((void *) Symbolic->Cperm_init) ;
36     (void) UMF_free ((void *) Symbolic->Rperm_init) ;
37     (void) UMF_free ((void *) Symbolic->Front_npivcol) ;
38     (void) UMF_free ((void *) Symbolic->Front_parent) ;
39     (void) UMF_free ((void *) Symbolic->Front_1strow) ;
40     (void) UMF_free ((void *) Symbolic->Front_leftmostdesc) ;
41     (void) UMF_free ((void *) Symbolic->Chain_start) ;
42     (void) UMF_free ((void *) Symbolic->Chain_maxrows) ;
43     (void) UMF_free ((void *) Symbolic->Chain_maxcols) ;
44     (void) UMF_free ((void *) Symbolic->Cdeg) ;
45     (void) UMF_free ((void *) Symbolic->Rdeg) ;
46 
47     /* only when dense rows are present */
48     (void) UMF_free ((void *) Symbolic->Esize) ;
49 
50     /* only when diagonal pivoting is prefered */
51     (void) UMF_free ((void *) Symbolic->Diagonal_map) ;
52 
53     (void) UMF_free ((void *) Symbolic) ;
54     *SymbolicHandle = (void *) NULL ;
55 }
56