Skip to content

Commit df2e35f

Browse files
committed
feat: Check functions return code
1 parent 1119be9 commit df2e35f

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

src/lib/gsl/vector-and-matrices/module-vector.dylan

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ end module;
3939
define module gsl-vector-impl
4040
use common-dylan;
4141
use c-ffi;
42+
use gsl-common,
43+
import: { with-gsl-check-success };
4244
use gsl-math,
4345
import: { *epsilon*,
4446
f= };

src/lib/gsl/vector-and-matrices/vector.dylan

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ define function gsl-vector-copy
3333
(a :: <gsl-vector>)
3434
=> (b :: <gsl-vector>)
3535
let b = make(<gsl-vector>, size: a.size);
36-
ffi/gsl-vector-memcpy(b.%gsl-vector, a.%gsl-vector);
36+
with-gsl-check-success ()
37+
ffi/gsl-vector-memcpy(b.%gsl-vector, a.%gsl-vector);
38+
end;
3739
b
3840
end;
3941

@@ -101,15 +103,19 @@ end;
101103

102104
define function set-basis!
103105
(v :: <gsl-vector>, index :: <integer>)
104-
=> (v :: <gsl-vector>)
105-
ffi/gsl-vector-set-basis(v.%gsl-vector, index);
106+
=> (v :: <gsl-vector>)
107+
with-gsl-check-success ()
108+
ffi/gsl-vector-set-basis(v.%gsl-vector, index);
109+
end;
106110
v
107111
end;
108112

109113
define function swap!
110-
(v :: <gsl-vector>, i :: <integer>, j :: <integer>)
111-
=> (v :: <gsl-vector>)
112-
ffi/gsl-vector-swap-elements(v.%gsl-vector, i, j);
114+
(v :: <gsl-vector>, i :: <integer>, j :: <integer>)
115+
=> (v :: <gsl-vector>)
116+
with-gsl-check-success ()
117+
ffi/gsl-vector-swap-elements(v.%gsl-vector, i, j);
118+
end;
113119
v
114120
end;
115121

@@ -134,39 +140,49 @@ define method \+
134140
(a :: <gsl-vector>, b :: <gsl-vector>)
135141
=> (sum :: <gsl-vector>)
136142
let sum = a.gsl-vector-copy;
137-
ffi/gsl-vector-add(sum.%gsl-vector, b.%gsl-vector);
143+
with-gsl-check-success ()
144+
ffi/gsl-vector-add(sum.%gsl-vector, b.%gsl-vector);
145+
end;
138146
sum
139147
end;
140148

141149
define method \-
142150
(a :: <gsl-vector>, b :: <gsl-vector>)
143151
=> (diff :: <gsl-vector>)
144152
let diff = a.gsl-vector-copy;
145-
ffi/gsl-vector-sub(diff.%gsl-vector, b.%gsl-vector);
153+
with-gsl-check-success ()
154+
ffi/gsl-vector-sub(diff.%gsl-vector, b.%gsl-vector);
155+
end;
146156
diff
147157
end;
148158

149159
define method \*
150160
(a :: <gsl-vector>, b :: <gsl-vector>)
151161
=> (product :: <gsl-vector>)
152162
let product = a.gsl-vector-copy;
153-
ffi/gsl-vector-mul(product.%gsl-vector, b.%gsl-vector);
163+
with-gsl-check-success ()
164+
ffi/gsl-vector-mul(product.%gsl-vector, b.%gsl-vector);
165+
end;
154166
product
155167
end;
156168

157169
define method \/
158170
(a :: <gsl-vector>, b :: <gsl-vector>)
159171
=> (division :: <gsl-vector>)
160172
let dividend = a.gsl-vector-copy;
161-
ffi/gsl-vector-div(dividend.%gsl-vector, b.%gsl-vector);
173+
with-gsl-check-success ()
174+
ffi/gsl-vector-div(dividend.%gsl-vector, b.%gsl-vector);
175+
end;
162176
dividend
163177
end;
164178

165179
define method \*
166180
(a :: <gsl-vector>, value :: <double-float>)
167181
=> (scaled :: <gsl-vector>)
168182
let scaled = a.gsl-vector-copy;
169-
ffi/gsl-vector-scale(scaled.%gsl-vector, value);
183+
with-gsl-check-success ()
184+
ffi/gsl-vector-scale(scaled.%gsl-vector, value);
185+
end;
170186
scaled
171187
end;
172188

@@ -180,7 +196,9 @@ define method \+
180196
(a :: <gsl-vector>, value :: <double-float>)
181197
=> (v :: <gsl-vector>)
182198
let v = a.gsl-vector-copy;
183-
ffi/gsl-vector-add-constant(v.%gsl-vector, value);
199+
with-gsl-check-success ()
200+
ffi/gsl-vector-add-constant(v.%gsl-vector, value);
201+
end;
184202
v
185203
end;
186204

@@ -194,7 +212,9 @@ define function axpby
194212
(alpha :: <double-float>, x :: <gsl-vector>, beta :: <double-float>, y :: <gsl-vector>)
195213
=> (v :: <gsl-vector>)
196214
let v = y.gsl-vector-copy;
197-
ffi/gsl-vector-axpby(alpha, x.%gsl-vector, beta, v.%gsl-vector);
215+
with-gsl-check-success ()
216+
ffi/gsl-vector-axpby(alpha, x.%gsl-vector, beta, v.%gsl-vector);
217+
end;
198218
v
199219
end;
200220

0 commit comments

Comments
 (0)