← Back to team overview

kicad-developers team mailing list archive

Re: Experiments and considerations for more layer

 

> PS. about more than 64 layers - I attached an example flag set class. Of 
> course it's not as fast as a bare int/int64 (4 assembly instructions 
> instead of one/two), but it brings type safety and automatic 
> serialization (it's just a demo written in 20 minutes, not a quality code).


Tom,

That looks excellent.

I was also thinking bit set.  The fact that std::bitset<> takes a size suggests it is
putting the bits in the instance block, not in a separate block of memory.


Efficiency seems is more than adequate, and might even be more than adequate even if

  FLAG_SET::operator| () and FLAG_SET::operator& ()

were *not* inlined.  It would be worth looking at how much code is put out for those ops
to decide.


If we got rid of the tabs and we could use it tomorrow.


We probably need either 1) or 2) below so we can do:

if( bool( layer1 & layer2 ) )
{
}



1))))))))))))

FLAG_SET::operator bool () to return

	return (bool) this.count();


2))))))))))))

change FLAG_SET::operator& () to return
	return (bool) rv.count();


In this case you would also need a |= opertor and &= operator to assemble LAYER_SETs.





Follow ups

References