Some suggested changes below:
[...]
class buffer_parameter : extends parameter
This one should then also inherit saga::buffer I guess.
For a C++ mapping, it is probably the easiest and cleanest way but if I remember well, SIDL does not allow multiple inheritance. So I avoided to use it. A solution is then to encapsulate a buffer object inside the buffer_parameter class.
[...]
What would a container_parameter look like? I am not sure I understood that one, yet.
Ooops, I forgot to give the container class. class container_parameter : extends handle_parameter { /* For a container, the dimension size is the size of the * container which is increasing each time we add a data. * And the data type is "Container". * * So, the constructor call its parent constructor like this: * saga::rpc::handle_parameter([0], input_uris, * output_uris, * Container, * data_modes); */ CONSTRUCTOR(in array<uri> input_uris, in array<uri> output_uris, in array<data_mode> data_modes, out container_parameter obj); // add a data into this data container set_data(in parameter data, in int rank); // get a data from this data container get_data(out parameter data, in int rank); // add a data at the end of this data container push_back(in parameter data); ... } A container is then a "special" handle_parameter which contains a set of parameters (accessible using an index value or push/pop methods). We defined it in the Grid RPC data management document to manage sets of data. (We have some use-cases where a service is called with a variable length set of input data and a variable length set of output). By using the "parameter" class as the type a "container_parameter" can manage, all the different data types can be stored in the container. Regards, Gaël.