Re: [eigen] Qt's container support |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Qt's container support
- From: "Gael Guennebaud" <gael.guennebaud@xxxxxxxxx>
- Date: Tue, 20 Jan 2009 13:30:41 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references; bh=8B7vFNsje3nY4GzGw1AWpFCMdE2xNpqNUtMhZPT2gZQ=; b=p81DmvC1rtmMQiuK6sZl/xjliOMFY1EiduUsksn8WK0J6fmldx8i+M52u3HYjdmkSM 2WSQqyCThT+B5TU6F1mLlWqNIuq8CMJ3//1ABo34NGF+CX+RMVB/3mWN5k8MKnNNbs3c OxdLzpZbUxtLrJ0odJmFktdFT/9OMEJEGJVbw=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references; b=q3kBleUl/CwkkA79DuLBNV5uTC3ueVt1czFkw7s8UB1d995R9kU2BnH3sI4LQ6lZBg 3SKRdwWAmKfyx0ODe7afMo32UGJDaX0vNpV2wrKPO11YhxubdCKrdBIa+/I2XRHzsi1R Iol5JdWcSeVVD5cySQLSh5TN4BpR01Xq1rhok=
On Tue, Jan 20, 2009 at 1:21 PM, Alex Stapleton
<alex.stapleton@xxxxxxxxxxxxx> wrote:
>> another possibility: since Qt is going to be LGPL, we can pick QVector
>> implementation code to make a complete specialization of
>> QVector<Eigen::Matrix>, and then we can elegantly fix all the three
>> issues right away (and perhaps more, I have not checked all methods
>> !). The obvious drawback is code duplication and so we'd have to watch
>> the patches made to qvector.h which are very unlikely to happen
>> anyway, so why not ?
>
> I've just had a quick skim over the Qt source and it looks like this
> will be quite difficult to implement as cleanly as the std::vector
> one. QVector<T>::malloc is private for one and qMalloc isn't a
> template function. One way around this might be
>
> #undef QVECTOR_H
> //#define stuff to trick QVector into working how we want
> #include <QVector.h>
> //#undef stuff we defined
>
> but obviously that is straying into disgusting-hack territory and I am
> not even sure it's possible to get it to work. The std::vector fix
> requires specialisation of the allocators and a intermediary unaligned
> Vector3f type which doesn't need aligned access so. Qt doesn't provide
> nearly as general a container interface :(
>
> This as you mention leaves the option of doing a full specialisation
> of QVector<T> which personally I think is rather a lot of work,
> although I suppose you could make it inherit from our std::vector
> specialisation and add in the various extra bits of interface that
> QVector supports.
Note that I suggested to simply copy/paste qvector.h code and make the
few modifications we have to do, that's very little work, and that's
probably the safest solution.
Gael