| 34 | #include "GB_static_header.h" |
| 35 | |
| 36 | GrB_Info GB_assign_prep |
| 37 | ( |
| 38 | // output: |
| 39 | GrB_Matrix *Chandle, // C_in, or C2 if C is aliased to M or A |
| 40 | GrB_Matrix *Mhandle, // M_in, or a modified version M2 |
| 41 | GrB_Matrix *Ahandle, // A_in, or a modified version A2 |
| 42 | int *subassign_method, // subassign method to use |
| 43 | |
| 44 | // modified versions of the matrices C, M, and A: |
| 45 | GrB_Matrix *C2_handle, // NULL, or a copy of C |
| 46 | GrB_Matrix *M2_handle, // NULL, or a temporary matrix |
| 47 | GrB_Matrix *A2_handle, // NULL, or a temporary matrix |
| 48 | |
| 49 | // static headers for C2, M2, A2, MT and AT |
| 50 | GrB_Matrix C2_header_handle, |
| 51 | GrB_Matrix M2_header_handle, |
| 52 | GrB_Matrix A2_header_handle, |
| 53 | GrB_Matrix MT_header_handle, |
| 54 | GrB_Matrix AT_header_handle, |
| 55 | |
| 56 | // modified versions of the Rows/Cols lists, and their analysis: |
| 57 | GrB_Index **I_handle, // Rows, Cols, or a modified copy I2 |
| 58 | GrB_Index **I2_handle, // NULL, or sorted/pruned Rows or Cols |
| 59 | size_t *I2_size_handle, |
| 60 | int64_t *ni_handle, |
| 61 | int64_t *nI_handle, |
| 62 | int *Ikind_handle, |
| 63 | int64_t Icolon [3], |
| 64 | |
| 65 | GrB_Index **J_handle, // Rows, Cols, or a modified copy J2 |
| 66 | GrB_Index **J2_handle, // NULL, or sorted/pruned Rows or Cols |
| 67 | size_t *J2_size_handle, |
| 68 | int64_t *nj_handle, |
| 69 | int64_t *nJ_handle, |
| 70 | int *Jkind_handle, |
| 71 | int64_t Jcolon [3], |
| 72 | |
| 73 | GrB_Type *atype_handle, // type of A or the scalar |
| 74 | |
| 75 | // input/output |
| 76 | GrB_Matrix C_in, // input/output matrix for results |
| 77 | bool *C_replace, // descriptor for C |
| 78 | int *assign_kind, // row/col assign, assign, or subassign |
| 79 | |
| 80 | // input |
| 81 | const GrB_Matrix M_in, // optional mask for C |
| 82 | const bool Mask_comp, // true if mask is complemented |
| 83 | const bool Mask_struct, // if true, use the only structure of M |
| 84 | bool M_transpose, // true if the mask should be transposed |
| 85 | const GrB_BinaryOp accum, // optional accum for accum(C,T) |
| 86 | const GrB_Matrix A_in, // input matrix |
| 87 | bool A_transpose, // true if A is transposed |
| 88 | const GrB_Index *Rows, // row indices |
| 89 | const GrB_Index nRows_in, // number of row indices |
| 90 | const GrB_Index *Cols, // column indices |
| 91 | const GrB_Index nCols_in, // number of column indices |
| 92 | const bool scalar_expansion, // if true, expand scalar to A |
| 93 | const void *scalar, // scalar to be expanded |
no test coverage detected