diff options
| author | Bhargava Shastry <[email protected]> | 2019-05-17 14:22:43 +0200 |
|---|---|---|
| committer | Bhargava Shastry <[email protected]> | 2019-05-17 14:28:20 +0200 |
| commit | 1f3ece9631d3b52911ff7b5fff88fa8fccbbc3f9 (patch) | |
| tree | e4fa00704183a6eca8412d2b1e526d3af4ef284c /oss-fuzz/proto_to_ruby.h | |
| parent | b6e9fab64949b91f00d07c890935642f44147615 (diff) | |
| download | mruby-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.h | 55 |
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; + }; +} |
