> -----Original Message----- > From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor > Sent: Wednesday, December 19, 2007 6:27 PM > To: stdcxx-dev@incubator.apache.org > Subject: Re: svn commit: r605548 - in > /incubator/stdcxx/branches/4.2.x/include: rw/_defs.h > rw/_specialized.h sstream string
> incubator/stdcxx/branches/4.2.x/include/rw/_specialized.h Wed Dec > > +++ 19 06:19:33 2007 > > @@ -69,8 +69,12 @@ > > { > > typedef _RWSTD_CONTAINER_SIZE_TYPE _RWSizeT; > > > > - _RWSizeT __cap = _RWSTD_STATIC_CAST (_RWSizeT, > > - __size * > _RWSTD_NEW_CAPACITY_RATIO); > > + const _RWSizeT __ratio = _RWSizeT ( > (_RWSTD_NEW_CAPACITY_RATIO << 10) > > + / _RWSTD_RATIO_DIVIDER); > > + > > + const _RWSizeT __cap = (__size >> 10) * __ratio > > + + (((__size & 0x3ff) * __ratio) >> 10); > > + > > Sorry to bringing this up only now that you've committed it... > > Would it make sense to make __ratio a global macro instead of > repeating the same computation in several places? But we have two __ratio's: __ratio for _RWSTD_NEW_CAPACITY_RATIO and __ratio for _RWSTD_STRING_CAPACITY_RATIO. > Also, since > the divider is used only in the computation of the ratio and > since we're hardcoding the 10 in the left shift, it sees we > might as well hardcode the 1000 and forget the divider. The 10 in left shift is related to the ">> 10" and "& 0x3ff" operations, but 1000 value is independent from them. We can define _RWSTD_NEW_CAPACITY_RATIO as 16180 and use 10000 instead of 1000 (i.e. if the _RWSTD_NEW_CAPACITY_RATIO will contain the 5 significant digits). Are we need the possibility to change the _RWSTD_NEW_CAPACITY value to some other? Or we can assume that this value is fixed? Farid.