From: Olly B. <ol...@su...> - 2009-07-03 11:52:22
|
On 2009-07-02, Xavier Delacour <xav...@gm...> wrote: > Very likely this will require some configure magic or a switch to > toggle between octave <3.2 and >=3.2. Suggestions on what method is > preferred would be welcome. The code SWIG generates shouldn't depend on the version of octave (if any) which happened to be installed when SWIG was built. That would mean you'd need to install SWIG twice if you wanted to be able to generate wrappers for both octave < 3.2 and >= 3.2. It's also very unhelpful when SWIG is built as a binary package. There are a couple of approaches which are usually used: (a) Generate wrappers which can work with either < 3.2 or >= 3.2 using conditional compilation in the generated C/C++ wrapper code. This works less well if you need different code in generated code which is in the octave language (assuming SWIG generates any octave code - I'm not familiar with that backend at all I'm afraid). For example, Python has various tests like "#if PY_VERSION_HEX < 0x02030000", Perl and Ruby both have "#ifdef" checks for macros added in newer versions of the respective APIs with fallback versions. (b) Add a command line option to SWIG's octave backend (e.g. something like "-octaveversion=3.2") - for example, Python has -py3 to turn on some extra features which require Python 3 and -modern which requires Python 2.3; PHP used to have -php4 and -php5 before we dropped PHP4 support; guile has -gh and -scm. Cheers, Olly |