changes for next PETSc release

Boyce Griffith griffith at cims.nyu.edu
Mon Mar 17 13:47:39 CDT 2008


Matthew Knepley wrote:
> On Mon, Mar 17, 2008 at 1:06 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>     Fortran90 has namespaces??????
> 
> Not in the way I was thinking. Damn F90. Anyway, it looks like you can
> selectively
> use interface modules, so we might be able to get away with redundant names
> by just not using them together.
> 
> I jsut really hate the idea of putting "PETSc" in front of every word
> in the package.
> It is really the ugliest thing I can imagine and will make programming that much
> more of a slog.

I'm not confident that what I'm about to suggest is actually a good 
idea, but perhaps there could be two interfaces: one for C and one for C++.

The C interface could use something like "petsc_" as a prefix for all 
PETSc functions and structs (e.g., petsc_Mat and petsc_KSPSolve()), and 
the C++ interface could define everything in the petsc namespace (e.g., 
petsc::Mat and petsc::KSPSolve()).  I think that it should be 
straightforward to make a script to automate the generation of the C++ 
interface from the C interface, e.g. using typedefs for the various 
structs and inline functions that simply call the appropriate C function.

Folks who really want to avoid re-writing large amounts of code could 
switch to using a C++ compiler instead of a C compiler and use "using 
namespace petsc".  Possibly the "using namespace" declaration could be 
done automatically in the PETSc headers when an appropraite variable is 
#define'd (e.g., whenever PETSC_COMPATIBILITY_MODE is #define'd).

-- Boyce




More information about the petsc-dev mailing list