From dfe944c3e5c2a7fa04c3416266728ffce6332bf8 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 13 Feb 2015 02:29:46 +0000 Subject: py: Expose compile.c:list_get as mp_parse_node_extract_list. --- py/parse.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'py/parse.c') diff --git a/py/parse.c b/py/parse.c index 4ea0362d2b..6223968f5d 100644 --- a/py/parse.c +++ b/py/parse.c @@ -199,6 +199,25 @@ void mp_parse_node_free(mp_parse_node_t pn) { } } +int mp_parse_node_extract_list(mp_parse_node_t *pn, mp_uint_t pn_kind, mp_parse_node_t **nodes) { + if (MP_PARSE_NODE_IS_NULL(*pn)) { + *nodes = NULL; + return 0; + } else if (MP_PARSE_NODE_IS_LEAF(*pn)) { + *nodes = pn; + return 1; + } else { + mp_parse_node_struct_t *pns = (mp_parse_node_struct_t*)(*pn); + if (MP_PARSE_NODE_STRUCT_KIND(pns) != pn_kind) { + *nodes = pn; + return 1; + } else { + *nodes = pns->nodes; + return MP_PARSE_NODE_STRUCT_NUM_NODES(pns); + } + } +} + #if MICROPY_DEBUG_PRINTERS void mp_parse_node_print(mp_parse_node_t pn, mp_uint_t indent) { if (MP_PARSE_NODE_IS_STRUCT(pn)) { -- cgit v1.2.3