| 10 | #include "GB.h" |
| 11 | |
| 12 | GrB_Info GrB_Descriptor_set // set a parameter in a descriptor |
| 13 | ( |
| 14 | GrB_Descriptor desc, // descriptor to modify |
| 15 | GrB_Desc_Field field, // parameter to change |
| 16 | GrB_Desc_Value value // value to change it to |
| 17 | ) |
| 18 | { |
| 19 | |
| 20 | //-------------------------------------------------------------------------- |
| 21 | // check inputs |
| 22 | //-------------------------------------------------------------------------- |
| 23 | |
| 24 | if (desc != NULL && desc->header_size == 0) |
| 25 | { |
| 26 | // built-in descriptors may not be modified |
| 27 | return (GrB_INVALID_VALUE) ; |
| 28 | } |
| 29 | |
| 30 | GB_WHERE (desc, "GrB_Descriptor_set (desc, field, value)") ; |
| 31 | GB_RETURN_IF_NULL_OR_FAULTY (desc) ; |
| 32 | ASSERT_DESCRIPTOR_OK (desc, "desc to set", GB0) ; |
| 33 | |
| 34 | //-------------------------------------------------------------------------- |
| 35 | // set the parameter |
| 36 | //-------------------------------------------------------------------------- |
| 37 | |
| 38 | switch (field) |
| 39 | { |
| 40 | |
| 41 | case GrB_OUTP : |
| 42 | |
| 43 | if (! (value == GxB_DEFAULT || value == GrB_REPLACE)) |
| 44 | { |
| 45 | GB_ERROR (GrB_INVALID_VALUE, |
| 46 | "invalid descriptor value [%d] for GrB_OUTP field;\n" |
| 47 | "must be GxB_DEFAULT [%d] or GrB_REPLACE [%d]", |
| 48 | (int) value, (int) GxB_DEFAULT, (int) GrB_REPLACE) ; |
| 49 | } |
| 50 | desc->out = value ; |
| 51 | break ; |
| 52 | |
| 53 | case GrB_MASK : |
| 54 | { |
| 55 | |
| 56 | if (! (value == GxB_DEFAULT || |
| 57 | value == GrB_COMP || |
| 58 | value == GrB_STRUCTURE || |
| 59 | value == (GrB_COMP + GrB_STRUCTURE))) |
| 60 | { |
| 61 | GB_ERROR (GrB_INVALID_VALUE, |
| 62 | "invalid descriptor value [%d] for GrB_MASK field;\n" |
| 63 | "must be GxB_DEFAULT [%d], GrB_COMP [%d],\n" |
| 64 | "GrB_STRUCTURE [%d], or GrB_COMP+GrB_STRUCTURE [%d]", |
| 65 | (int) value, (int) GxB_DEFAULT, (int) GrB_COMP, |
| 66 | (int) GrB_STRUCTURE, |
| 67 | (int) (GrB_COMP + GrB_STRUCTURE)) ; |
| 68 | } |
| 69 | int mask = (int) desc->mask ; |
no outgoing calls
no test coverage detected