From 75a37b372efc2b4a324aa38b53487b8168358a63 Mon Sep 17 00:00:00 2001 From: Chris Luke Date: Sat, 14 May 2016 12:17:12 -0400 Subject: VPP-62 Add a doxy filter to enable vpe.api doc This makes Doxygen think the API definitions are structs which is close enough to be able to document the API methods. It also has logic to create an indexed API page but that's disabled for now because it duplicates the "brief" text twice in the struct doc. Fixes a minor line numbering issue in filter_c.py. Change-Id: If380160b73e7c10d999b35a76f55d0e27cbc91cc Signed-off-by: Chris Luke --- doxygen/filter_api.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 doxygen/filter_api.py (limited to 'doxygen/filter_api.py') diff --git a/doxygen/filter_api.py b/doxygen/filter_api.py new file mode 100755 index 00000000000..3e2aaaec290 --- /dev/null +++ b/doxygen/filter_api.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +# Copyright (c) 2016 Comcast Cable Communications Management, LLC. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Filter for vpe.api to make it Doxygenish. + +import sys, re + +if len(sys.argv) < 2: + sys.stderr.write("Usage: %s \n" % (sys.argv[0])) + sys.exit(1) + +patterns = [ + # Search for "define" blocks and treat them as structs + ( re.compile(r"^.*(manual_.[^\s]+\s+)?define\s+(?P[^\s]+)"), r"typedef struct vl_api_\g_t"), + + # For every "brief" statement at the start of a comment block, add an + # xref with whatever is on the same line. This gives us an index page + # with all the API methods in one place. + # XXX Commented out for now; works but duplicates the brief text in the + # struct documentation + #( re.compile(r"/\*\*\s*(?P[\\@]brief)\s+(?P.+)(\*/)$"), r'/** @xrefitem api "" "VPP API" \g \g \g'), # capture inline comment close + #( re.compile(r"/\*\*\s*(?P[\\@]brief)\s+(?P.+)$"), r'/** @xrefitem api "" "VPP API" \g \g \g'), + + # Since structs don't have params, replace @param with @tparam + ( re.compile("[\\@]param\\b"), "@tparam"), +] + +with open(sys.argv[1]) as fd: + for line in fd: + str = line[:-1] # strip \n + for p in patterns: + str = p[0].sub(p[1], str) + sys.stdout.write(str+"\n") -- cgit 1.2.3-korg