X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Ftools%2Fvppapigen%2Fvppapigen_json.py;h=5fa839f985431a284c52718f3e188f60cfe7d96b;hb=261a059b3d03b00e85cf91bd75158f9b6772762e;hp=ef1c9823c33e667c27bdab20ece44ad5d492490a;hpb=33a58171e5995d9e649b414bfc77f2aab26e4c58;p=vpp.git diff --git a/src/tools/vppapigen/vppapigen_json.py b/src/tools/vppapigen/vppapigen_json.py index ef1c9823c33..5fa839f9854 100644 --- a/src/tools/vppapigen/vppapigen_json.py +++ b/src/tools/vppapigen/vppapigen_json.py @@ -1,6 +1,28 @@ # JSON generation import json +process_imports = True + + +def walk_imports(s): + r = [] + for e in s: + r.append(str(e)) + return r + + +def walk_counters(s, pathset): + r = [] + for e in s: + r2 = {'name': e.name, 'elements': e.block} + r.append(r2) + + r3 = [] + for p in pathset: + r3.append(p.paths) + + return r, r3 + def walk_enums(s): r = [] @@ -20,6 +42,8 @@ def walk_services(s): d = {'reply': e.reply} if e.stream: d['stream'] = True + if e.stream_message: + d['stream_msg'] = e.stream_message if e.events: d['events'] = e.events r[e.caller] = d @@ -53,6 +77,7 @@ def walk_defs(s, is_message=False): if is_message and t.crc: c = {} c['crc'] = "{0:#0{1}x}".format(t.crc, 10) + c['options'] = t.options d.append(c) r.append(d) @@ -62,7 +87,7 @@ def walk_defs(s, is_message=False): # # Plugin entry point # -def run(filename, s): +def run(args, filename, s): j = {} j['types'] = (walk_defs([o for o in s['types'] @@ -72,8 +97,12 @@ def run(filename, s): if o.__class__.__name__ == 'Union'])) j['enums'] = (walk_enums([o for o in s['types'] if o.__class__.__name__ == 'Enum'])) + j['enumflags'] = (walk_enums([o for o in s['types'] + if o.__class__.__name__ == 'EnumFlag'])) j['services'] = walk_services(s['Service']) j['options'] = s['Option'] - j['aliases'] = {k: v.alias for k, v in s['Alias'].items()} + j['aliases'] = {o.name:o.alias for o in s['types'] if o.__class__.__name__ == 'Using'} j['vl_api_version'] = hex(s['file_crc']) + j['imports'] = walk_imports(i for i in s['Import']) + j['counters'], j['paths'] = walk_counters(s['Counters'], s['Paths']) return json.dumps(j, indent=4, separators=(',', ': '))