string to char array?

Kyoji Klyden via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 3 03:21:19 PDT 2015


On Wednesday, 3 June 2015 at 08:11:16 UTC, Kagamin wrote:
> On Tuesday, 2 June 2015 at 16:41:38 UTC, Kyoji Klyden wrote:
>> src:
>>
>>        string source = readText("test.glvert");
>> 	
>> 	const string sources = source.toStringz;
>> 	const int len = source.length;
>> 	
>> 	GLuint vertShader = glCreateShader( GL_VERTEX_SHADER );
>> 	
>> 	glShaderSource(vertShader, 1, &sources, &len);
>
> Judging by the docs, you don't need null-terminated strings and 
> can use native D strings, just pass their lengths:
>
> 	string source = readText("test.glvert");
>
> 	const char* sources = source.ptr;
> 	const GLint len = cast(GLint)source.length;
>
> 	GLuint vertShader = glCreateShader( GL_VERTEX_SHADER );
>
> 	glShaderSource(vertShader, 1, &sources, &len);

Oh that also works quite well!
Is casting necessary there though? DerelictGL treats GL types as 
D types, and .length is size_t so wouldn't it just turn into an 
int regardless??

Also the one part I don't understand is with &sources. So is this 
passing sources as a reference, but sources itself is a pointer 
to a pointer? I'm just a tad confused on how this part works :S


More information about the Digitalmars-d-learn mailing list