[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyQt] How does PyQt handle inlined functions?
From:       Dimitar Dobrev <dpldobrev () yahoo ! com>
Date:       2013-11-23 16:55:45
Message-ID: 1385225745.59973.YahooMailNeo () web122403 ! mail ! ne1 ! yahoo ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]



    I am curious about how it works because I develop bindings for Qt \
myself. They are for C#, you can find the code at \
https://github.com/ddobrev/QtSharp. I compile C++ wrappers for inlines \
myself but I was wondering if there was some cleaner way.

    Regards,
    Dimitar
    




On Saturday, November 23, 2013 5:55 PM, David Boddie <david@boddie.org.uk> \
wrote:  
The wrapper code is C++. To see how it works, download the source files for
PyQt and look in the sip directory. This contains sip files for the Qt
classes.

When you run configure.py, C++ code is generated in the directories called
QtCore, QtGui, and so on. You can see how the C++ functions are handled by
looking at the wrapper code for QModelIndex which can be found in the
QtCore/sipQtCoreQModelIndex.cpp file.

For example, the function that handles column() is \
meth_QModelIndex_column().

Are you having problems with debugging inlined functions, or are you just
curious about how it all works?

Regards,

David


On Saturday 23. November 2013, you wrote:
> Thank you for your reply. This produced wrapper code you mention - is
> it Python or C++? If it is Python, how is the C++ implementation of the
> original inlined function translated to Python? As an example, I can give
> most members of QModelIndex - row(), column(), model() and others.
> 
> Regards,
> Dimitar
> 
> On Saturday, November 23, 2013 3:32 PM, David Boddie \
> <david@boddie.org.uk> wrote:
> 
> On Fri, 22 Nov 2013 08:49:18 -0800 (PST), ddobrev wrote:
> > I was wondering how inlined functions are handled in PyQt. I mean not
> > those which are just declared inline but the ones that are actually
> > inlined. That is, no binary code is generated for them in the \
> > containing lib during compilation but rather calls to them are replaced \
> > with their implementation. Does PyQt, for example, distribute \
> > additional libraries that contain all inlines? If not, what approach \
> > does it use?
> 
> If the function is part of the public API then it will be described in a
> sip file and inlined in the wrapper code produced by sip.
> 
> Can you give an example of an inline function that you think would need \
> to be treated specially?
> 
> Regards,
> 
> David
> _______________________________________________
> PyQt mailing list    PyQt@riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt


[Attachment #5 (text/html)]

<html><body><div style="color:#000; background-color:#fff; \
font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, \
sans-serif;font-size:12pt"><div style="color: rgb(0, 0, 0); font-size: \
16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida \
Grande,sans-serif; background-color: transparent; font-style: \
normal;"><br><span class="">&nbsp;&nbsp;&nbsp; I am curious about how it \
works because I develop bindings for Qt myself. They are for C#, you can \
find the code at <a href="https://github.com/ddobrev/QtSharp"><span>https://github.com/ddobrev/QtSharp</span></a>. \
I compile C++ wrappers for inlines myself but I was wondering if there was \
some cleaner way</span><span class="">.</span></div><div style="color: \
rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica \
Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: \
transparent; font-style: normal;"><br><span class=""></span></div><div \
style="color:  rgb(0, 0, 0); font-size: 16px; font-family: \
HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; \
background-color: transparent; font-style: normal;"><span \
class="">&nbsp;&nbsp;&nbsp; Regards,</span></div><div style="color: rgb(0, \
0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica \
Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: \
transparent; font-style: normal;"><span class="">&nbsp;&nbsp;&nbsp; \
Dimitar</span><br><span class="">&nbsp;&nbsp;&nbsp; <br></span></div><div \
style="display: block;" class="yahoo_quoted"> <br> <br> <div \
style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida \
Grande, sans-serif; font-size: 12pt;"> <div style="font-family: \
HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; \
font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> On \
Saturday, November 23, 2013 5:55 PM, David Boddie \
&lt;david@boddie.org.uk&gt; wrote:<br> </font> </div>   <div \
class="y_msg_container">The wrapper code is C++. To see how it works, \
download the source files for<br clear="none">PyQt and look in the sip \
directory. This contains sip files for the Qt<br clear="none">classes.<br \
clear="none"><br clear="none">When you run configure.py, C++ code is \
generated in the directories called<br clear="none">QtCore, QtGui, and so \
on. You can see how the C++ functions are handled by<br \
clear="none">looking at the wrapper code for QModelIndex which can be found \
in the<br clear="none">QtCore/sipQtCoreQModelIndex.cpp file.<br \
clear="none"><br clear="none">For example, the function that handles \
column() is meth_QModelIndex_column().<br clear="none"><br clear="none">Are \
you having problems with debugging inlined functions, or are you just<br \
clear="none">curious about how it all works?<br clear="none"><br \
clear="none">Regards,<br clear="none"><br clear="none">David<br \
clear="none"><div class="yqt9286480929" id="yqtfd18091"><br  \
clear="none">On Saturday 23. November 2013, you wrote:<br \
clear="none">&gt;&nbsp; &nbsp;  Thank you for your reply. This produced \
wrapper code you mention - is<br clear="none">&gt; it Python or C++? If it \
is Python, how is the C++ implementation of the<br clear="none">&gt; \
original inlined function translated to Python? As an example, I can \
give<br clear="none">&gt; most members of QModelIndex - row(), column(), \
model() and others.<br clear="none">&gt; <br clear="none">&gt;&nbsp; &nbsp; \
Regards,<br clear="none">&gt;&nbsp; &nbsp;  Dimitar<br clear="none">&gt; \
<br clear="none">&gt; On Saturday, November 23, 2013 3:32 PM, David Boddie \
&lt;<a shape="rect" ymailto="mailto:david@boddie.org.uk" \
href="mailto:david@boddie.org.uk">david@boddie.org.uk</a>&gt;<br \
clear="none">&gt; wrote:<br clear="none">&gt; <br clear="none">&gt; On Fri, \
22 Nov 2013 08:49:18 -0800 (PST), ddobrev wrote:<br clear="none">&gt; &gt; \
I was wondering how inlined functions are handled in  PyQt. I mean not<br \
clear="none">&gt; &gt; those which are just declared inline but the ones \
that are actually<br clear="none">&gt; &gt; inlined. That is, no binary \
code is generated for them in the containing<br clear="none">&gt; &gt; lib \
during compilation but rather calls to them are replaced with their<br \
clear="none">&gt; &gt; implementation. Does PyQt, for example, distribute \
additional libraries<br clear="none">&gt; &gt; that contain all inlines? If \
not, what approach does it use?<br clear="none">&gt; <br clear="none">&gt; \
If the function is part of the public API then it will be described in a<br \
clear="none">&gt; sip file and inlined in the wrapper code produced by \
sip.<br clear="none">&gt; <br clear="none">&gt; Can you give an example of \
an inline function that you think would need to<br clear="none">&gt; be \
treated specially?<br clear="none">&gt; <br clear="none">&gt; Regards,<br \
clear="none">&gt; <br clear="none">&gt; David<br  clear="none">&gt; \
_______________________________________________<br clear="none">&gt; PyQt \
mailing list&nbsp; &nbsp; <a shape="rect" \
ymailto="mailto:PyQt@riverbankcomputing.com" \
href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><br \
clear="none">&gt; <a shape="rect" \
href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" \
target="_blank">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br \
clear="none"><br clear="none"></div><br><br></div>  </div> </div>  </div> \
</div></body></html>



_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic