void append_state_placeholders_if_needed(Branch* branch) { if (!has_state_input(branch)) append_state_input(branch); if (!has_state_output(branch)) append_state_output(branch); }
bool is_function_stateful(Term* func) { if (!is_function(func)) return false; Function* attrs = as_function(func); if (attrs == NULL) return false; Branch* branch = function_contents(func); return has_state_input(branch); }
bool is_function_stateful(Term* func) { if (!is_function(func)) return false; Function* attrs = as_function(func); if (attrs == NULL) return false; Block* block = function_contents(func); return has_state_input(block); }
void if_block_normalize_state_inputs(Term* ifBlock) { Branch* contents = nested_contents(ifBlock); // Check if any branches have a state input bool anyState = false; for (CaseIterator it(contents); it.unfinished(); it.advance()) { if (has_state_input(nested_contents(it.current()))) anyState = true; } if (!anyState) return; append_state_placeholders_if_needed(contents); for (CaseIterator it(contents); it.unfinished(); it.advance()) append_state_placeholders_if_needed(nested_contents(it.current())); }
bool has_implicit_state(Term* term) { return has_state_input(term_get_function_details(term)); }