int bdd_addvarblock ( BDD  b,
int  fixed 
)

Adds a new variable block for reordering.

Creates a new variable block with the variables in the variable set b. The variables in b must be contiguous. This order does not depend on current variable order. The variable blocks are ordered as a tree, with the largest ranges at top and the smallest at the bottom.

Example: Assume the block 0-9 is added as the first block and then the block 0-6. This yields the 0-9 block at the top, with the 0-6 block as a child. If now the block 2-4 was added, it would become a child of the 0-6 block. A block of 0-8 would be a child of the 0-9 block and have the 0-6 block as a child.

Partially overlapping blocks are not allowed. The fixed parameter sets the block to be fixed (no reordering of its child blocks is allowed) or free, using the constants BDD_REORDER_FIXED and BDD_REORDER_FREE. Reordering is always done on the top most blocks first and then recursively downwards. The return value is an integer that can be used to identify the block later on - with for example bdd_blockfile_hook. The values returned will be in the sequence $0,1,2,3,\ldots$.

Returns:
A non-negative identifier on success, otherwise a negative error code.
See also:
bdd_varblockall, fdd_intaddvarblock, bdd_clrvarblocks


Generated on Mon Jul 23 13:25:17 2007 for BuDDy by  doxygen 1.5.1