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