1 //------------------------------------------------------------------------------
2 // GB_Scalar_wrap: wrap a C scalar inside a GraphBLAS scalar
3 //------------------------------------------------------------------------------
4
5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6 // SPDX-License-Identifier: Apache-2.0
7
8 //------------------------------------------------------------------------------
9
10 // This method construct a shallow statically-defined scalar, with no memory
11 // allocations. The scalar is full, with a single entry.
12
13 #include "GB.h"
14 #include "GB_scalar.h"
15
GB_Scalar_wrap(GxB_Scalar s,GrB_Type type,void * Sx)16 GxB_Scalar GB_Scalar_wrap // create a new GxB_Scalar with one entry
17 (
18 GxB_Scalar s, // GxB_Scalar to create
19 GrB_Type type, // type of GxB_Scalar to create
20 void *Sx // becomes S->x, an array of size 1 * type->size
21 )
22 {
23
24 //--------------------------------------------------------------------------
25 // check inputs
26 //--------------------------------------------------------------------------
27
28 ASSERT (s != NULL) ;
29
30 //--------------------------------------------------------------------------
31 // create the GxB_Scalar
32 //--------------------------------------------------------------------------
33
34 s->magic = GB_MAGIC ;
35 s->header_size = 0 ;
36 s->type = (type == NULL) ? GrB_BOOL : type ;
37 s->logger = NULL ;
38 s->logger_size = 0 ;
39
40 s->plen = -1 ;
41 s->vlen = 1 ;
42 s->vdim = 1 ;
43 s->nvec = 1 ;
44
45 s->nvec_nonempty = 1 ;
46
47 s->p = NULL ; s->p_size = 0 ; s->p_shallow = false ;
48 s->h = NULL ; s->h_size = 0 ; s->h_shallow = false ;
49 s->b = NULL ; s->b_size = 0 ; s->b_shallow = false ;
50 s->i = NULL ; s->i_size = 0 ; s->i_shallow = false ;
51 s->x = Sx ; s->x_size = 0 ; s->x_shallow = true ;
52
53 s->nzmax = 1 ;
54 s->nvals = 0 ;
55
56 s->Pending = NULL ;
57 s->nzombies = 0 ;
58
59 s->hyper_switch = GxB_NEVER_HYPER ;
60 s->bitmap_switch = 0.5 ;
61 s->sparsity = GxB_FULL ;
62
63 s->static_header = true ;
64
65 s->is_csc = true ;
66 s->jumbled = false ;
67
68 //--------------------------------------------------------------------------
69 // return result
70 //--------------------------------------------------------------------------
71
72 return (s) ;
73 }
74
75