> 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.




_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to