xref: /llvm-project/clang/tools/clang-fuzzer/proto-to-cxx/loop_proto_to_cxx_main.cpp (revision 2946cd701067404b99c39fb29dc9c74bd7193eb3)
1410a6b2cSVitaly Buka //==-- loop_proto_to_cxx_main.cpp - Driver for protobuf-C++ conversion -----==//
2410a6b2cSVitaly Buka //
3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
5*2946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6410a6b2cSVitaly Buka //
7410a6b2cSVitaly Buka //===----------------------------------------------------------------------===//
8410a6b2cSVitaly Buka //
9410a6b2cSVitaly Buka // Implements a simple driver to print a C++ program from a protobuf with loops.
10410a6b2cSVitaly Buka //
11410a6b2cSVitaly Buka //===----------------------------------------------------------------------===//
12410a6b2cSVitaly Buka 
13410a6b2cSVitaly Buka 
14410a6b2cSVitaly Buka #include <fstream>
15410a6b2cSVitaly Buka #include <iostream>
16410a6b2cSVitaly Buka #include <streambuf>
17410a6b2cSVitaly Buka #include <string>
18410a6b2cSVitaly Buka 
19410a6b2cSVitaly Buka #include "proto_to_cxx.h"
20410a6b2cSVitaly Buka 
main(int argc,char ** argv)21410a6b2cSVitaly Buka int main(int argc, char **argv) {
22410a6b2cSVitaly Buka   for (int i = 1; i < argc; i++) {
23410a6b2cSVitaly Buka     std::fstream in(argv[i]);
24410a6b2cSVitaly Buka     std::string str((std::istreambuf_iterator<char>(in)),
25410a6b2cSVitaly Buka                     std::istreambuf_iterator<char>());
26410a6b2cSVitaly Buka     std::cout << "// " << argv[i] << std::endl;
27410a6b2cSVitaly Buka     std::cout << clang_fuzzer::LoopProtoToCxx(
28410a6b2cSVitaly Buka         reinterpret_cast<const uint8_t *>(str.data()), str.size());
29410a6b2cSVitaly Buka   }
30410a6b2cSVitaly Buka }
31