One idea to put on the table is an actual layer stack up sequence, which
would be a modifiable data structure which defines the order of layers
within a board. The current notion of layer mask would stay, it's just
that a person could not assume that a layer with a mask of (1<<0) is
next to a layer with a mask of (1<<1) unless the layer stackup sequence
says it is.
Jean-Pierre,
I rarely settle on the first idea, so here is another one to put on the
table. We make the BACK layer mask dynamic, not fixed. Its value would
depend on the copper layer count. If the copper layer count is 2, then
the BACK mask would be (1<<1), and the FRONT mask would be (1<<0). For
a four layer board the back mask would be (1<<3), etc.
Mask
Bit# Layer#
0 0 Front
:
:
N N Back
Advantage: no dynamic stackup sequence, but does have the dynamic single
BACK mask. The order of the bits in the mask set would be reversed. I
do not think this one is hard to implement, the drawing code would
simply walk the mask in reverse from what it is now, starting at
position GetCopperLayerCount()-1. We could fix existing board files
at time of first load, once and for ever after.
Eventually we can go to a 64 bit mask and expand the number of copper
layers quite easily, using a datatype of uint64_t.
For a single layer board, the notion of back or front is moot, because
the user can name the layer anything he wants.