1 /*  basics.c  */
2 
3 #include "../Pencil.h"
4 
5 #define   MYDEBUG 0
6 
7 /*--------------------------------------------------------------------*/
8 /*
9    -----------------------
10    simplest constructor
11 
12    created -- 98may02, cca
13    -----------------------
14 */
15 Pencil *
Pencil_new(void)16 Pencil_new (
17    void
18 ) {
19 Pencil   *pencil ;
20 
21 ALLOCATE(pencil, struct _Pencil, 1) ;
22 Pencil_setDefaultFields(pencil) ;
23 
24 return(pencil) ; }
25 
26 /*--------------------------------------------------------------------*/
27 /*
28    -----------------------
29    set the default fields
30 
31    created -- 98may02, cca
32    -----------------------
33 */
34 void
Pencil_setDefaultFields(Pencil * pencil)35 Pencil_setDefaultFields (
36    Pencil   *pencil
37 ) {
38 if ( pencil == NULL ) {
39    fprintf(stderr, "\n fatal error in Pencil_setDefaultFields(%p)"
40            "\n bad input", pencil) ;
41    exit(-1) ;
42 }
43 pencil->type     = SPOOLES_REAL ;
44 pencil->symflag  = SPOOLES_SYMMETRIC ;
45 pencil->sigma[0] = 0.0  ;
46 pencil->sigma[1] = 0.0  ;
47 pencil->inpmtxA  = NULL ;
48 pencil->inpmtxB  = NULL ;
49 
50 return ; }
51 
52 /*--------------------------------------------------------------------*/
53 /*
54    --------------------------------------------------
55    clear the data fields, releasing allocated storage
56 
57    created -- 98may02, cca
58    --------------------------------------------------
59 */
60 void
Pencil_clearData(Pencil * pencil)61 Pencil_clearData (
62    Pencil   *pencil
63 ) {
64 /*
65    ---------------
66    check the input
67    ---------------
68 */
69 if ( pencil == NULL ) {
70    fprintf(stderr, "\n fatal error in Pencil_clearData(%p)"
71            "\n bad input\n", pencil) ;
72    exit(-1) ;
73 }
74 /*
75    -----------------
76    free the matrices
77    -----------------
78 */
79 if ( pencil->inpmtxA != NULL ) {
80    InpMtx_free(pencil->inpmtxA) ;
81 }
82 if ( pencil->inpmtxB != NULL ) {
83    InpMtx_free(pencil->inpmtxB) ;
84 }
85 /*
86    ----------------------
87    set the default fields
88    ----------------------
89 */
90 Pencil_setDefaultFields(pencil) ;
91 
92 return ; }
93 
94 /*--------------------------------------------------------------------*/
95 /*
96    ------------------------------------------
97    destructor, free's the object and its data
98 
99    created -- 98may02, cca
100    ------------------------------------------
101 */
102 Pencil *
Pencil_free(Pencil * pencil)103 Pencil_free (
104    Pencil   *pencil
105 ) {
106 if ( pencil == NULL ) {
107    fprintf(stderr, "\n fatal error in Pencil_free(%p)"
108            "\n bad input\n", pencil) ;
109    exit(-1) ;
110 }
111 Pencil_clearData(pencil) ;
112 FREE(pencil) ;
113 
114 return(NULL) ; }
115 
116 /*--------------------------------------------------------------------*/
117