yumapro
24.10-3
YumaPro SDK
|
Support YANG Module parser grouping statement. More...
Data Structures | |
struct | grp_template_t |
One YANG 'grouping' definition – sibling set template. More... | |
Functions | |
grp_template_t * | grp_new_template (void) |
Malloc and initialize the fields in a grp_template_t. More... | |
void | grp_free_template (grp_template_t *grp) |
Scrub the memory in a grp_template_t by freeing all the sub-fields and then freeing the entire struct itself. More... | |
void | grp_clean_groupingQ (dlq_hdr_t *que) |
Clean a queue of grp_template_t structs. More... | |
boolean | grp_has_typedefs (const grp_template_t *grp) |
Check if the grouping contains any typedefs. More... | |
const xmlChar * | grp_get_mod_name (const grp_template_t *grp) |
Get the module name for a grouping. More... | |
status_t | yang_grp_consume_grouping (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *que, obj_template_t *parent) |
Consume a grouping-stmt. More... | |
status_t | yang_grp_resolve_groupings (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *groupingQ, obj_template_t *parent) |
Resolve grouping-stmts (first pass) More... | |
status_t | yang_grp_resolve_complete (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *groupingQ, obj_template_t *parent) |
Resolve grouping-stmts (second pass) More... | |
status_t | yang_grp_resolve_final (yang_pcb_t *pcb, tk_chain_t *tkc, ncx_module_t *mod, dlq_hdr_t *groupingQ) |
Resolve Q of groupings. More... | |
status_t | yang_grp_check_nest_loop (tk_chain_t *tkc, ncx_module_t *mod, obj_template_t *obj, grp_template_t *grp) |
Check the 'uses' object and determine if it is contained within the group being used. More... | |
Support YANG Module parser grouping statement.
void grp_clean_groupingQ | ( | dlq_hdr_t * | que | ) |
Clean a queue of grp_template_t structs.
que | Q of grp_template_t data structures to free |
void grp_free_template | ( | grp_template_t * | grp | ) |
Scrub the memory in a grp_template_t by freeing all the sub-fields and then freeing the entire struct itself.
The struct must be removed from any queue it is in before this function is called.
grp | grp_template_t data structure to free |
const xmlChar * grp_get_mod_name | ( | const grp_template_t * | grp | ) |
Get the module name for a grouping.
grp | grp_template_t struct to check |
boolean grp_has_typedefs | ( | const grp_template_t * | grp | ) |
Check if the grouping contains any typedefs.
grp | grp_template_t struct to check |
grp_template_t * grp_new_template | ( | void | ) |
Malloc and initialize the fields in a grp_template_t.
status_t yang_grp_check_nest_loop | ( | tk_chain_t * | tkc, |
ncx_module_t * | mod, | ||
obj_template_t * | obj, | ||
grp_template_t * | grp | ||
) |
Check the 'uses' object and determine if it is contained within the group being used.
grouping A { uses A; } grouping B { container C { grouping BB { uses B; } } }
Error messages are printed by this function!! Do not duplicate error messages upon error return
tkc | token chain from parsing (needed for error msgs) |
mod | module in progress |
obj | 'uses' obj_template containing the ref to 'grp' |
grp | grp_template_t that this 'obj' is using |
status_t yang_grp_consume_grouping | ( | yang_pcb_t * | pcb, |
tk_chain_t * | tkc, | ||
ncx_module_t * | mod, | ||
dlq_hdr_t * | que, | ||
obj_template_t * | parent | ||
) |
Consume a grouping-stmt.
2nd pass parsing Parse the next N tokens as a grouping-stmt Create a grp_template_t struct and add it to the specified Q
Error messages are printed by this function!! Do not duplicate error messages upon error return
Current token is the 'grouping' keyword
pcb | parser control block to use |
tkc | token chain |
mod | module in progress |
que | queue will get the grp_template_t |
parent | parent object or NULL if top-level grouping-stmt |
status_t yang_grp_resolve_complete | ( | yang_pcb_t * | pcb, |
tk_chain_t * | tkc, | ||
ncx_module_t * | mod, | ||
dlq_hdr_t * | groupingQ, | ||
obj_template_t * | parent | ||
) |
Resolve grouping-stmts (second pass)
4th pass parsing Analyze the entire 'groupingQ' within the module struct Expand any uses and augment statements within the group and validate as much as possible
Completes processing for all the groupings sust that it is safe to expand any uses clauses within objects, via the yang_obj_resolve_final fn
Error messages are printed by this function!! Do not duplicate error messages upon error return
pcb | parser control block to use |
tkc | token chain from parsing (needed for error msgs) |
mod | module in progress |
groupingQ | Q of grp_template_t structs to check |
parent | obj_template containing this groupingQ NULL if this is a module-level groupingQ |
status_t yang_grp_resolve_final | ( | yang_pcb_t * | pcb, |
tk_chain_t * | tkc, | ||
ncx_module_t * | mod, | ||
dlq_hdr_t * | groupingQ | ||
) |
Resolve Q of groupings.
Analyze the entire 'groupingQ' within the module struct Check final warnings etc.
Error messages are printed by this function!! Do not duplicate error messages upon error return
pcb | parser control block |
tkc | token chain from parsing (needed for error msgs) |
mod | module in progress |
groupingQ | Q of grp_template_t structs to check |
status_t yang_grp_resolve_groupings | ( | yang_pcb_t * | pcb, |
tk_chain_t * | tkc, | ||
ncx_module_t * | mod, | ||
dlq_hdr_t * | groupingQ, | ||
obj_template_t * | parent | ||
) |
Resolve grouping-stmts (first pass)
3rd pass parsing Analyze the entire 'groupingQ' within the module struct Finish all the clauses within this struct that may have been defered because of possible forward references
Any uses or augment within the grouping is deferred until later passes because of forward references
Error messages are printed by this function!! Do not duplicate error messages upon error return
pcb | parser control block to use |
tkc | token chain from parsing (needed for error msgs) |
mod | module in progress |
groupingQ | Q of grp_template_t structs to check |
parent | obj_template containing this groupingQ NULL if this is a module-level groupingQ |