On 08/12/2012 10:33 PM, Andrew wrote:
I'm attempting to create a wrapper for MPI, however, MPI_Init
wants to read the arguments for main():
MPI_Init(int *argv, char ***argc);
How do I get this last level of pointer reference?
So far, I have:
void main (string[] args)
{
auto argarr = new char*[args.length];
foreach(i, a; args)
argarr[i] = (a.dup ~ '\0').ptr;
int argc = to!(int)(argarr.length);
MPI_Init(&argc, argarr.ptr);
}
Any ideas?
-Andrew
Maybe like this?
import std.algorithm, std.array, std.conv;
void main(string[] args){
auto argarr = args.map!(a=>(a ~ '\0').ptr).array;
int argc = to!(int)(argarr.length);
auto argv = argarr.ptr;
MPI_Init(&argc, &argv);
args = argv[0..argc].map!(to!string).array;
// ...
}