1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
//------------------------------------------------------------------------------
// GB_matvec_enum_get: get an enum field from a matrix
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2025, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
#include "get_set/GB_get_set.h"
GrB_Info GB_matvec_enum_get (GrB_Matrix A, int32_t *value, int field)
{
switch (field)
{
case GrB_STORAGE_ORIENTATION_HINT :
(*value) = (A->is_csc) ? GrB_COLMAJOR : GrB_ROWMAJOR ;
break ;
case GrB_EL_TYPE_CODE :
(*value) = GB_type_code_get (A->type->code) ;
break ;
case GxB_SPARSITY_CONTROL :
(*value) = A->sparsity_control ;
break ;
case GxB_SPARSITY_STATUS :
(*value) = GB_sparsity (A) ;
break ;
case GxB_IS_READONLY :
(*value) = GB_is_shallow (A) ;
break ;
case GxB_ISO :
(*value) = A->iso ;
break ;
case GxB_HYPER_HASH :
(*value) = !(A->no_hyper_hash) ;
break ;
case GxB_FORMAT :
(*value) = (A->is_csc) ? GxB_BY_COL : GxB_BY_ROW ;
break ;
case GxB_OFFSET_INTEGER_HINT :
(*value) = A->p_control ;
break ;
case GxB_OFFSET_INTEGER_BITS :
(*value) = (A->p_is_32) ? 32 : 64 ;
break ;
case GxB_COLINDEX_INTEGER_HINT :
(*value) = (A->is_csc) ? A->j_control : A->i_control ;
break ;
case GxB_COLINDEX_INTEGER_BITS :
(*value) = ((A->is_csc) ? A->j_is_32 : A->i_is_32) ? 32 : 64 ;
break ;
case GxB_ROWINDEX_INTEGER_HINT :
(*value) = (A->is_csc) ? A->i_control : A->j_control ;
break ;
case GxB_ROWINDEX_INTEGER_BITS :
(*value) = ((A->is_csc) ? A->i_is_32 : A->j_is_32) ? 32 : 64 ;
break ;
case GxB_WILL_WAIT :
(*value) = GB_ANY_PENDING_WORK (A) || GB_hyper_hash_need (A) ;
break ;
default :
return (GrB_INVALID_VALUE) ;
}
#pragma omp flush
return (GrB_SUCCESS) ;
}
|