|
Boost : |
From: Andy Little (andy_at_[hidden])
Date: 2005-10-21 03:48:19
"Pavel Vozenilek" wrote
> Reviews of binary int utility are needed. The tool is very small (but useful)
> and review should not take much of time. Both Scott Schurr and Matt Calabrese
> put quite a lot of effort into their work.
>
>
> Scott Schurr's version is in http://boost-consulting.com/vault/ (file
> binary_int.zip).
> It can be used as:
> unsigned int regValue2 = binary_int<1000,1001,0011,0000>::value;
*** implementation
I expected the binary_int to be in boost namespace.
I would expect use of mpl maths on binary_int
e.g
typedef boost::binary_int<0001> left;
typedef boost::binary_int<0010> up;
typedef mpl::or_<left,up> left_n_up;
I understand about use of enums, however they can cause problems in addition
where some compilers dont recognise e.g addition of two enums etc.
*** design
I would expect value_type to reflect the number of nibbles
e.g
boost::binary_int<0000,0001> // unsigned char
boost::binary_int<0000,0000,0001> // unsigned short or unsigned int
dependent on platform dependent type
Traditionally these types are regarded as unsigned are they not? Often they are
used for port flags which require a specific size which may be 8 bits and will
then require a downcast in some cases.
Should have the self 'type' member
Overall the use of nibbles I like. I find the comma separators between nibbles
good. Without them it is often difficult to find out where you are in a mask.
This is how I like to work when using bitmasks.
*** implementation
I didnt look closely.
*** documentation
I found it a bit sparse, because there are no operations etc. On structure I
believe that
the documentation should be separate from the utility stuff. Personally I think
separation of any stuff into utility is a bit arbitrary anyway as most of boost
libraries are utility . It is not the same as the usual boost format making
documentation for e.g enable_if hard to find.
*** Use the library?
I tried it out in VC7.1.No problems, but not much functionality... Lack of bost
namespace was unexpected. I thought this was a requirement on proposals?
** should it be a Boost library?
Yes, but only on condition that the library is much more fleshed out.
Overall I like the idea, but I dont think that it has been worked on enough yet.
It should have the masking operations. They should probably use the mpl
operators.
I also beleive that binary literals should be part of the languge anyway.
> Matt Calabrese's version is in
> http://www.illegal-immigration.com/Riv/boost/binary_literal2.hpp.
> It can be used as:
> int x = BOOST_BINARY_LITERAL( 101 0111 1010 0110 );
I prefer templates to macros. , so I prefer Scott Schurrs version. I
also happen to like the nibble separators. Also I would like a bit of separate
documentation.
regards
Andy Little
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk