Skip to content

Commit 0af88d2

Browse files
committed
bragi: add Wireshark dissector generator
1 parent dc5d934 commit 0af88d2

File tree

3 files changed

+705
-4
lines changed

3 files changed

+705
-4
lines changed

bin/bragi

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,23 @@ import argparse
44

55
from bragi.parser import CompilationUnit
66
from bragi.cpp_generator import CodeGenerator as CppCodeGenerator
7+
from bragi.wireshark_generator import CodeGenerator as WiresharkCodeGenerator
78

89
parser = argparse.ArgumentParser(prog = 'bragi', description = 'Bragi IDL to C++ compiler')
910
parser.add_argument('input', nargs='+', help='input file', type=argparse.FileType('r'))
1011
parser.add_argument('-o', '--output', help='output file', type=str)
11-
parser.add_argument('-l', '--lib', nargs=1, help='C++ library to use', choices=['frigg', 'stdc++'], default='libc++')
12-
parser.add_argument('--protobuf', help='Generate protobuf compatibilty methods (SerializeAsString/ParseFromArray)', action='store_true')
12+
subparsers = parser.add_subparsers(required=True, dest='language')
13+
14+
cpp_parser = subparsers.add_parser('cpp')
15+
cpp_parser.add_argument('-l', '--lib', nargs=1, help='C++ library to use', choices=['frigg', 'stdc++'], default='libc++')
16+
cpp_parser.add_argument('--protobuf', help='Generate protobuf compatibilty methods (SerializeAsString/ParseFromArray)', action='store_true')
17+
18+
ws_parser = subparsers.add_parser('wireshark')
19+
1320
args = parser.parse_args()
1421

1522
inputs = []
1623
output = args.output
17-
lib = args.lib[0]
1824

1925
for source in args.input:
2026
code = source.read()
@@ -23,7 +29,11 @@ for source in args.input:
2329
unit.verify()
2430
inputs.append(unit)
2531

26-
generator = CppCodeGenerator(inputs, lib, protobuf_compat = args.protobuf)
32+
if(args.language == "cpp"):
33+
lib = args.lib[0]
34+
generator = CppCodeGenerator(inputs, lib, protobuf_compat = args.protobuf)
35+
else:
36+
generator = WiresharkCodeGenerator(inputs)
2737

2838
with open(output, "w") as o:
2939
o.write(generator.generate())

0 commit comments

Comments
 (0)