[haiku-development] Re: Question

On 2007-09-04 at 23:11:45 [+0200], HOST <HOST.HAIKU@xxxxxx> wrote:
> 
> while building HAIKU with gcc4 we noticed a bunch of warnings thrown
> from gcc. mostly BStatable and others declared without a virtual
> destructor. looking in to the source file of
> ~/headers/os/storage/Statable.h there is an statemant like #if __GNUC__
> > 3 but it seems the header used comes from
> ~/headers/build/os/storage/Statable.h that does not have the above
> statement.

It's just general laziness, that the "build" version has not been fixed 
yet. There the destructor can be even be added unconditionally.

> can one give some hints of the use of the build folder?

It's the headers directory used when building build tools that use the BeOS 
API (rc, xres, setversion, mimeset, etc.) on build platforms other than 
BeOS (e.g. Linux or FreeBSD). The corresponding libraries live in 
src/build/{libroot,libbe}. The latter is a stripped down and modified 
version of the Haiku's libbe (probably somewhat outdated). The libroot 
build implementation tries to map the BeOS API to available POSIX functions 
or extensions. E.g. on Linux we can emulate BeOS attribute support using 
xattrs, otherwise we're using files in a dedicated directory.

> the second thing we noticed is the following:
> ...
> ../../../headers/os/interface/View.h:516: warning: 'virtual BAlignment
> BView::Alignment()' was hidden
> ../../../headers/os/interface/TextView.h:222: warning:   by 'alignment
> BTextView::Alignment() const
> ...
> maybe it was done intentionally while integrating the layout system and
> is meant to stay as of R1 and BTextView::Alignment and others get
> renamed afterwards? It also applys for BStringView and some others. any
> infos on that?

That was indeed unintended. I didn't realize it until way later when 
compiling with gcc 4. I'm not sure how to solve this best. It's either 
renaming the new Alignment() (the virtual one) e.g. to GetAlignment() (we 
already have a GetLayout() due to that), or breaking source compatibility 
by renaming the old ones (while keeping the symbols for binary 
compatibility).

CU, Ingo

Other related posts: