Tile-based Layout

Header: fiction/layouts/tile_based_layout.hpp

The tile-based layout implements a naming convention that can be layered on top of any coordinate layout like cartesian_layout or hexagonal_layout at compile time. It does not implement any additional functionality but conveys the intention that each coordinate is in actuality referring to a group of smaller coordinates in another abstraction down the hierarchy. In the literature, these are called tiles.

template<typename CoordinateLayout>
class tile_based_layout : public CoordinateLayout

This class provides a tile-based naming scheme for coordinate-based functions. It does not add any functionality, but it might be useful to adopt tile_based_layout to provide an intuition of abstraction in the code. For instance, in a gate_level_layout, the coordinates, in fact, refer to groups of coordinates in lower-level abstractions. These are called ‘tiles’ in the literature. Therefore, it might be helpful for a reader of the code to provide this abstraction level-dependent information.

Template Parameters:

CoordinateLayout – A coordinate layout type.