using memset withing a pure function

D_Learner via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Aug 15 11:04:29 PDT 2015


On Saturday, 15 August 2015 at 01:13:02 UTC, Adam D. Ruppe wrote:
> On Saturday, 15 August 2015 at 01:09:15 UTC, D_Learner wrote:
>> When writting a pure fucntion involving C non pure functions 
>> like
>>  memcpy() and   memset()
>
> Those functions are pure already, and marked so in the newest 
> dmd (and I think older ones too, though I haven't confirmed.
>
> Your code compiled out of the box for me.
>
> BTW D also has some syntax sugar for them:
>
> arr[start .. end] = 0; // memset those bounds to 0
> arr[start .. end] = arr2[start .. end]; // memcpy

You could be surprised am still trying to get my head around 
this. Considering the code :-

     memcpy(&skip[0], &skip[0]+shift, (m-shift)*(int.sizeof));
     memset(&skip[0]+(m-shift),0, shift*(int.sizeof))

I was thinking conversion would be :-

     skip[0 .. size-1] = skip[shift .. size-1   ];  //For the 
memcpy();
     skip[0 .. size-1] = 0;    //For memset()

But this doesn't seem to work for me as dmd(v2.066.1) gives the 
"error slice [8..7] exceeds array bounds [0..8]"  .Sure am 
missing something.









More information about the Digitalmars-d-learn mailing list