Upgrade to 1.46.0
[platform/upstream/nghttp2.git] / third-party / mruby / oss-fuzz / ruby.proto
1 syntax = "proto2";
2
3 message VarRef {
4   required int32 varnum = 1;
5 }
6
7 message ArrType {
8     repeated Const elements = 1;
9 }
10
11 message KVPair {
12     required string key = 1;
13     required string val = 2;
14 }
15
16 message HashType {
17     repeated KVPair keyval = 1;
18 }
19
20 message StringExtNoArg {
21   enum StrExtOp {
22     DUMP = 0;
23     STRIP = 1;
24     LSTRIP = 2;
25     RSTRIP = 3;
26     STRIPE = 4;
27     LSTRIPE = 5;
28     RSTRIPE = 6;
29     SWAPCASE = 7;
30     SWAPCASEE = 8;
31     SQUEEZE = 9;
32   }
33   required StrExtOp str_op = 1;
34   required string str_arg = 2;
35 }
36
37 message MathConst {
38     enum MathConstLit {
39         PI = 0;
40         E = 1;
41     }
42     required MathConstLit math_const = 1;
43 }
44
45 message Const {
46     oneof const_oneof {
47         uint32 int_lit = 1;
48         bool bool_val = 4;
49     }
50 }
51
52 message BinaryOp {
53   enum Op {
54     ADD = 0;
55     SUB = 1;
56     MUL = 2;
57     DIV = 3;
58     MOD = 4;
59     XOR = 5;
60     AND = 6;
61     OR = 7;
62     EQ = 8;
63     NE = 9;
64     LE = 10;
65     GE = 11;
66     LT = 12;
67     GT = 13;
68     RS = 14;
69   };
70   required Op op = 1;
71   required Rvalue left = 2;
72   required Rvalue right = 3;
73 }
74
75 message Rvalue {
76   oneof rvalue_oneof {
77     VarRef varref = 1;
78     Const cons = 2;
79     BinaryOp binop = 3;
80   }
81 }
82
83 message AssignmentStatement {
84   required Rvalue rvalue = 2;
85 }
86
87
88 message IfElse {
89   required Rvalue cond = 1;
90   required StatementSeq if_body = 2;
91   required StatementSeq else_body = 3;
92 }
93
94 //TODO: Add Switch statement
95 //message Switch {
96 //    required Rvalue switch_var = 1;
97 //    repeated Rvalue cond = 2;
98 //}
99
100 message Ternary {
101     required Rvalue tern_cond = 1;
102     required Rvalue t_branch = 2;
103     required Rvalue f_branch = 3;
104 }
105
106 message ObjectSpace {
107     enum OS_methods {
108         COUNT = 1;
109     }
110     required OS_methods os_func = 1;
111     required HashType os_arg = 2;
112 }
113
114 message Time {
115     enum T_methods {
116         AT = 1;
117         GM = 2;
118     }
119     required T_methods t_func = 1;
120     required uint32 t_arg = 2;
121 }
122
123 message Array {
124     enum Arr_methods {
125         FLATTEN = 1;
126         COMPACT = 2;
127         FETCH = 3;
128         FILL = 4;
129         ROTATE = 5;
130         ROTATE_E = 6;
131         DELETEIF = 7;
132         INSERT = 8;
133         BSEARCH = 9;
134         KEEPIF = 10;
135         SELECT = 11;
136         VALUES_AT = 12;
137         BLOCK = 13;
138         DIG = 14;
139         SLICE = 15;
140         PERM = 16;
141         COMB = 17;
142         ASSOC = 18;
143         RASSOC = 19;
144     }
145     required Arr_methods arr_func = 1;
146     required ArrType  arr_arg = 2;
147     required Rvalue   val_arg = 3;
148 }
149
150 message MathType {
151     oneof math_arg_oneof {
152         Rvalue math_rval = 2;
153         MathConst math_const = 3;
154     }
155 }
156
157 message MathOps {
158     enum Mops {
159       CBRT = 1;
160       COS = 2;
161       ERF = 3;
162       ERFC = 4;
163       LOG = 5;
164       LOG10 = 6;
165       LOG2 = 7;
166       SIN = 8;
167       SQRT = 9;
168       TAN = 10;
169     }
170     required Mops math_op = 1;
171     required MathType math_arg = 2;
172 }
173
174 message BuiltinFuncs {
175     oneof bifunc_oneof {
176         ObjectSpace os = 1;
177         Time time = 2;
178         Array arr = 3;
179         MathOps mops = 4;
180     }
181 }
182
183 message Statement {
184   oneof stmt_oneof {
185     AssignmentStatement assignment = 1;
186     IfElse              ifelse     = 2;
187     Ternary             ternary_stmt = 3;
188     BuiltinFuncs        builtins = 4;
189     StatementSeq        blockstmt = 5;
190   }
191 }
192
193 message StatementSeq {
194   repeated Statement statements = 1;
195 }
196
197 message Function {
198   required StatementSeq statements = 1;
199 }
200
201 package ruby_fuzzer;