C++ class hierarchy for handles ?

James Cownie (jcownie@bbn.com)
Mon, 05 Aug 1996 10:56:29 +0100

Now that the external interface chapter has introduced cacheing of
attributes on general handles, the C++ binding begins for these
functions begin to look slightly odd.

The natural way to handle this in C++ would be to have

(arguments omitted to save typing !)

class MPI {

public:
class Handle {
//
public:
virtual attr_put();
virtual attr_get();
virtual name_put();
virtual name_get();
};

class Communicator : public Handle {
// Communicator specific functions
};

class Datatype : public Handle {
// Datatype specific functions
};

class Request : public Handle {
// Request specific functions
};

class File : public Handle {
// File specific operations
};

};

However our current C++ binding is flat.

So,

1) Do we want to do this ?
a) If we do, how does that affect layering on top of the C
implementation ?

2) How should we handle :-) this if we don't do it this way ?
(I assume we need a conversion operator from each of Communicator,
Datatype, Request, File to Handle.)

-- Jim

James Cownie
BBN UK Ltd
Phone : +44 117 9071438
E-Mail: jcownie@bbn.com