On Sat, 2020-03-28 at 17:13 +0000, Luke Kenneth Casson Leighton wrote: > On Sat, Mar 28, 2020 at 4:45 PM Jean-Paul Chaput > wrote: > > > The main reason here is still the lack of time. But there may be > > another problem. My python interface allow to mirror in Python > > the C++ function overload, but Python only allows one set of > > parameters, is that true or I'm lagging on Python features again? > > So how to describe a function with more than one parameter set? > > ah. > > right. with all the other things, i am going to focus on this one. > it is a major, serious failing in the ENTIRETY of the free software > community to COMPLETELY fail to comprehend this one, absolutely > critical thing. > > microsoft DCOM got it right (co-classes). as a result i was the ONLY > PERSON IN THE WORLD - i checked, emailing the IEXPLORE developer and > he kindly replied - to use the full power of IEXPLORE.DLL DCOM > bindings from python-comtypes. and by "full power" i mean "all 300 > objects, all 2,000+ functions, and all 20,000 properties". > > the only reason that was possible - including the c++ functions which > had multiple overloads - was because of a property of DCOM called > "co-classes". > > when the Mozilla Foundation decided "oh! we! know! we! will copy! > DCOM! and call it! XPCOM! it'll be great!" they did NOT copy > co-classes, and consequently fucked EVERYONE around for the next 15 > years who tried to develop third party xulrunner applications. Funny, I remember well a student a while ago telling me that I should use XUL to write the graphical interface of Coriolis. I was already feeling like an old shmuck with my Qt... > so if you *have* successfully mirrored multiple c++ function-overloads > into python, GREAT! congratulations, you are amongst an absolute tiny > minority of programmers who have comprehended this, where the majority > are in systematic pathological failure and mental melt-down. I did write it a long time ago, it is too complicated for what it does. You can see an example in the PyHorizontal.cpp file and look at PyHorizontal_create(). It is very dumb and tedious programming. I intend to review it thoroughly when migrating to Python 3. Basically it build the "signature" of the function and is followed by a big "if" afterwards. The Python "wrapper" is not something I'm very proud of as it is only a big bunch of C macros. I'm not happy with the *way* the code is generated, but on the other hand, I am happy with the *generated* code and the fact that I can finely tune it. I will try to make a more intensive use of C++ templates. But not as much as in Boost as it becomes very, very slow to compile (it's the reason why the Qt team abandoned it in favor of another interface generator). -- .-. J e a n - P a u l C h a p u t / Administrateur Systeme /v\ Jean-Paul.Chaput@lip6.fr /(___)\ work: (33) 01.44.27.53.99 ^^ ^^ cell: 06.66.25.35.55 home: 09.65.29.83.38 U P M C Universite Pierre & Marie Curie L I P 6 Laboratoire d'Informatique de Paris VI S o C System On Chip