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.


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)

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