Boost logo

Boost Users :

From: Paul Mensonides (yg-boost-users_at_[hidden])
Date: 2003-04-09 15:55:58


Toon Knapen wrote:

> 1) all manual
> For the bindings we #ifdef on the platform to determine
> how to convert identifiers (to match their fortran counterpart) and
> then define an identifier for every function (with the additonal
> underscore ...)
>
> e.g.
> #ifdef __sgi
> #define DAXPY daxpy_
> #endif
>
> 2) Wave (as suggested by Hartmut Kaiser)
> Use wave to create a header from an input-file. This puts
> a strong dependency on Wave and although the tool is impressive,
> this will make it difficult for people to add a new binding IMHO.

Actually, what Hartmut is working on now is a general mechanism for the
preprocessor to call external programs. The tolower, toupper types of things
fit into this mold perfectly.

> 3) Suggestion above of Paul Mensonidis
> This option will give us minimal work, we could just write IIUC
> FORTRAN_ID( d a x p y ).
> (Paul: could we leave out the seperation of the characters if we
> always
> provide seperated characters directly as in the line above ?)
> However, this solution might limit portability.

Yes, you could do it either way and it won't effect portibility. I just thought
that you want syntactic "cleanliness", without having to do this:

# if /* style == leading-underscore */
# define FUNCTION _function
# elif /* style == all-caps */
# define FUNCTION FUNCTION
# else
# define FUNCTION function
# endif

...for every identifier used. For maximum syntactic cleanliness, you need a
minimum of one macro per identifier:

#define DAXPY FORTRAN_ID(d a x p y _)

But this is just a shorthand for directly using FORTRAN_ID(...).

> Although I'm used to option 1, I would like to go for option 3
> (although maybe looking at the portability of the pp lib would not
> hurt)

I'm not sure what you mean here. I would use the pp-lib of course. In fact,
I'd add a few things to it that should probably be added anyway.

Regards,
Paul Mensonides


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net