/* Initializes |trav| for use with |tree| and selects the null node. */ AVL_TRAV _marpa_avl_t_init (AVL_TREE tree) { const AVL_TRAV trav = my_obstack_new (AVL_OBSTACK (tree), struct avl_traverser, 1); trav->avl_table = tree; trav_reset(trav); return trav; }
static int write_action_functions(GenCodeInfo genCodeInfo, ABObj obj) { File codeFile = genCodeInfo->code_file; static char msg[256], *s; AB_TRAVERSAL trav; ABObj action = NULL; ABObj fromObj = NULL; /* for error reports */ int i = 0; /* * Auto-named functions */ for (trav_open(&trav, obj, AB_TRAV_ACTIONS_FOR_OBJ | AB_TRAV_MOD_SAFE), i = 0; (action = trav_next(&trav)) != NULL; ++i) { if ( mfobj_has_flags(action, CGenFlagIsDuplicateDef) || mfobj_has_flags(action, CGenFlagWriteDefToProjFile)) { continue; } if (action->info.action.auto_named) { abmfP_write_action_function(genCodeInfo, action); abio_puts(genCodeInfo->code_file, "\n"); } } /* don't close traversal, yet */ /* * User-named functions */ for (trav_reset(&trav); (action = trav_next(&trav)) != NULL; ++i) { if ( mfobj_has_flags(action, CGenFlagIsDuplicateDef) || mfobj_has_flags(action, CGenFlagWriteDefToProjFile)) { continue; } if (!(action->info.action.auto_named)) { abmfP_write_action_function(genCodeInfo, action); abio_puts(genCodeInfo->code_file, "\n"); } } trav_close(&trav); return OK; }