static void insert_separator(slice_index si, stip_structure_traversal *st) { TraceFunctionEntry(__func__); TraceValue("%u",si); TraceFunctionParamListEnd(); stip_traverse_structure_children(si,st); { slice_index const proxy_standard = alloc_proxy_slice(); slice_index const standard = alloc_pipe(STMoveForPieceGeneratorStandardPath); slice_index const proxy_alternative = alloc_proxy_slice(); slice_index const alternative = alloc_pipe(STMoveForPieceGeneratorAlternativePath); slice_index const generator = alloc_binary_slice(STMoveForPieceGeneratorTwoPaths, proxy_standard, proxy_alternative); pipe_link(SLICE_PREV(si),generator); pipe_link(proxy_standard,standard); pipe_link(standard,si); pipe_link(proxy_alternative,alternative); pipe_link(alternative,si); } TraceFunctionExit(__func__); TraceFunctionResultEnd(); }
/* Allocate a STEndOfBranch slice. * @param to_goal identifies slice leading towards goal * @return index of allocated slice */ slice_index alloc_avoid_unsolvable_slice(slice_index proxy_op1, slice_index proxy_op2) { slice_index result; TraceFunctionEntry(__func__); TraceFunctionParam("%u",proxy_op1); TraceFunctionParam("%u",proxy_op2); TraceFunctionParamListEnd(); result = alloc_binary_slice(STAvoidUnsolvable,proxy_op1,proxy_op2); TraceFunctionExit(__func__); TraceFunctionResult("%u",result); TraceFunctionResultEnd(); return result; }