@@ -74,3 +74,74 @@ def global_option_get_char(field):
7474 f"GxB_Global_Option_get_CHAR failed with info={ info } "
7575 )
7676 return ffi .string (val [0 ]).decode ()
77+
78+
79+ def global_get_int32 (field ):
80+ """Get a global property as an int32.
81+
82+ >>> isinstance(global_get_int32(lib.GxB_NTHREADS), int)
83+ True
84+
85+ """
86+ val = ffi .new ("int32_t*" )
87+ info = lib .GrB_Global_get_INT32 (lib .GrB_GLOBAL , val , field )
88+ if info != lib .GrB_SUCCESS :
89+ raise _error_code_lookup .get (info , RuntimeError )(
90+ f"GrB_Global_get_INT32 failed with info={ info } "
91+ )
92+ return val [0 ]
93+
94+
95+ def global_set_int32 (field , value ):
96+ """Set a global property from an int32.
97+
98+ >>> nthreads = global_get_int32(lib.GxB_NTHREADS)
99+ >>> global_set_int32(lib.GxB_NTHREADS, nthreads)
100+
101+ """
102+ info = lib .GrB_Global_set_INT32 (lib .GrB_GLOBAL , ffi .cast ("int32_t" , value ), field )
103+ if info != lib .GrB_SUCCESS :
104+ raise _error_code_lookup .get (info , RuntimeError )(
105+ f"GrB_Global_set_INT32 failed with info={ info } "
106+ )
107+
108+
109+ def global_get_size (field ):
110+ """Get a global property as a size_t.
111+
112+ >>> isinstance(global_get_size(lib.GrB_NAME), int)
113+ True
114+
115+ """
116+ val = ffi .new ("size_t*" )
117+ info = lib .GrB_Global_get_SIZE (lib .GrB_GLOBAL , val , field )
118+ if info != lib .GrB_SUCCESS :
119+ raise _error_code_lookup .get (info , RuntimeError )(
120+ f"GrB_Global_get_SIZE failed with info={ info } "
121+ )
122+ return val [0 ]
123+
124+
125+ def global_get_string (field ):
126+ """Get a global property as a string.
127+
128+ >>> 'SuiteSparse:GraphBLAS' in global_get_string(lib.GrB_NAME)
129+ True
130+
131+ """
132+ val = ffi .new ("char[256]" )
133+ info = lib .GrB_Global_get_String (lib .GrB_GLOBAL , val , field )
134+ if info != lib .GrB_SUCCESS :
135+ raise _error_code_lookup .get (info , RuntimeError )(
136+ f"GrB_Global_get_String failed with info={ info } "
137+ )
138+ return ffi .string (val ).decode ()
139+
140+
141+ def global_set_string (field , value ):
142+ """Set a global property from a string."""
143+ info = lib .GrB_Global_set_String (lib .GrB_GLOBAL , value .encode (), field )
144+ if info != lib .GrB_SUCCESS :
145+ raise _error_code_lookup .get (info , RuntimeError )(
146+ f"GrB_Global_set_String failed with info={ info } "
147+ )
0 commit comments