From: Tomas Frydrych (tomasfrydrych_at_yahoo.co.uk)
Date: Fri Mar 05 2004 - 13:10:13 EST
We also have UT_NumberVector which fjf implemented while back; it 
might be simplest to make use of it where appropriate.
Tomas
> Hi,
> 
> 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
> Gentoo's http://bugs.gentoo.org/show_bug.cgi?id=43260)
> 
> 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
> {
> 	//....
> };
> 
> class UT_Vector	
> 	: public UT_GenericVector<void*>
> {	
> 	//....
> };
> 
> class UT_IntVector	
> 	: 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)
> 
> 
> Hub
This archive was generated by hypermail 2.1.4 : Fri Mar 05 2004 - 13:11:16 EST