yumapro  20.10-14
YumaPro SDK
YANG grouping statement (grp_template_t)

Support YANG Module parser grouping statement. More...

Collaboration diagram for YANG grouping statement (grp_template_t):

Data Structures

struct  grp_template_t
 One YANG 'grouping' definition – sibling set template. More...
 

Functions

grp_template_tgrp_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...
 

Detailed Description

Support YANG Module parser grouping statement.

Function Documentation

◆ grp_clean_groupingQ()

void grp_clean_groupingQ ( dlq_hdr_t *  que)

Clean a queue of grp_template_t structs.

Parameters
queQ of grp_template_t data structures to free
Here is the caller graph for this function:

◆ grp_free_template()

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.

Parameters
grpgrp_template_t data structure to free
Here is the call graph for this function:
Here is the caller graph for this function:

◆ grp_get_mod_name()

const xmlChar* grp_get_mod_name ( const grp_template_t grp)

Get the module name for a grouping.

Parameters
grpgrp_template_t struct to check
Returns
const pointer to module name

◆ grp_has_typedefs()

boolean grp_has_typedefs ( const grp_template_t grp)

Check if the grouping contains any typedefs.

Parameters
grpgrp_template_t struct to check
Returns
TRUE if any embedded typedefs
FALSE if no embedded typedefs
Here is the call graph for this function:
Here is the caller graph for this function:

◆ grp_new_template()

grp_template_t* grp_new_template ( void  )

Malloc and initialize the fields in a grp_template_t.

Returns
pointer to the malloced and initialized struct or NULL if an error
Here is the call graph for this function:

◆ yang_grp_check_nest_loop()

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

Parameters
tkctoken chain from parsing (needed for error msgs)
modmodule in progress
obj'uses' obj_template containing the ref to 'grp'
grpgrp_template_t that this 'obj' is using
Returns
status of the operation
Here is the call graph for this function:

◆ yang_grp_consume_grouping()

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

Parameters
pcbparser control block to use
tkctoken chain
modmodule in progress
quequeue will get the grp_template_t
parentparent object or NULL if top-level grouping-stmt
Returns
status of the operation

◆ yang_grp_resolve_complete()

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

Parameters
pcbparser control block to use
tkctoken chain from parsing (needed for error msgs)
modmodule in progress
groupingQQ of grp_template_t structs to check
parentobj_template containing this groupingQ NULL if this is a module-level groupingQ
Returns
status of the operation

◆ yang_grp_resolve_final()

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

Parameters
pcbparser control block
tkctoken chain from parsing (needed for error msgs)
modmodule in progress
groupingQQ of grp_template_t structs to check
Returns
status of the operation

◆ yang_grp_resolve_groupings()

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

Parameters
pcbparser control block to use
tkctoken chain from parsing (needed for error msgs)
modmodule in progress
groupingQQ of grp_template_t structs to check
parentobj_template containing this groupingQ NULL if this is a module-level groupingQ
Returns
status of the operation