1 /* instance.c */
2
3 #include "../ZV.h"
4
5 /*--------------------------------------------------------------------*/
6 /*
7 -----------------------------------------------
8 return 1 if the entries are owned by the object
9 return 0 otherwise
10
11 created -- 98jan22, cca
12 -----------------------------------------------
13 */
14 int
ZV_owned(ZV * dv)15 ZV_owned (
16 ZV *dv
17 ) {
18 if ( dv == NULL ) {
19 fprintf(stderr, "\n fatal error in ZV_owned(%p)"
20 "\n bad input\n", dv) ;
21 exit(-1) ;
22 }
23 return(dv->owned) ; }
24
25 /*--------------------------------------------------------------------*/
26 /*
27 -----------------------
28 return the vector size
29
30 created -- 98jan22, cca
31 -----------------------
32 */
33 int
ZV_maxsize(ZV * dv)34 ZV_maxsize (
35 ZV *dv
36 ) {
37 if ( dv == NULL ) {
38 fprintf(stderr, "\n fatal error in ZV_maxsize(%p)"
39 "\n bad input\n", dv) ;
40 exit(-1) ;
41 }
42 return(dv->maxsize) ; }
43
44 /*--------------------------------------------------------------------*/
45 /*
46 -----------------------
47 return the vector size
48
49 created -- 98jan22, cca
50 -----------------------
51 */
52 int
ZV_size(ZV * dv)53 ZV_size (
54 ZV *dv
55 ) {
56 if ( dv == NULL ) {
57 fprintf(stderr, "\n fatal error in ZV_size(%p)"
58 "\n bad input\n", dv) ;
59 exit(-1) ;
60 }
61 return(dv->size) ; }
62
63 /*--------------------------------------------------------------------*/
64 /*
65 -------------------------------------------------
66 return the loc'th entry of a vector.
67
68 created -- 98jan22, cca
69 -------------------------------------------------
70 */
71 void
ZV_entry(ZV * dv,int loc,double * pReal,double * pImag)72 ZV_entry (
73 ZV *dv,
74 int loc,
75 double *pReal,
76 double *pImag
77 ) {
78 if ( dv == NULL || pReal == NULL || pImag == NULL ) {
79 fprintf(stderr, "\n fatal error in ZV_entry(%p,%d,%p,%p)"
80 "\n bad input\n", dv, loc, pReal, pImag) ;
81 exit(-1) ;
82 }
83 if ( loc < 0 || loc >= dv->size || dv->vec == NULL ) {
84 fprintf(stderr, "\n fatal error in ZV_entry(%p,%d,%p,%p)"
85 "\n bad state: size = %d, vec = %p\n",
86 dv, loc, pReal, pImag, dv->size, dv->vec) ;
87 exit(-1) ;
88 }
89 *pReal = dv->vec[2*loc] ;
90 *pImag = dv->vec[2*loc+1] ;
91
92 return ; }
93
94 /*--------------------------------------------------------------------*/
95 /*
96 -------------------------------------------------
97 return pointers to the loc'th entry of a vector.
98
99 created -- 98jan22, cca
100 -------------------------------------------------
101 */
102 void
ZV_pointersToEntry(ZV * dv,int loc,double ** ppReal,double ** ppImag)103 ZV_pointersToEntry (
104 ZV *dv,
105 int loc,
106 double **ppReal,
107 double **ppImag
108 ) {
109 if ( dv == NULL || ppReal == NULL || ppImag == NULL ) {
110 fprintf(stderr, "\n fatal error in ZV_pointersToEntry(%p,%d,%p,%p)"
111 "\n bad input\n", dv, loc, ppReal, ppImag) ;
112 exit(-1) ;
113 }
114 if ( loc < 0 || loc >= dv->size || dv->vec == NULL ) {
115 fprintf(stderr, "\n fatal error in ZV_pointersToEntry(%p,%d,%p,%p)"
116 "\n bad state: size = %d, vec = %p\n",
117 dv, loc, ppReal, ppImag, dv->size, dv->vec) ;
118 exit(-1) ;
119 }
120 *ppReal = &dv->vec[2*loc] ;
121 *ppImag = &dv->vec[2*loc+1] ;
122
123 return ; }
124
125 /*--------------------------------------------------------------------*/
126 /*
127 ----------------------------------------------
128 return a pointer to the object's entries array
129
130 created -- 98jan22, cca
131 ----------------------------------------------
132 */
133 double *
ZV_entries(ZV * dv)134 ZV_entries (
135 ZV *dv
136 ) {
137 if ( dv == NULL ) {
138 fprintf(stderr, "\n fatal error in ZV_entries(%p)"
139 "\n bad input\n", dv) ;
140 exit(-1) ;
141 }
142 return(dv->vec) ; }
143
144 /*--------------------------------------------------------------------*/
145 /*
146 --------------------------------------------
147 fill *psize with the vector's size
148 and *pentries with the address of the vector
149
150 created -- 98jan22, cca
151 --------------------------------------------
152 */
153 void
ZV_sizeAndEntries(ZV * dv,int * psize,double ** pentries)154 ZV_sizeAndEntries (
155 ZV *dv,
156 int *psize,
157 double **pentries
158 ) {
159 if ( dv == NULL || psize == NULL || pentries == NULL ) {
160 fprintf(stderr, "\n fatal error in ZV_sizeAndEntries(%p,%p,%p)"
161 "\n bad input\n", dv, psize, pentries) ;
162 exit(-1) ;
163 }
164 *psize = dv->size ;
165 *pentries = dv->vec ;
166
167 return ; }
168
169 /*--------------------------------------------------------------------*/
170 /*
171 ---------------------------
172 set and entry in the vector
173
174 created -- 98jan22, cca
175 ---------------------------
176 */
177 void
ZV_setEntry(ZV * dv,int loc,double real,double imag)178 ZV_setEntry (
179 ZV *dv,
180 int loc,
181 double real,
182 double imag
183 ) {
184 /*
185 ---------------
186 check the input
187 ---------------
188 */
189 if ( dv == NULL || loc < 0 ) {
190 fprintf(stderr, "\n fatal error in ZV_setEntry(%p,%d,%f,%f)"
191 "\n bad input\n", dv, loc, real, imag) ;
192 exit(-1) ;
193 }
194 if ( loc >= dv->maxsize ) {
195 int newmaxsize = (int) 1.25*dv->maxsize ;
196 if ( newmaxsize < 10 ) {
197 newmaxsize = 10 ;
198 }
199 if ( loc >= newmaxsize ) {
200 newmaxsize = loc + 1 ;
201 }
202 ZV_setMaxsize(dv, newmaxsize) ;
203 }
204 if ( loc >= dv->size ) {
205 dv->size = loc + 1 ;
206 }
207 dv->vec[2*loc] = real ;
208 dv->vec[2*loc+1] = imag ;
209
210 return ; }
211
212 /*--------------------------------------------------------------------*/
213