| OCR Text |
Show DPullRight deletes columns in the DynArrayRow (from left to right). DPushLeft adds columns to the DynArrayRow (from right to left). DPushRight adds columns to the DynArrayRow (from left to right). DAssignElt assigns an element to the specified location in the DynArrayRow. DFindElt retrieves the element stored at the specified location in the DynArrayRow. DGetEltsWithinBounds retrieves all elements stored between the specified boimds in the DynArrayRow. DClone creates a deep copy of the DynArrayRow. A.2 The CellMatrix and the CellTree The CellMatrix is based upon the DynArray and the CellTree. The DynArray supports the array-like semantics of the CellMatrix and the CellTree serves as the implementation of the DynArrayRow. The CellTree is a binary-tree data structure that, for nommit cells, is more efficient than a simple linear array since it guarantees that a cell pointer to any contiguous cell, no matter how wide (in unit-cell terms), is stored only once in the CellTree. For cells with noncontiguous components, e.g., holes, the cell pointer would be stored once for each of the noncontiguous components. Compared to the ALU cell example above, each row of the array would contain only one pointer to the ALU cell for a total of 25 ALU cell pointers as compared to 625 in the simple array implementation. Semantically, a CellTree is similar to a one-dimensional array (the DynArrayRow explained above). A CellTree is a binary tree and consists of split-nodes and leaf nodes. A split-node indicates a boundary between two different cells in a given row (empty locations in the CellTree are represented by the "nullcell" ). Each leaf node represents a contiguous block in the row and contains a pointer to the cell that resides in that block. Figure A.2 depicts an example of a row and its representative CellTree. The row shown in the bottom of the figure contains four cells and six locations. The four cells are labeled A, B, C and D. Cell A is a unit-sized cell located at row position one, B is a nonunit cell 114 |