summaryrefslogtreecommitdiffhomepage
path: root/oss-fuzz/proto_to_ruby.h
diff options
context:
space:
mode:
authorBhargava Shastry <[email protected]>2019-05-17 14:22:43 +0200
committerBhargava Shastry <[email protected]>2019-05-17 14:28:20 +0200
commit1f3ece9631d3b52911ff7b5fff88fa8fccbbc3f9 (patch)
treee4fa00704183a6eca8412d2b1e526d3af4ef284c /oss-fuzz/proto_to_ruby.h
parentb6e9fab64949b91f00d07c890935642f44147615 (diff)
downloadmruby-1f3ece9631d3b52911ff7b5fff88fa8fccbbc3f9.tar.gz
mruby-1f3ece9631d3b52911ff7b5fff88fa8fccbbc3f9.zip
proto fuzzer: Add source files necessary to compile proto fuzzer
Diffstat (limited to 'oss-fuzz/proto_to_ruby.h')
-rw-r--r--oss-fuzz/proto_to_ruby.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/oss-fuzz/proto_to_ruby.h b/oss-fuzz/proto_to_ruby.h
new file mode 100644
index 000000000..01f9d68bb
--- /dev/null
+++ b/oss-fuzz/proto_to_ruby.h
@@ -0,0 +1,55 @@
+#include <cstdint>
+#include <cstddef>
+#include <string>
+#include <ostream>
+#include <sstream>
+#include <stack>
+#include "ruby.pb.h"
+
+namespace ruby_fuzzer {
+ class protoConverter
+ {
+ public:
+ protoConverter() {
+ m_numLiveVars = 1;
+ m_numVarsPerScope.push(m_numLiveVars);
+ }
+ protoConverter(protoConverter const& x) {
+ m_numLiveVars = x.m_numLiveVars;
+ m_numVarsPerScope = x.m_numVarsPerScope;
+ }
+ ~protoConverter() {}
+ std::string FunctionToString(Function const& _input);
+
+ private:
+ void visit(ArrType const&);
+ void visit(Array const&);
+ void visit(AssignmentStatement const&);
+ void visit(BinaryOp const&);
+ void visit(BuiltinFuncs const&);
+ void visit(Const const&);
+ void visit(Function const&);
+ void visit(HashType const&);
+ void visit(IfElse const&);
+ void visit(KVPair const&);
+ void visit(MathConst const&);
+ void visit(MathOps const&);
+ void visit(MathType const&);
+ void visit(ObjectSpace const&);
+ void visit(Rvalue const&);
+ void visit(Statement const&);
+ void visit(StatementSeq const&);
+ void visit(StringExtNoArg const&);
+ void visit(Ternary const&);
+ void visit(Time const&);
+ void visit(VarRef const&);
+ template <class T>
+ void visit(google::protobuf::RepeatedPtrField<T> const& _repeated_field);
+
+ std::string removeSpecial(const std::string &x);
+
+ std::ostringstream m_output;
+ std::stack<uint8_t> m_numVarsPerScope;
+ int32_t m_numLiveVars;
+ };
+}