> Hi, the $.vtable Pointer is just there to allocate more space for the
> CPPStruct, and to properly align the struct attributes.
> 
> C++ itself cares about the vtable, not NativeCall.

Understood. My question is, whether there is one, or two $.vtable
Pointers allocated in this case:

class QObject is repr<CPPStruct> {
        has Pointer $.vtable;
}

class QPushButton is repr<CPPStruct> is QObject {
        has Pointer $.vtable;
}

my QPushButton $a;





> What would help to fix any issues would be to prove a sample code in the
> style of the rakudo/t/04-nativecall/* tests.
> (Without depending on qt of course)

I'm more than happy to do that, but I thought the presented errors are
my misunderstanding of the language than actual problems.




Thank you
-- 
        Vlad


> 
> Cheers, Tobias
> 
> Am 24.07.2016 um 09:03 schrieb Vladimir Marek:
> >Hi,
> >
> >I'm playing with QT library in perl6. I got it somehow working, but now I
> >wonder whether I'm doing it right.
> >
> >QT objects are C++ classes. Roughly there is base class QObject. From that
> >object QWidget isderived.
> >
> >class QObject;
> >class QWidget : public QObject;
> >class QAbstractButton : public QWidget;
> >class QPushButton : public QAbstractButton;
> >
> >you get the picture.
> >
> >
> >I have represented these in p6 like:
> >
> >class QObject is repr<CPPStruct> {
> >         has Pointer $.vtable;
> >         ...
> >}
> >
> >class QPushButton is repr<CPPStruct> is QObject {
> >         has Pointer $.vtable;
> >         ...
> >}
> >
> >I have skipped for now QWidget and QAbstractButton for now. It works, but:
> >
> >
> >- isn't it a problem that both classes have the $.vtable variable? 
> >QPushButton
> >overriding QObject one? I guess that is ok though, there's always just a
> >single pointer.
> >
> >
> >
> >
> >- I have tried to mimick GTK::Simple tap providers, but failed.
> >class QPushButton is repr<CPPStruct> is QObject {
> >     has Pointer $.vtable;
> >     has $!clicked_supply;
> >}
> >===SORRY!=== Error while compiling /home/neuron/qt/qt.pl
> >CPPStruct representation only handles int, num, CArray, CPointer, CStruct, 
> >CPPStruct and CUnion
> >
> >
> >
> >
> >- I have tried to view QPushButton as a role to QObject
> >
> >role QPushButton is repr<CPPStruct> is QObject {
> >     # line 63:
> >     my sub qt_QPushButton_show(QPushButton) is native('p6', v1) is 
> > mangled(False) { * };
> >
> >===SORRY!=== Error while compiling /home/neuron/qt/qt.pl
> >Too many positionals passed; expected 2 arguments but got 3
> >at /home/neuron/qt/qt.pl:63
> >
> >The same for
> >
> >role QPushButton is QObject {
> >
> >
> >
> >- I have tried
> >
> >class QPushButton does QObject {
> >===SORRY!=== Error while compiling /home/neuron/qt/qt.pl
> >QObject is not composable, so QPushButton cannot compose it
> >
> >
> >
> >I have not tried making QObject a unit, is it the way to go? I'm trying to 
> >chew
> >on the line from GTK::Simple. I'm not sure yet what it is and how relevant it
> >is.
> >
> >unit class GTK::Simple::Button does GTK::Simple::Widget;
> >
> >
> >Thank you
> >__
> >     Vlad
> >
> 

Reply via email to