From 70d995abd4e6938dcdaccc61a6f9cd66946d99d1 Mon Sep 17 00:00:00 2001 From: Donald Lee Date: Fri, 23 Jul 2021 17:03:42 +0800 Subject: [PATCH] lib: Comment on how macro works Signed-off-by: Donald Lee --- lib/frrscript.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/frrscript.h b/lib/frrscript.h index e76d14c1f4..8f5b9f9cf8 100644 --- a/lib/frrscript.h +++ b/lib/frrscript.h @@ -122,8 +122,22 @@ void frrscript_register_type_codecs(struct frrscript_codec *codecs); */ void frrscript_init(const char *scriptdir); +/* + * This macro is mapped to every (name, value) in frrscript_call, + * so this in turn maps them onto their encoders + */ #define ENCODE_ARGS(name, value) ENCODE_ARGS_WITH_STATE(lfs->L, value) +/* + * This macro is also mapped to every (name, value) in frrscript_call, but + * not every value can be mapped to its decoder - only those that appear + * in the returned table will. To find out if they appear in the returned + * table, first pop the value and check if its nil. Only call the decoder + * if non-nil. + * + * At the end, the only thing left on the stack should be the + * returned table. + */ #define DECODE_ARGS(name, value) \ do { \ lua_getfield(lfs->L, 1, name); \ -- 2.39.5