LCOV - code coverage report
Current view: top level - src/utility - LAGraph_NameOfType.c (source / functions) Hit Total Coverage
Test: LAGraph code coverage report. Commit id: 7b9d2ee. Current time (UTC): 2025-06-03T21:57:17Z Lines: 29 29 100.0 %
Date: 2025-06-03 22:02:40 Functions: 1 1 100.0 %

          Line data    Source code
       1             : //------------------------------------------------------------------------------
       2             : // LAGraph_NameOfType: return the C name of a GraphBLAS GrB_Type
       3             : //------------------------------------------------------------------------------
       4             : 
       5             : // LAGraph, (c) 2019-2023 by The LAGraph Contributors, All Rights Reserved.
       6             : // SPDX-License-Identifier: BSD-2-Clause
       7             : //
       8             : // For additional details (including references to third party source code and
       9             : // other files) see the LICENSE file or contact permission@sei.cmu.edu. See
      10             : // Contributors.txt for a full list of contributors. Created, in part, with
      11             : // funding and support from the U.S. Government (see Acknowledgments.txt file).
      12             : // DM22-0790
      13             : 
      14             : // Contributed by Timothy A. Davis, Texas A&M University
      15             : 
      16             : //------------------------------------------------------------------------------
      17             : 
      18             : #define LG_FREE_WORK LAGraph_Free ((void **) &s, NULL) ;
      19             : #define LG_FREE_ALL LG_FREE_WORK
      20             : 
      21             : #include "LG_internal.h"
      22             : 
      23          16 : int LAGraph_NameOfType
      24             : (
      25             :     // output:
      26             :     char *name,     // name of the type: user provided array of size at
      27             :                     // least LAGRAPH_MAX_NAME_LEN.
      28             :     // input:
      29             :     GrB_Type type,  // GraphBLAS type
      30             :     char *msg
      31             : )
      32             : {
      33             : 
      34             :     //--------------------------------------------------------------------------
      35             :     // check inputs
      36             :     //--------------------------------------------------------------------------
      37             : 
      38          16 :     char *s = NULL ;
      39          16 :     LG_CLEAR_MSG ;
      40          16 :     LG_ASSERT (type != NULL, GrB_NULL_POINTER) ;
      41          14 :     LG_ASSERT (name != NULL, GrB_NULL_POINTER) ;
      42             : 
      43             :     //--------------------------------------------------------------------------
      44             :     // determine the name of the type
      45             :     //--------------------------------------------------------------------------
      46             : 
      47             :     size_t len ;
      48          13 :     name [0] = '\0' ;
      49             : 
      50             :     int32_t typecode ;
      51          13 :     GRB_TRY (GrB_Type_get_INT32 (type, &typecode, GrB_EL_TYPE_CODE)) ;
      52             : 
      53          13 :     switch (typecode)
      54             :     {
      55             : 
      56             :         // for user-defined types, return the GrB_NAME of the type
      57           2 :         default :
      58             :         case GrB_UDT_CODE    : 
      59           2 :             GRB_TRY (GrB_Type_get_SIZE (type, &len, GrB_NAME)) ;
      60           2 :             LG_TRY (LAGraph_Malloc ((void **) &s, len+1, sizeof (char), msg)) ;
      61           2 :             GRB_TRY (GrB_Type_get_String (type, s, GrB_NAME)) ;
      62           2 :             len = LAGRAPH_MIN (len, LAGRAPH_MAX_NAME_LEN) ;
      63           2 :             strncpy (name, s, len) ;
      64           2 :             name [LAGRAPH_MAX_NAME_LEN-1] = '\0' ;
      65           2 :             LG_FREE_WORK ;
      66           2 :             break ;
      67             : 
      68             :         // for built-in types, return the C type name
      69           1 :         case GrB_BOOL_CODE   : strcpy (name, "bool"    ) ; break ;
      70           1 :         case GrB_INT8_CODE   : strcpy (name, "int8_t"  ) ; break ;
      71           1 :         case GrB_INT16_CODE  : strcpy (name, "int16_t" ) ; break ;
      72           1 :         case GrB_INT32_CODE  : strcpy (name, "int32_t" ) ; break ;
      73           1 :         case GrB_INT64_CODE  : strcpy (name, "int64_t" ) ; break ;
      74           1 :         case GrB_UINT8_CODE  : strcpy (name, "uint8_t" ) ; break ;
      75           1 :         case GrB_UINT16_CODE : strcpy (name, "uint16_t") ; break ;
      76           1 :         case GrB_UINT32_CODE : strcpy (name, "uint32_t") ; break ;
      77           1 :         case GrB_UINT64_CODE : strcpy (name, "uint64_t") ; break ;
      78           1 :         case GrB_FP32_CODE   : strcpy (name, "float"   ) ; break ;
      79           1 :         case GrB_FP64_CODE   : strcpy (name, "double"  ) ; break ;
      80             : //      case GxB_FC32_CODE   : strcpy (name, "float complex"  ) ; break ;
      81             : //      case GxB_FC64_CODE   : strcpy (name, "double complex" ) ; break ;
      82             :     }
      83          13 :     return (GrB_SUCCESS) ;
      84             : }
      85             : 

Generated by: LCOV version 1.14