← Back to team overview

kicad-developers team mailing list archive

Re: Python binding of enums

 

You have defined the options we have perfectly clear, now we're at "1",
for most cases shouldn't be a problem. But for some it might be.

Only one point, if you pass a string where an int should be, SWIG will
launch
an exception back to python, and python will tell the user. The only
(known) case is  int == enum.

Greetings! :)



2012/8/9 Lorenzo Marcantonio <l.marcantonio@xxxxxxxxxxxx>

> On Thu, Aug 09, 2012 at 09:00:32AM -0500, Dick Hollenbeck wrote:
> > If that contract needs to be renegotiated, then lets begin the process
> of renegotiation,
> > rather than starting immediately into a breach of contract.    I for one
> want the ugliness
> > out of the C++ code.
>
> I agree that boundary checking for everything that is usually 'granted'
> by the C++ would be a lot of 'spurious' assert/exception throwing.
> That's why I've migrated some types (for example layer number and layer
> masks) at least to enum in my branch, to get stricter type checking.
> Which is exactly the *opposite* languages like python do.
>
> For me this is a classical impedance mismatch case... I see 3 alternatives:
> - Trust people to always pass the right stuff to python (right, yeah)
>
> - Convive with parameter checking; that's the bread and butter of Eiffel
>   and program-by-contract programmers... I find it a little distracting
>   (you risk having more parameters checking than actual code!) but
>   that's the core of 'defensive programming', at least you gain
>   extensive checking for all the exposed interfaces.
>
> - Implement a facade adapter in python, ie an intermediate class which
>   checks stuff and then call the 'low level' routines... that's what
>   many common lisps and even HP RPL calculators do:P I heard that most
>   of the javabeans stuff is for this kind of interfacing, too.
>   Of course there's a performance price, and you have to keep updated
>   the facade classes, but at least you can optimally abstract for the
>   target (a stupid example: instead of getting an int for a layer, get
>   a string and look it up before calling the C++ code).
>
> An that's why in distributed system usually is a *bad idea* to expose
> directly the internal interface... electronically is the same as putting
> out the MCU pins without ESD protection (seen that too many times, many
> times redesigned almost only for fix these issues...)
>
> Scripting can't simply be *grafted on* in a robust why IMHO
>
> --
> Lorenzo Marcantonio
> Logos Srl
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>



-- 

Miguel Angel Ajo Pelayo
http://www.nbee.es
+34 636 52 25 69
skype: ajoajoajo

Follow ups

References