
----- Original Message ----- From: "Brian Bartman" <bbartmanboost@gmail.com> To: <boost@lists.boost.org> Sent: Thursday, March 18, 2010 2:45 PM Subject: [boost] Google Summer Of Code
Hello my name is Brian Bartman and I am an undergraduate at Kent State University Majoring in computer science.
I was interested in the bits & ints project, specifically Compressed array and Compressed vector as well as the utilities for bit mask manipulation.
Could some one help me better understand the requirements of this project? I would like to draft a proposal for GSoC 2010 and wanted to better understand the project before I write a proposal.
Hello, I don't know if you are interested in improving Boost.Bitfield. I had two features I wanted to add since long time but I had not time lastly finish them. You can find information related to Boost.Bitfield in https://svn.boost.org/trac/boost/wiki/LibrariesUnderConstruction#Boost.Bitfi.... The two features are: * Add bitfields group Used to easily manipulate groups of bitfields the same way as does C bitfields, but in a portable manner. Example declaration: struct Rgb565 { struct red {}; struct green {}; struct blue {}; typedef bitfields< member<unsigned char, red, 5>, member<unsigned char, green, 6>, member<unsigned char, blue, 5> > type; }; Example usage: Rgb565::type r = make_bitfields<Rgb565::type, 1,2,3>; // Write to a bitfield. r.get<Rgb565::red>() = 23; //or r.set<Rgb565::red>(23); // Read from a bitfield Rgb565::at<Rgb565::blue>::value_type b = r.get<Rgb565::blue>(); Other posibility could be to use unamed bitfields whic are accessed as tuples. typedef bitfields_group<5,6,5 > Rgb565; Rgb565 r; r.get<0>() = 23; // or r.set<0>(23); // Read from a bitfield Rgb565::at<2>::value_type b = r.get<2>(); * Add pointer_plus_bits Based on - the article of Joaquin Optimizing red-black tree color bits (http://bannalia.blogspot.com/2008/11/optimizing-red-black-tree-color-bits.ht...), - the implementation of Ion pointer_plus_bits from Boost.Intrusive (http://www.boost.org/boost/boost/intrusive/pointer_plus_bits.hpp) , and - Clang's QualType smart pointer (Clang's QualType smart pointer) This class will allows to use the unsused bits of a pointer to reduce the size of the nodes containing pointers and bits and sometimes improving also the performances. I have not reached yet the interface I would like to have. For the moment we can do typedef pointer_plus_bits<int*,1,bool>::type pint_and_bool; int i=0; pint_and_bool v1; ASSERT_EQUALS(v1.pointer(),0); ASSERT_EQUALS(v1.small_int(),false); pint_and_bool v2(&i, true); ASSERT_EQUALS(v2.pointer(),&i); ASSERT_EQUALS(v2.small_int(),true); v1.pointer()=v2.pointer(); v1.small_int()=true; ASSERT_EQUALS(v1.pointer(),&i); ASSERT_EQUALS(v1.small_int(),true); typedef pointer_plus_bits< pointer_plus_bits<int*,1,bool>::type ,1, bool>::type pint_and_bool_bool pint_and_bool_bool v1; ASSERT_EQUALS(v1.small_int(),false); ASSERT_EQUALS(v1.pointer().get_pointer(),0); ASSERT_EQUALS(v1.get_pointer().get_pointer(),0); ASSERT_EQUALS(v1.get_pointer().small_int(),false); Let me know if this is related to what you are interested in. best, Vicente