@@ -10,6 +10,15 @@ const GxB_FC64_t = ComplexF32
10
10
11
11
const GrB_Index = UInt64
12
12
13
+ struct UninitializedObjectError <: Exception end
14
+ struct InvalidObjectError <: Exception end
15
+ struct NullPointerError <: Exception end
16
+ struct InvalidValueError <: Exception end
17
+ struct InvalidIndexError <: Exception end
18
+ struct OutputNotEmptyError <: Exception end
19
+ struct InsufficientSpaceError <: Exception end
20
+ struct PANIC <: Exception end
21
+
13
22
macro wraperror (code)
14
23
MacroTools. @q begin
15
24
info = $ (esc (code))
@@ -18,7 +27,33 @@ macro wraperror(code)
18
27
elseif info == GrB_NO_VALUE
19
28
return nothing
20
29
else
21
- error (string (info))
30
+ if info == GrB_UNINITIALIZED_OBJECT
31
+ throw (UninitializedObjectError)
32
+ elseif info == GrB_INVALID_OBJECT
33
+ throw (InvalidObjectError)
34
+ elseif info == GrB_NULL_POINTER
35
+ throw (NullPointerError)
36
+ elseif info == GrB_INVALID_VALUE
37
+ throw (InvalidValueError)
38
+ elseif info == GrB_INVALID_INDEX
39
+ throw (InvalidIndexError)
40
+ elseif info == GrB_DOMAIN_MISMATCH
41
+ throw (DomainError (nothing , " GraphBLAS Domain Mismatch" ))
42
+ elseif info == GrB_DIMENSION_MISMATCH
43
+ throw (DimensionMismatch ())
44
+ elseif info == GrB_OUTPUT_NOT_EMPTY
45
+ throw (OutputNotEmptyError)
46
+ elseif info == GrB_OUT_OF_MEMORY
47
+ throw (OutOfMemoryError ())
48
+ elseif info == GrB_INSUFFICIENT_SPACE
49
+ throw (InsufficientSpaceError)
50
+ elseif info == GrB_INDEX_OUT_OF_BOUNDS
51
+ throw (BoundsError ())
52
+ elseif info == GrB_PANIC
53
+ throw (PANIC)
54
+ else
55
+ throw (ErrorException (" I don't know how I got here." ))
56
+ end
22
57
end
23
58
end
24
59
end
@@ -810,7 +845,7 @@ for T ∈ valid_vec
810
845
X = Vector {$type} (undef, nvals)
811
846
nvals = Ref {GrB_Index} ()
812
847
$ func (I, X, nvals, v)
813
- nvals[] == length (I) == length (X) || error ( " Mismatched Lengths " )
848
+ nvals[] == length (I) == length (X) || throw ( DimensionMismatch () )
814
849
return I .+ 1 , X
815
850
end
816
851
end
@@ -962,7 +997,7 @@ for T ∈ valid_vec
962
997
X = Vector {$type} (undef, nvals)
963
998
nvals = Ref {GrB_Index} (nvals)
964
999
$ func (I, J, X, nvals, A)
965
- nvals[] == length (I) == length (X) == length (J) || error ( " Mismatched Lengths " )
1000
+ nvals[] == length (I) == length (X) == length (J) || throw ( DimensionMismatch () )
966
1001
return I .+ 1 , J .+ 1 , X
967
1002
end
968
1003
end
0 commit comments