1 //------------------------------------------------------------------------------
2 // gb_string_to_selectop: get a GraphBLAS select operator from a string
3 //------------------------------------------------------------------------------
4
5 // SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
6 // SPDX-License-Identifier: GPL-3.0-or-later
7
8 //------------------------------------------------------------------------------
9
10 #include "gb_matlab.h"
11
12 // select operators, with their equivalent aliases
13
gb_string_to_selectop(char * opstring)14 GxB_SelectOp gb_string_to_selectop // return select operator from a string
15 (
16 char *opstring // string defining the operator
17 )
18 {
19
20 //--------------------------------------------------------------------------
21 // check inputs
22 //--------------------------------------------------------------------------
23
24 CHECK_ERROR (opstring == NULL || opstring [0] == '\0', "invalid selectop") ;
25
26 //--------------------------------------------------------------------------
27 // convert the string to a GraphBLAS select operator
28 //--------------------------------------------------------------------------
29
30 if (MATCH (opstring, "tril"))
31 {
32 return (GxB_TRIL) ;
33 }
34 else if (MATCH (opstring, "triu"))
35 {
36 return (GxB_TRIU) ;
37 }
38 else if (MATCH (opstring, "diag"))
39 {
40 return (GxB_DIAG) ;
41 }
42 else if (MATCH (opstring, "offdiag"))
43 {
44 return (GxB_OFFDIAG) ;
45 }
46 else if (MATCH (opstring, "nonzero") || MATCH (opstring, "~=0"))
47 {
48 return (GxB_NONZERO) ;
49 }
50 else if (MATCH (opstring, "zero") || MATCH (opstring, "==0"))
51 {
52 return (GxB_EQ_ZERO) ;
53 }
54 else if (MATCH (opstring, "positive") || MATCH (opstring, ">0"))
55 {
56 return (GxB_GT_ZERO) ;
57 }
58 else if (MATCH (opstring, "nonnegative") || MATCH (opstring, ">=0"))
59 {
60 return (GxB_GE_ZERO) ;
61 }
62 else if (MATCH (opstring, "negative") || MATCH (opstring, "<0"))
63 {
64 return (GxB_LT_ZERO) ;
65 }
66 else if (MATCH (opstring, "nonpositive") || MATCH (opstring, "<=0"))
67 {
68 return (GxB_LE_ZERO) ;
69 }
70 else if (MATCH (opstring, "~="))
71 {
72 return (GxB_NE_THUNK) ;
73 }
74 else if (MATCH (opstring, "=="))
75 {
76 return (GxB_EQ_THUNK) ;
77 }
78 else if (MATCH (opstring, ">"))
79 {
80 return (GxB_GT_THUNK) ;
81 }
82 else if (MATCH (opstring, ">="))
83 {
84 return (GxB_GE_THUNK) ;
85 }
86 else if (MATCH (opstring, "<"))
87 {
88 return (GxB_LT_THUNK) ;
89 }
90 else if (MATCH (opstring, "<="))
91 {
92 return (GxB_LE_THUNK) ;
93 }
94
95 ERROR2 ("selectop unknown: %s\n", opstring) ;
96 return (NULL) ;
97 }
98
99