Skip to content

Commit 59c61c1

Browse files
authored
Merge pull request #31 from eriknw/update6.2.0
Update to SS:GB 6.2.1
2 parents 9585e0c + bc3bff4 commit 59c61c1

File tree

4 files changed

+136
-16
lines changed

4 files changed

+136
-16
lines changed

.github/workflows/test.yml

+5-10
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ jobs:
1414
strategy:
1515
fail-fast: false
1616
matrix:
17-
# os: ["ubuntu-latest", "macos-latest", "windows-latest"] # Waiting on builds
18-
os: ["ubuntu-latest"]
17+
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
18+
# os: ["ubuntu-latest"]
1919
python-version: ["3.8", "3.9", "3.10"]
2020
source: ["conda-forge"]
21-
graphblas-version: ["6.1.3"]
21+
# source: ["source"]
22+
graphblas-version: ["6.2.1"]
2223
steps:
2324
- name: Checkout
2425
uses: actions/checkout@v2
@@ -64,11 +65,5 @@ jobs:
6465
- name: create_headers.py check
6566
if: (! contains(matrix.os, 'windows'))
6667
run: |
67-
# These shouldn't change, so make copies to compare to
68-
cp suitesparse_graphblas/suitesparse_graphblas.h .
69-
cp suitesparse_graphblas/suitesparse_graphblas_no_complex.h .
70-
cp suitesparse_graphblas/source.c .
7168
coverage run -a --branch suitesparse_graphblas/create_headers.py
72-
diff suitesparse_graphblas/suitesparse_graphblas.h suitesparse_graphblas.h
73-
diff suitesparse_graphblas/suitesparse_graphblas_no_complex.h suitesparse_graphblas_no_complex.h
74-
diff suitesparse_graphblas/source.c source.c
69+
git diff --exit-code # error if anything changed

suitesparse_graphblas/create_headers.py

+21-6
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ def groupby(index, seq):
315315
"CMPLX",
316316
"CMPLXF",
317317
"GB_PUBLIC",
318+
"GB_restrict",
318319
"GRAPHBLAS_H",
319320
"GrB_INVALID_HANDLE",
320321
"GrB_NULL",
@@ -359,6 +360,7 @@ def get_groups(ast):
359360
seen = set()
360361
groups = {}
361362
vals = {x for x in lines if "extern GrB_Info GxB" in x} - seen
363+
vals |= {x for x in lines if "extern " in x and "GxB_Iterator" in x and "GB" not in x} - seen
362364
seen.update(vals)
363365
groups["GxB methods"] = sorted(vals, key=sort_key)
364366

@@ -367,6 +369,7 @@ def get_groups(ast):
367369
groups["GrB methods"] = sorted(vals, key=sort_key)
368370

369371
vals = {x for x in lines if "extern GrB_Info GB" in x} - seen
372+
vals |= {x for x in lines if "extern " in x and "GxB_Iterator" in x and "GB" in x} - seen
370373
seen.update(vals)
371374
groups["GB methods"] = sorted(vals, key=sort_key)
372375

@@ -580,7 +583,9 @@ def visit_Decl(self, node):
580583
self.functions.append(node)
581584

582585
def handle_function_node(node):
583-
if generator.visit(node.type.type) != "GrB_Info":
586+
if generator.visit(node.type.type) != "GrB_Info" and "GxB_Iterator" not in generator.visit(
587+
node
588+
):
584589
raise ValueError(generator.visit(node))
585590
if node.name in DEPRECATED:
586591
return
@@ -594,11 +599,14 @@ def handle_function_node(node):
594599
group = "vector"
595600
elif "GxB_Scalar" in text or "GrB_Scalar" in text:
596601
group = "scalar"
602+
elif "GxB_Iterator" in text:
603+
group = "iterator"
597604
else:
598605
group = node.name.split("_", 2)[1]
599606
group = {
600607
# Apply our naming scheme
601608
"GrB_Matrix": "matrix",
609+
"Matrix": "matrix",
602610
"GrB_Vector": "vector",
603611
"GxB_Scalar": "scalar",
604612
"SelectOp": "selectop",
@@ -610,6 +618,7 @@ def handle_function_node(node):
610618
"Type": "type",
611619
"UnaryOp": "unary",
612620
"IndexUnaryOp": "indexunary",
621+
"Iterator": "iterator",
613622
# "everything else" is "core"
614623
"getVersion": "core",
615624
"Global": "core",
@@ -632,9 +641,15 @@ def handle_function_node(node):
632641
grb_nodes = [node for node in visitor.functions if node.name.startswith("GrB_")]
633642
gxb_nodes = [node for node in visitor.functions if node.name.startswith("GxB_")]
634643
gb_nodes = [node for node in visitor.functions if node.name.startswith("GB_")]
635-
assert len(grb_nodes) == len(groups["GrB methods"])
636-
assert len(gxb_nodes) == len(groups["GxB methods"])
637-
assert len(gb_nodes) == len(groups["GB methods"])
644+
assert len(grb_nodes) == len(groups["GrB methods"]), (
645+
len(grb_nodes),
646+
len(groups["GrB methods"]),
647+
)
648+
assert len(gxb_nodes) == len(groups["GxB methods"]), (
649+
len(gxb_nodes),
650+
len(groups["GxB methods"]),
651+
)
652+
assert len(gb_nodes) == len(groups["GB methods"]), (len(gb_nodes), len(groups["GB methods"]))
638653

639654
grb_funcs = (handle_function_node(node) for node in grb_nodes)
640655
gxb_funcs = (handle_function_node(node) for node in gxb_nodes)
@@ -744,7 +759,7 @@ def handle_funcs(group):
744759
return text
745760

746761

747-
def create_source_text(*, char_defines=None):
762+
def create_source_text(groups, *, char_defines=None):
748763
if char_defines is None:
749764
char_defines = CHAR_DEFINES
750765
text = [
@@ -814,7 +829,7 @@ def main():
814829

815830
# Create source
816831
print(f"Step 5: create {source_c}")
817-
text = create_source_text()
832+
text = create_source_text(groups)
818833
with open(source_c, "w") as f:
819834
f.write("\n".join(text))
820835

suitesparse_graphblas/suitesparse_graphblas.h

+56
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ typedef uint64_t GrB_Index;
1515
/* GxB typedefs */
1616
typedef double _Complex GxB_FC64_t;
1717
typedef float _Complex GxB_FC32_t;
18+
typedef struct GB_Iterator_opaque *GxB_Iterator;
1819
typedef struct GB_Scalar_opaque *GxB_Scalar;
1920
typedef struct GB_SelectOp_opaque *GxB_SelectOp;
2021

@@ -68,6 +69,7 @@ typedef enum
6869
{
6970
GrB_SUCCESS = 0,
7071
GrB_NO_VALUE = 1,
72+
GxB_EXHAUSTED = 2,
7173
GrB_UNINITIALIZED_OBJECT = -1,
7274
GrB_NULL_POINTER = -2,
7375
GrB_INVALID_VALUE = -3,
@@ -3059,6 +3061,14 @@ extern GrB_Info GrB_Vector_wait(GrB_Vector v, GrB_WaitMode waitmode);
30593061
/* binary */
30603062
extern GrB_Info GB_BinaryOp_new(GrB_BinaryOp *binaryop, GxB_binary_function function, GrB_Type ztype, GrB_Type xtype, GrB_Type ytype, const char *binop_name);
30613063

3064+
/* iterator */
3065+
extern GrB_Info GB_Iterator_rc_bitmap_next(GxB_Iterator iterator);
3066+
extern GrB_Info GB_Iterator_rc_seek(GxB_Iterator iterator, GrB_Index j, bool jth_vector);
3067+
extern GrB_Info GB_Vector_Iterator_bitmap_seek(GxB_Iterator iterator, GrB_Index p);
3068+
3069+
/* matrix */
3070+
extern GrB_Info GB_Iterator_attach(GxB_Iterator iterator, GrB_Matrix A, GxB_Format_Value format, GrB_Descriptor desc);
3071+
30623072
/* selectop */
30633073
extern GrB_Info GB_SelectOp_new(GxB_SelectOp *selectop, GxB_select_function function, GrB_Type xtype, GrB_Type ttype, const char *name);
30643074

@@ -3101,8 +3111,51 @@ extern GrB_Info GxB_IndexUnaryOp_xtype_name(char *type_name, const GrB_IndexUnar
31013111
extern GrB_Info GxB_IndexUnaryOp_ytype_name(char *type_name, const GrB_IndexUnaryOp op);
31023112
extern GrB_Info GxB_IndexUnaryOp_ztype_name(char *type_name, const GrB_IndexUnaryOp op);
31033113

3114+
/* iterator */
3115+
extern GrB_Index GxB_Matrix_Iterator_getp(GxB_Iterator iterator);
3116+
extern GrB_Index GxB_Matrix_Iterator_getpmax(GxB_Iterator iterator);
3117+
extern GrB_Index GxB_Vector_Iterator_getIndex(GxB_Iterator iterator);
3118+
extern GrB_Index GxB_Vector_Iterator_getp(GxB_Iterator iterator);
3119+
extern GrB_Index GxB_Vector_Iterator_getpmax(GxB_Iterator iterator);
3120+
extern GrB_Index GxB_colIterator_getColIndex(GxB_Iterator iterator);
3121+
extern GrB_Index GxB_colIterator_getRowIndex(GxB_Iterator iterator);
3122+
extern GrB_Index GxB_colIterator_kount(GxB_Iterator iterator);
3123+
extern GrB_Index GxB_rowIterator_getColIndex(GxB_Iterator iterator);
3124+
extern GrB_Index GxB_rowIterator_getRowIndex(GxB_Iterator iterator);
3125+
extern GrB_Index GxB_rowIterator_kount(GxB_Iterator iterator);
3126+
extern GrB_Info GxB_Iterator_free(GxB_Iterator *iterator);
3127+
extern GrB_Info GxB_Iterator_new(GxB_Iterator *iterator);
3128+
extern GrB_Info GxB_Matrix_Iterator_next(GxB_Iterator iterator);
3129+
extern GrB_Info GxB_Matrix_Iterator_seek(GxB_Iterator iterator, GrB_Index p);
3130+
extern GrB_Info GxB_Vector_Iterator_next(GxB_Iterator iterator);
3131+
extern GrB_Info GxB_Vector_Iterator_seek(GxB_Iterator iterator, GrB_Index p);
3132+
extern GrB_Info GxB_colIterator_kseek(GxB_Iterator iterator, GrB_Index k);
3133+
extern GrB_Info GxB_colIterator_nextCol(GxB_Iterator iterator);
3134+
extern GrB_Info GxB_colIterator_nextRow(GxB_Iterator iterator);
3135+
extern GrB_Info GxB_colIterator_seekCol(GxB_Iterator iterator, GrB_Index col);
3136+
extern GrB_Info GxB_rowIterator_kseek(GxB_Iterator iterator, GrB_Index k);
3137+
extern GrB_Info GxB_rowIterator_nextCol(GxB_Iterator iterator);
3138+
extern GrB_Info GxB_rowIterator_nextRow(GxB_Iterator iterator);
3139+
extern GrB_Info GxB_rowIterator_seekRow(GxB_Iterator iterator, GrB_Index row);
3140+
extern GxB_FC32_t GxB_Iterator_get_FC32(GxB_Iterator iterator);
3141+
extern GxB_FC64_t GxB_Iterator_get_FC64(GxB_Iterator iterator);
3142+
extern bool GxB_Iterator_get_BOOL(GxB_Iterator iterator);
3143+
extern double GxB_Iterator_get_FP64(GxB_Iterator iterator);
3144+
extern float GxB_Iterator_get_FP32(GxB_Iterator iterator);
3145+
extern int8_t GxB_Iterator_get_INT8(GxB_Iterator iterator);
3146+
extern int16_t GxB_Iterator_get_INT16(GxB_Iterator iterator);
3147+
extern int32_t GxB_Iterator_get_INT32(GxB_Iterator iterator);
3148+
extern int64_t GxB_Iterator_get_INT64(GxB_Iterator iterator);
3149+
extern uint8_t GxB_Iterator_get_UINT8(GxB_Iterator iterator);
3150+
extern uint16_t GxB_Iterator_get_UINT16(GxB_Iterator iterator);
3151+
extern uint32_t GxB_Iterator_get_UINT32(GxB_Iterator iterator);
3152+
extern uint64_t GxB_Iterator_get_UINT64(GxB_Iterator iterator);
3153+
extern void GxB_Iterator_get_UDT(GxB_Iterator iterator, void *value);
3154+
extern void GxB_Matrix_Iterator_getIndex(GxB_Iterator iterator, GrB_Index *row, GrB_Index *col);
3155+
31043156
/* matrix */
31053157
extern GrB_Info GxB_Col_subassign(GrB_Matrix C, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_Vector u, const GrB_Index *I, GrB_Index ni, GrB_Index j, const GrB_Descriptor desc);
3158+
extern GrB_Info GxB_Matrix_Iterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
31063159
extern GrB_Info GxB_Matrix_Option_get(GrB_Matrix A, GxB_Option_Field field, ...);
31073160
extern GrB_Info GxB_Matrix_Option_set(GrB_Matrix A, GxB_Option_Field field, ...);
31083161
extern GrB_Info GxB_Matrix_apply_BinaryOp1st(GrB_Matrix C, const GrB_Matrix Mask, const GrB_BinaryOp accum, const GrB_BinaryOp op, const GrB_Scalar x, const GrB_Matrix A, const GrB_Descriptor desc);
@@ -3195,6 +3248,8 @@ extern GrB_Info GxB_Matrix_unpack_HyperCSC(GrB_Matrix A, GrB_Index **Ap, GrB_Ind
31953248
extern GrB_Info GxB_Matrix_unpack_HyperCSR(GrB_Matrix A, GrB_Index **Ap, GrB_Index **Ah, GrB_Index **Aj, void **Ax, GrB_Index *Ap_size, GrB_Index *Ah_size, GrB_Index *Aj_size, GrB_Index *Ax_size, bool *iso, GrB_Index *nvec, bool *jumbled, const GrB_Descriptor desc);
31963249
extern GrB_Info GxB_Row_subassign(GrB_Matrix C, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_Vector u, GrB_Index i, const GrB_Index *J, GrB_Index nj, const GrB_Descriptor desc);
31973250
extern GrB_Info GxB_Vector_diag(GrB_Vector v, const GrB_Matrix A, int64_t k, const GrB_Descriptor desc);
3251+
extern GrB_Info GxB_colIterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
3252+
extern GrB_Info GxB_rowIterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
31983253

31993254
/* monoid */
32003255
extern GrB_Info GxB_Monoid_fprint(GrB_Monoid monoid, const char *name, GxB_Print_Level pr, FILE *f);
@@ -3289,6 +3344,7 @@ extern GrB_Info GxB_UnaryOp_ztype(GrB_Type *ztype, GrB_UnaryOp unaryop);
32893344
extern GrB_Info GxB_UnaryOp_ztype_name(char *type_name, const GrB_UnaryOp unaryop);
32903345

32913346
/* vector */
3347+
extern GrB_Info GxB_Vector_Iterator_attach(GxB_Iterator iterator, GrB_Vector v, GrB_Descriptor desc);
32923348
extern GrB_Info GxB_Vector_Option_get(GrB_Vector A, GxB_Option_Field field, ...);
32933349
extern GrB_Info GxB_Vector_Option_set(GrB_Vector A, GxB_Option_Field field, ...);
32943350
extern GrB_Info GxB_Vector_apply_BinaryOp1st(GrB_Vector w, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_BinaryOp op, const GrB_Scalar x, const GrB_Vector u, const GrB_Descriptor desc);

suitesparse_graphblas/suitesparse_graphblas_no_complex.h

+54
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ typedef struct GB_Vector_opaque *GrB_Vector;
1313
typedef uint64_t GrB_Index;
1414

1515
/* GxB typedefs */
16+
typedef struct GB_Iterator_opaque *GxB_Iterator;
1617
typedef struct GB_Scalar_opaque *GxB_Scalar;
1718
typedef struct GB_SelectOp_opaque *GxB_SelectOp;
1819

@@ -66,6 +67,7 @@ typedef enum
6667
{
6768
GrB_SUCCESS = 0,
6869
GrB_NO_VALUE = 1,
70+
GxB_EXHAUSTED = 2,
6971
GrB_UNINITIALIZED_OBJECT = -1,
7072
GrB_NULL_POINTER = -2,
7173
GrB_INVALID_VALUE = -3,
@@ -2885,6 +2887,14 @@ extern GrB_Info GrB_Vector_wait(GrB_Vector v, GrB_WaitMode waitmode);
28852887
/* binary */
28862888
extern GrB_Info GB_BinaryOp_new(GrB_BinaryOp *binaryop, GxB_binary_function function, GrB_Type ztype, GrB_Type xtype, GrB_Type ytype, const char *binop_name);
28872889

2890+
/* iterator */
2891+
extern GrB_Info GB_Iterator_rc_bitmap_next(GxB_Iterator iterator);
2892+
extern GrB_Info GB_Iterator_rc_seek(GxB_Iterator iterator, GrB_Index j, bool jth_vector);
2893+
extern GrB_Info GB_Vector_Iterator_bitmap_seek(GxB_Iterator iterator, GrB_Index p);
2894+
2895+
/* matrix */
2896+
extern GrB_Info GB_Iterator_attach(GxB_Iterator iterator, GrB_Matrix A, GxB_Format_Value format, GrB_Descriptor desc);
2897+
28882898
/* selectop */
28892899
extern GrB_Info GB_SelectOp_new(GxB_SelectOp *selectop, GxB_select_function function, GrB_Type xtype, GrB_Type ttype, const char *name);
28902900

@@ -2927,8 +2937,49 @@ extern GrB_Info GxB_IndexUnaryOp_xtype_name(char *type_name, const GrB_IndexUnar
29272937
extern GrB_Info GxB_IndexUnaryOp_ytype_name(char *type_name, const GrB_IndexUnaryOp op);
29282938
extern GrB_Info GxB_IndexUnaryOp_ztype_name(char *type_name, const GrB_IndexUnaryOp op);
29292939

2940+
/* iterator */
2941+
extern GrB_Index GxB_Matrix_Iterator_getp(GxB_Iterator iterator);
2942+
extern GrB_Index GxB_Matrix_Iterator_getpmax(GxB_Iterator iterator);
2943+
extern GrB_Index GxB_Vector_Iterator_getIndex(GxB_Iterator iterator);
2944+
extern GrB_Index GxB_Vector_Iterator_getp(GxB_Iterator iterator);
2945+
extern GrB_Index GxB_Vector_Iterator_getpmax(GxB_Iterator iterator);
2946+
extern GrB_Index GxB_colIterator_getColIndex(GxB_Iterator iterator);
2947+
extern GrB_Index GxB_colIterator_getRowIndex(GxB_Iterator iterator);
2948+
extern GrB_Index GxB_colIterator_kount(GxB_Iterator iterator);
2949+
extern GrB_Index GxB_rowIterator_getColIndex(GxB_Iterator iterator);
2950+
extern GrB_Index GxB_rowIterator_getRowIndex(GxB_Iterator iterator);
2951+
extern GrB_Index GxB_rowIterator_kount(GxB_Iterator iterator);
2952+
extern GrB_Info GxB_Iterator_free(GxB_Iterator *iterator);
2953+
extern GrB_Info GxB_Iterator_new(GxB_Iterator *iterator);
2954+
extern GrB_Info GxB_Matrix_Iterator_next(GxB_Iterator iterator);
2955+
extern GrB_Info GxB_Matrix_Iterator_seek(GxB_Iterator iterator, GrB_Index p);
2956+
extern GrB_Info GxB_Vector_Iterator_next(GxB_Iterator iterator);
2957+
extern GrB_Info GxB_Vector_Iterator_seek(GxB_Iterator iterator, GrB_Index p);
2958+
extern GrB_Info GxB_colIterator_kseek(GxB_Iterator iterator, GrB_Index k);
2959+
extern GrB_Info GxB_colIterator_nextCol(GxB_Iterator iterator);
2960+
extern GrB_Info GxB_colIterator_nextRow(GxB_Iterator iterator);
2961+
extern GrB_Info GxB_colIterator_seekCol(GxB_Iterator iterator, GrB_Index col);
2962+
extern GrB_Info GxB_rowIterator_kseek(GxB_Iterator iterator, GrB_Index k);
2963+
extern GrB_Info GxB_rowIterator_nextCol(GxB_Iterator iterator);
2964+
extern GrB_Info GxB_rowIterator_nextRow(GxB_Iterator iterator);
2965+
extern GrB_Info GxB_rowIterator_seekRow(GxB_Iterator iterator, GrB_Index row);
2966+
extern bool GxB_Iterator_get_BOOL(GxB_Iterator iterator);
2967+
extern double GxB_Iterator_get_FP64(GxB_Iterator iterator);
2968+
extern float GxB_Iterator_get_FP32(GxB_Iterator iterator);
2969+
extern int8_t GxB_Iterator_get_INT8(GxB_Iterator iterator);
2970+
extern int16_t GxB_Iterator_get_INT16(GxB_Iterator iterator);
2971+
extern int32_t GxB_Iterator_get_INT32(GxB_Iterator iterator);
2972+
extern int64_t GxB_Iterator_get_INT64(GxB_Iterator iterator);
2973+
extern uint8_t GxB_Iterator_get_UINT8(GxB_Iterator iterator);
2974+
extern uint16_t GxB_Iterator_get_UINT16(GxB_Iterator iterator);
2975+
extern uint32_t GxB_Iterator_get_UINT32(GxB_Iterator iterator);
2976+
extern uint64_t GxB_Iterator_get_UINT64(GxB_Iterator iterator);
2977+
extern void GxB_Iterator_get_UDT(GxB_Iterator iterator, void *value);
2978+
extern void GxB_Matrix_Iterator_getIndex(GxB_Iterator iterator, GrB_Index *row, GrB_Index *col);
2979+
29302980
/* matrix */
29312981
extern GrB_Info GxB_Col_subassign(GrB_Matrix C, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_Vector u, const GrB_Index *I, GrB_Index ni, GrB_Index j, const GrB_Descriptor desc);
2982+
extern GrB_Info GxB_Matrix_Iterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
29322983
extern GrB_Info GxB_Matrix_Option_get(GrB_Matrix A, GxB_Option_Field field, ...);
29332984
extern GrB_Info GxB_Matrix_Option_set(GrB_Matrix A, GxB_Option_Field field, ...);
29342985
extern GrB_Info GxB_Matrix_apply_BinaryOp1st(GrB_Matrix C, const GrB_Matrix Mask, const GrB_BinaryOp accum, const GrB_BinaryOp op, const GrB_Scalar x, const GrB_Matrix A, const GrB_Descriptor desc);
@@ -2995,6 +3046,8 @@ extern GrB_Info GxB_Matrix_unpack_HyperCSC(GrB_Matrix A, GrB_Index **Ap, GrB_Ind
29953046
extern GrB_Info GxB_Matrix_unpack_HyperCSR(GrB_Matrix A, GrB_Index **Ap, GrB_Index **Ah, GrB_Index **Aj, void **Ax, GrB_Index *Ap_size, GrB_Index *Ah_size, GrB_Index *Aj_size, GrB_Index *Ax_size, bool *iso, GrB_Index *nvec, bool *jumbled, const GrB_Descriptor desc);
29963047
extern GrB_Info GxB_Row_subassign(GrB_Matrix C, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_Vector u, GrB_Index i, const GrB_Index *J, GrB_Index nj, const GrB_Descriptor desc);
29973048
extern GrB_Info GxB_Vector_diag(GrB_Vector v, const GrB_Matrix A, int64_t k, const GrB_Descriptor desc);
3049+
extern GrB_Info GxB_colIterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
3050+
extern GrB_Info GxB_rowIterator_attach(GxB_Iterator iterator, GrB_Matrix A, GrB_Descriptor desc);
29983051

29993052
/* monoid */
30003053
extern GrB_Info GxB_Monoid_fprint(GrB_Monoid monoid, const char *name, GxB_Print_Level pr, FILE *f);
@@ -3081,6 +3134,7 @@ extern GrB_Info GxB_UnaryOp_ztype(GrB_Type *ztype, GrB_UnaryOp unaryop);
30813134
extern GrB_Info GxB_UnaryOp_ztype_name(char *type_name, const GrB_UnaryOp unaryop);
30823135

30833136
/* vector */
3137+
extern GrB_Info GxB_Vector_Iterator_attach(GxB_Iterator iterator, GrB_Vector v, GrB_Descriptor desc);
30843138
extern GrB_Info GxB_Vector_Option_get(GrB_Vector A, GxB_Option_Field field, ...);
30853139
extern GrB_Info GxB_Vector_Option_set(GrB_Vector A, GxB_Option_Field field, ...);
30863140
extern GrB_Info GxB_Vector_apply_BinaryOp1st(GrB_Vector w, const GrB_Vector mask, const GrB_BinaryOp accum, const GrB_BinaryOp op, const GrB_Scalar x, const GrB_Vector u, const GrB_Descriptor desc);

0 commit comments

Comments
 (0)