From: Hubert Figuiere (hfiguiere_at_teaser.fr)
Date: Fri Mar 05 2004 - 02:35:16 EST
Now, some people attempt to build AbiWord on 64-bits arch like amd64 or
ia64. One of the main issues is that we use UT_Vector to store plain
UT_uint32 while UT_Vector is designed to store void * (ie pointers). The
problem is that on amd64 and ia64, a void * is 64-bits long while an
UT_uint32 is still 32-bits.
There are patch that does casting madness (see bug
http://bugzilla.abisource.com/show_bug.cgi?id=6460 that points to
I have a cleaner solution in mind, but this would involve breaking a
coding rule: using template.
The idea is just to template UT_Vector to either store a void * or an
UT_uint32. This would not only benefits for the 64-bits arch issue, but
it would also remove wild castings performed in UT_Vector. Off course
this fix would involve changes in large parts of the code.
And to not overuse the templates, I'll limit it to sublcassing the
template instances and only allow these.
template <class T> class UT_GenericVector
: public UT_GenericVector<void*>
: public UT_GenericVector<UT_uint32>
Any pros and cons ? Now that almost almost any compiler we use supports
template, I don't think this is a big issue.
If you are against template, there is a harder solution (plan B), but
I'd prefer not use it.
(yes, that can wait after 2.1.1 is release)
This archive was generated by hypermail 2.1.4 : Fri Mar 05 2004 - 02:36:13 EST