$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Gary Powell (Gary.Powell_at_[hidden])
Date: 2000-12-04 12:11:14
> > [Gary Powell]
> > in pool.h 
> > 
> >   ~pool()
> > I dislike 
> >    if (list.begin() == 0)
> > 
> > It breaks what I think of as the iterator concept. If what is meant is
> >    if (list.uninitialized() )
> > 
> >   or
> >    if (list.empty() )
> > 
> > that should be used instead.
> 
> Before submitting pool, I toyed around with a more advanced
> "iterator"-style
> approach to the implementation, using iterator classes both for the
> interleaved free list and for the list of memory blocks.  However, I found
> that it was much more trouble than it's worth; the only benefit is
> implementation code that is a little cleaner in some places, and much more
> complicated in others.  So I dropped that idea.
> 
Ok, but what you have is not clear at all. So how about a couple of trivial
member functions that indicate the nature of the statement. list.begin() ==
0 is one of those "magic" number statements whose meaning rapidly becomes
lost in time.
> > [Gary Powell]
> >   class PODptr should have a default constructor, rather than hide the
> > default data in sized_pool. (It's partly stylistic but when you use a
> value
> > as an indicator of uninitialized IMO it should be done all within the
> class,
> > and not by the calling class.)
> 
>> snip <<
> The PODptr in sized_pool is not the default data, but rather the "pointer"
> to the first memory block in the memory block list for that sized_pool.
> 
I think you missed understood my complaint. It's not the what PODptr is
that's the complaint, its that you are again using the magic "0" to have a
special meaning. And its meaning is known by PODptr and sized_pool, when it
could be known only to POPptr. (Containment and Isolation of magic numbers.)
Thanks for the standard reference on < >= etc. I knew you wouldn't have used
the unwieldy less and less_equal unless there was a good reason.
  -gary-