1 /* basics.C */
2
3 #include "../ZV.h"
4
5 /*--------------------------------------------------------------------*/
6 /*
7 -----------------------
8 constructor method
9
10 created -- 98jan22, cca
11 -----------------------
12 */
13 ZV *
ZV_new(void)14 ZV_new (
15 void
16 ) {
17 ZV *zv ;
18
19 ALLOCATE(zv, struct _ZV, 1) ;
20
21 ZV_setDefaultFields(zv) ;
22
23 return(zv) ; }
24
25 /*--------------------------------------------------------------------*/
26 /*
27 -----------------------
28 set the default fields
29
30 created -- 98jan22, cca
31 -----------------------
32 */
33 void
ZV_setDefaultFields(ZV * zv)34 ZV_setDefaultFields (
35 ZV *zv
36 ) {
37 if ( zv == NULL ) {
38 fprintf(stderr, "\n fatal error in ZV_setDefaultFields(%p)"
39 "\n bad input\n", zv) ;
40 exit(-1) ;
41 }
42 zv->size = 0 ;
43 zv->maxsize = 0 ;
44 zv->owned = 0 ;
45 zv->vec = NULL ;
46
47 return ; }
48
49 /*--------------------------------------------------------------------*/
50 /*
51 -----------------------
52 clear the data fields
53
54 created -- 98jan22, cca
55 -----------------------
56 */
57 void
ZV_clearData(ZV * zv)58 ZV_clearData (
59 ZV *zv
60 ) {
61 if ( zv == NULL ) {
62 fprintf(stderr, "\n fatal error in ZV_clearData(%p)"
63 "\n bad input\n", zv) ;
64 exit(-1) ;
65 }
66 if ( zv->vec != NULL && zv->owned == 1 ) {
67 DVfree(zv->vec) ;
68 }
69 ZV_setDefaultFields(zv) ;
70
71 return ; }
72
73 /*--------------------------------------------------------------------*/
74 /*
75 -----------------------
76 destructor
77
78 created -- 98jan22, cca
79 -----------------------
80 */
81 void
ZV_free(ZV * zv)82 ZV_free (
83 ZV *zv
84 ) {
85 if ( zv == NULL ) {
86 fprintf(stderr, "\n fatal error in ZV_free(%p)"
87 "\n bad input\n", zv) ;
88 exit(-1) ;
89 }
90 ZV_clearData(zv) ;
91 FREE(zv) ;
92
93 return ; }
94
95 /*--------------------------------------------------------------------*/
96