From 9eebf97e3d3fe8bff0d3c5ecdae39f15bd93f40b Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Tue, 4 Oct 2022 13:30:04 +0200 Subject: lib: make cmd_element->attr a bitmask & clarify It already "looks" like a bitmask, but we currently can't flag a command both YANG and HIDDEN at the same time. It really should be a bitmask. Also clarify DEPRECATED behaviour (or the absence thereof.) Signed-off-by: David Lamparter --- lib/command_py.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lib/command_py.c') diff --git a/lib/command_py.c b/lib/command_py.c index 6301eec5e8..ff7b2d18a5 100644 --- a/lib/command_py.c +++ b/lib/command_py.c @@ -226,8 +226,8 @@ static PyObject *graph_to_pyobj(struct wrap_graph *wgraph, wrap->type = "???"; } - wrap->deprecated = (tok->attr == CMD_ATTR_DEPRECATED); - wrap->hidden = (tok->attr == CMD_ATTR_HIDDEN); + wrap->deprecated = !!(tok->attr & CMD_ATTR_DEPRECATED); + wrap->hidden = !!(tok->attr & CMD_ATTR_HIDDEN); wrap->text = tok->text; wrap->desc = tok->desc; wrap->varname = tok->varname; @@ -353,6 +353,11 @@ PyMODINIT_FUNC command_py_init(void) if (!pymod) initret(NULL); + if (PyModule_AddIntMacro(pymod, CMD_ATTR_YANG) + || PyModule_AddIntMacro(pymod, CMD_ATTR_HIDDEN) + || PyModule_AddIntMacro(pymod, CMD_ATTR_DEPRECATED)) + initret(NULL); + Py_INCREF(&typeobj_graph_node); PyModule_AddObject(pymod, "GraphNode", (PyObject *)&typeobj_graph_node); Py_INCREF(&typeobj_graph); -- cgit v1.2.3 From 3df576449993ad88b70b6668931d875557cf5139 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Tue, 4 Oct 2022 13:44:19 +0200 Subject: lib: add CMD_ATTR_NOSH To propagate into .xref so extract.pl can be handled there. Signed-off-by: David Lamparter --- lib/command.h | 10 ++++++---- lib/command_graph.h | 1 + lib/command_py.c | 3 ++- python/clippy/__init__.py | 2 ++ 4 files changed, 11 insertions(+), 5 deletions(-) (limited to 'lib/command_py.c') diff --git a/lib/command.h b/lib/command.h index 981449c6f4..cde10a0a31 100644 --- a/lib/command.h +++ b/lib/command.h @@ -290,7 +290,7 @@ struct cmd_node { DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, 0) #define DEFPY_NOSH(funcname, cmdname, cmdstr, helpstr) \ - DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, 0) + DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_NOSH) #define DEFPY_HIDDEN(funcname, cmdname, cmdstr, helpstr) \ DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_HIDDEN) @@ -299,7 +299,8 @@ struct cmd_node { DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_YANG) #define DEFPY_YANG_NOSH(funcname, cmdname, cmdstr, helpstr) \ - DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_YANG) + DEFPY_ATTR(funcname, cmdname, cmdstr, helpstr, \ + CMD_ATTR_YANG | CMD_ATTR_NOSH) /* DEFUN variants */ @@ -319,10 +320,11 @@ struct cmd_node { /* DEFUN_NOSH for commands that vtysh should ignore */ #define DEFUN_NOSH(funcname, cmdname, cmdstr, helpstr) \ - DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, 0) + DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_NOSH) #define DEFUN_YANG_NOSH(funcname, cmdname, cmdstr, helpstr) \ - DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, CMD_ATTR_YANG) + DEFUN_ATTR(funcname, cmdname, cmdstr, helpstr, \ + CMD_ATTR_YANG | CMD_ATTR_NOSH) /* DEFSH for vtysh. */ #define DEFSH_ATTR(daemon, cmdname, cmdstr, helpstr, attr) \ diff --git a/lib/command_graph.h b/lib/command_graph.h index 57a70a8186..b8c7a9c72c 100644 --- a/lib/command_graph.h +++ b/lib/command_graph.h @@ -77,6 +77,7 @@ enum { CMD_ATTR_YANG = (1 << 0), CMD_ATTR_HIDDEN = (1 << 1), CMD_ATTR_DEPRECATED = (1 << 2), + CMD_ATTR_NOSH = (1 << 3), }; enum varname_src { diff --git a/lib/command_py.c b/lib/command_py.c index ff7b2d18a5..cce9542e30 100644 --- a/lib/command_py.c +++ b/lib/command_py.c @@ -355,7 +355,8 @@ PyMODINIT_FUNC command_py_init(void) if (PyModule_AddIntMacro(pymod, CMD_ATTR_YANG) || PyModule_AddIntMacro(pymod, CMD_ATTR_HIDDEN) - || PyModule_AddIntMacro(pymod, CMD_ATTR_DEPRECATED)) + || PyModule_AddIntMacro(pymod, CMD_ATTR_DEPRECATED) + || PyModule_AddIntMacro(pymod, CMD_ATTR_NOSH)) initret(NULL); Py_INCREF(&typeobj_graph_node); diff --git a/python/clippy/__init__.py b/python/clippy/__init__.py index c356a29d3f..281e2bb3c6 100644 --- a/python/clippy/__init__.py +++ b/python/clippy/__init__.py @@ -32,6 +32,7 @@ from _clippy import ( CMD_ATTR_YANG, CMD_ATTR_HIDDEN, CMD_ATTR_DEPRECATED, + CMD_ATTR_NOSH, ) @@ -98,3 +99,4 @@ class CmdAttr(_IntFlag): YANG = CMD_ATTR_YANG HIDDEN = CMD_ATTR_HIDDEN DEPRECATED = CMD_ATTR_DEPRECATED + NOSH = CMD_ATTR_NOSH -- cgit v1.2.3