PIPS
multi_recurse Struct Reference

the current data needed for a multi recursion are stored in a multi recurse struct. More...

+ Collaboration diagram for multi_recurse:

Data Fields

hash_table seen
 
bool always_recurse
 
GenDecisionTableTypedomains
 
GenDecisionTableTypedecisions
 
GenFilterTableTypefilters
 
GenRewriteTableTyperewrites
 
void * context
 
stack upwards
 
gen_chunkprevious
 
gen_chunkcurrent
 

Detailed Description

the current data needed for a multi recursion are stored in a multi recurse struct.

  • the seen hash_table stores the already encountered obj, not to walk twice thru them. The previous implementation used 2 recursions, one to mark the obj to visit, with an associated number, and the other was the actual recursion. This version is lazy, and just marks the encountered nodes, thus allowing the full benefit of the decision table to avoid walking thru the whole data structure.
  • the visited domains are marked true in domains. I could have checked that the filter is not NULL, but it is clearer this way, I think, for the one who will try to understand, if any:-)
  • the decision table used is in decisions. It is computed as the logical sum of the decision tables for the domains to be walked thru
  • filters and rewrites store the user decision functions for each domain.
  • context passed to filters and rewrites functions, as a 2nd arg.

Definition at line 3108 of file genClib.c.

Field Documentation

◆ always_recurse

bool multi_recurse::always_recurse

◆ context

void* multi_recurse::context

◆ current

◆ decisions

◆ domains

◆ filters

GenFilterTableType* multi_recurse::filters

Definition at line 3120 of file genClib.c.

Referenced by gen_internal_context_multi_recurse(), and quick_multi_recurse_obj_in().

◆ previous

◆ rewrites

GenRewriteTableType* multi_recurse::rewrites

Definition at line 3121 of file genClib.c.

Referenced by gen_internal_context_multi_recurse(), and quick_multi_recurse_obj_out().

◆ seen

◆ upwards


The documentation for this struct was generated from the following file: