[Development] Container refactor update
Peter Kümmel
syntheticpp at gmx.net
Tue Jun 19 11:42:10 CEST 2012
On 19.06.2012 11:28, Thiago Macieira wrote:
> On terça-feira, 19 de junho de 2012 10.22.02, Peter Kümmel wrote:
>>> Moc can understand template code just fine for the output it produces. The
>>> problem is that the meta object format does not allow for signals and
>>> slots
>>> containing template parameters in their signature.
>>
>> But moc could not produce code like this, so I would say it is not "just
>> fine":
>
> Let me emphasise what I said: it can read code just fine for the uses that it
> makes. It can parse templates up to an extent. It does not parse what it
> cannot use anyway.
>
>> - header:
>>
>> template<class T>
>> struct A : public QObject
>> {
>> signals:
>> void aSignal(T);
>>
>> public:
>> void foo(){...}
>> };
>>
>> - somewhere:
>> A<int> a;
>>
>>
>> - moc file/header:
>>
>> template<>
>> struct A<int> : public QObject
>> {
>> Q_QOBJECT
>>
>> signals:
>> void aSignal(int);
>>
>> // simple copy of code in base template
>> void foo(){...}
>> };
>>
>> + the typical moc code
>>
>>
>>
>> But for this all source code needs to be scanned,
>> not only the headers.
>
> Or you need to tell moc which instantiations to produce.
Yes, this would make things much simpler.
The only big change would be that a moc generated header
needs to be included:
foo.h:
template<class T>
struct A : public QObject
{ ...
// only defined for moc
Q_QOBJECT_SPECIALISATION(int>
};
#include "foo.moc.h"
>
> Since there is no way of doing that right now, moc cannot instantiate anything
> for you. Then we go back to my assertion that moc works fine for the output
> that it *can* produce. :-)
>
>
>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
More information about the Development
mailing list