Review of binary_int utility written by Scott Schurr
begins today and lasts for 7 days.
The utility can be found at
http://boost-consulting.com/vault/
file binary_int.zip (8 kB).
===Description===
The class template binary_int allows binary literals to be used
at compile time. The template reads a binary literal value comprised
of from 1 to 16 comma separated 4-bit units of ones and zeros.
Example of use:
#include
unsigned int regValue2 = binary_int<1000,1001,0011,0000>::value;
enum {
val1 = binary_int<1100,0010>::value,
val2 = binary_int<1100,0011>::value
};
switch (x) {
case binary_int<0110,0001>::value: ... break;
case binary_int<0111,0001>::value: ... break;
}
===Alternative implementation===
Matt Calabrese had written alternative, using only preprocessor.
It can be found at
http://www.illegal-immigration.com/Riv/boost/binary_literal.hpp
Example of use:
BOOST_BINARY_LITERAL( 101 0111 1010 0110 )
(there is no need for ::value, more on
http://lists.boost.org/Archives/boost/2005/09/93007.php)
===Open questions in Scott Schurs's library===
* How does it work on 64 bit systems? Could someone try?
* Naming: perhaps shorter names could be used (e.g. bits/nibble)
* BOOST_WORKAROUND in the code, is it really needed?
=== Questions for the reviewers===
* Which one of the alternatives fits in Boost better?
* What is your evaluation of the implementation(s)?
* Do you think the utility should be accepted as a Boost library?
/Pavel