www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - D array to c

reply "Harpo" <roederharpo hushmail.com> writes:
Hello I need to pass a array in D to c. I have edited the code to 
the important parts. Normally in C I would just do this:

void myFunction(int *array)
{
}

Then pass it a array of whatever size. However I actually need 
the array to be in a struct so...

typedef struct{int* array;} examplestruct;

void myFunction(examplestruct parameter){


}

On the D end what type structure do I need to use to pass a array 
of unknown size inside a struct to the c function? I have tried 
stuff like:

struct examplestruct {long* array;}
long numar[50];
examplestruct parameters;
parameters.array = numuar;

When I do that I get type conflictions.  Error: cannot implicitly 
convert expression (numar) of type long[50] to long*...
I am not sure what setup I need to have here. Anyone know whats 
up?

Thanks! -Harpo
Jun 05 2014
next sibling parent "Philpax" <phillip philliplarkson.com> writes:
On Friday, 6 June 2014 at 03:40:41 UTC, Harpo wrote:
 Hello I need to pass a array in D to c. I have edited the code 
 to the important parts. Normally in C I would just do this:

 void myFunction(int *array)
 {
 }

 Then pass it a array of whatever size. However I actually need 
 the array to be in a struct so...

 typedef struct{int* array;} examplestruct;

 void myFunction(examplestruct parameter){


 }

 On the D end what type structure do I need to use to pass a 
 array of unknown size inside a struct to the c function? I have 
 tried stuff like:

 struct examplestruct {long* array;}
 long numar[50];
 examplestruct parameters;
 parameters.array = numuar;

 When I do that I get type conflictions.  Error: cannot 
 implicitly convert expression (numar) of type long[50] to 
 long*...
 I am not sure what setup I need to have here. Anyone know whats 
 up?

 Thanks! -Harpo
Use numar.ptr to get a long* pointer. Also, are you sure you want to use 64-bit integers on the D side? Are you sure the C compiler is using 64-bit for its integers?
Jun 05 2014
prev sibling parent reply "Harpo" <roederharpo hushmail.com> writes:
sorry thats:


struct examplestruct {int* array;}
int numar[50];
examplestruct parameters;
parameters.array = numuar;

When I do that I get type conflictions.  Error: cannot implicitly
convert expression (numar) of type int[50] to int*...
I am not sure what setup I need to have here. Anyone know whats
up?

(That int / long bit was just a typo when I was editing to just 
the relevent parts.)
Jun 05 2014
parent "Harpo" <roederharpo hushmail.com> writes:
Thanks that was perfect.
Also I am aware of the use of the 64bit numbers. Thank you for 
pointing it out though.
Jun 05 2014