xref: /aosp_15_r20/external/perfetto/src/tools/proto_merger/proto_file_serializer.h (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef SRC_TOOLS_PROTO_MERGER_PROTO_FILE_SERIALIZER_H_
18 #define SRC_TOOLS_PROTO_MERGER_PROTO_FILE_SERIALIZER_H_
19 
20 #include "src/tools/proto_merger/proto_file.h"
21 
22 namespace perfetto {
23 namespace proto_merger {
24 
25 // Serializes a ProtoFile struct into a .proto file which is
26 // capable of being parsed by protoc.
27 // For example:
28 // ProtoFile {
29 //   messages: [
30 //     Message {
31 //       name: Baz
32 //       fields: [
33 //         Field {
34 //           type: Foo
35 //           name: foo
36 //           number: 1
37 //         }
38 //         Field {
39 //           type: Bar
40 //           name: bar
41 //           number: 2
42 //         }
43 //       ]
44 //     }
45 //   ]
46 // }
47 //
48 // will convert to:
49 //
50 // message Baz {
51 //   Foo foo = 1;
52 //   Bar bar = 2;
53 // }
54 std::string ProtoFileToDotProto(const ProtoFile&);
55 
56 }  // namespace proto_merger
57 }  // namespace perfetto
58 
59 #endif  // SRC_TOOLS_PROTO_MERGER_PROTO_FILE_SERIALIZER_H_
60