swig: remove comedi_ prefix from the function names

python always use the namespace of the library so it was redundant.

so what used to be written comedi.comedi_open() can be written comedi.open().

The main trick is to add a special python code that allows for the old names to still be compatible.
That avoids to break every single python program previously written.
This commit is contained in:
Éric Piel 2014-01-31 15:07:15 +01:00 committed by Ian Abbott
parent 1465834a26
commit 371dcc56e6

View file

@ -38,6 +38,11 @@
%include "carrays.i"
%include "typemaps.i"
#ifdef SWIGPYTHON
%rename("%(strip:[COMEDI_])s", regextarget=1) "COMEDI_.*";
%rename("%(strip:[comedi_])s", regextarget=1) "comedi_.*";
#endif
%inline %{
static unsigned int cr_pack(unsigned int chan, unsigned int rng, unsigned int aref){
return CR_PACK(chan,rng,aref);
@ -69,3 +74,24 @@ static unsigned int cr_aref(unsigned int a){
%array_class(sampl_t, sampl_array);
%array_class(lsampl_t, lsampl_array);
%array_class(comedi_insn, insn_array);
%insert("python") %{
# Trick to allow accessing functions and constants with their original C name
import sys
class __Wrapper(object):
def __init__(self, wrapped):
self.wrapped = wrapped
def __getattr__(self, name):
try:
return getattr(self.wrapped, name)
except AttributeError:
if name.startswith("comedi_") or name.startswith("COMEDI_"):
return getattr(self.wrapped, name[7:])
else:
raise
sys.modules[__name__] = __Wrapper(sys.modules[__name__])
%}