Commit Graph

6 Commits

Author SHA1 Message Date
Jakob Stoklund Olesen
d64e7fb576 Don't require Clone + Default for EntityMap values.
There are two kinds of entity maps:

- A primary map is used to allocate entity references and store the primary
  entity data. This map only grows when adding new entities with 'push'.

- A secondary map contains additional information about entities in a primary
  map. This map always grows with 'ensure', making default entries for any
  unknown primary entities.

Only require the 'Default + Clone' traits for values stored in a secondary map.

Also remove the 'grow automatically' feature of the IndexMut implementation.
This means that clients need to call 'ensure' whenever using a potentially
unknown entity reference.

The 'grow automatically' feature could not be implemented for the Index trait,
and it seems unfortunate to have different semantics for Index and IndexMut.
2016-07-19 09:53:55 -07:00
Jakob Stoklund Olesen
4ee2ab5042 Implement IntoIterator for Layout. 2016-07-18 18:47:42 -07:00
Jakob Stoklund Olesen
2f74efd5fc More layout tests and bugfixes.
Fix bugs in append methods. Linked lists are hard.
2016-07-18 18:09:31 -07:00
Jakob Stoklund Olesen
21c2474d4d Implement instruction order.
Each EBB has a linked list of instructions in layout order.
2016-07-18 15:05:26 -07:00
Jakob Stoklund Olesen
a641bdb1f2 Add Layout::ebbs() and the corresponding iterator.
Implement some tests, fix bugs in is_ebb_inserted().
2016-07-18 14:36:27 -07:00
Jakob Stoklund Olesen
5c15dcdebb Begin a layout module.
The Layout data structure will keep track of the order of EBBs and their
instructions.

WIP.
2016-07-15 16:12:31 -07:00