Thread overview | ||||||
---|---|---|---|---|---|---|
|
February 28, 2011 How-to manipulate a C array with D2 vector operations? | ||||
---|---|---|---|---|
| ||||
Hi I am trying to implement a D2 function that has this C signature (it gets called from a C module and I cannot change the caller): extern(C) read_into(char *buffer, size_t buf_len); I would like to use D's vector (or array-wise according to TDPL) operations on buffer but I cannot find a way, how I could initialize a (static?) D array and tell it to use buffer as its memory. Obviously I don't want to copy buffer in a regular D array to be able to do the manipulations and than having to copy everything back into buffer. Is there any way to get this accomplished? Thanks, Lars |
February 28, 2011 Re: How-to manipulate a C array with D2 vector operations? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lars Holowko | On Mon, 28 Feb 2011 19:51:28 +0300, Lars Holowko <lars.holowko@gmail.com> wrote:
> Hi
>
> I am trying to implement a D2 function that has this C signature (it
> gets called from a C module and I cannot change the caller):
>
> extern(C) read_into(char *buffer, size_t buf_len);
>
> I would like to use D's vector (or array-wise according to TDPL)
> operations on buffer but I cannot find a way, how I could initialize a
> (static?) D array and tell it to use buffer as its memory. Obviously I
> don't want to copy buffer in a regular D array to be able to do the
> manipulations and than having to copy everything back into buffer.
>
> Is there any way to get this accomplished?
>
>
> Thanks,
>
> Lars
Here you go:
auto arr = buffer[0..buf_len];
Now you can operate on this array however you like. E.g.
arr[] = 0; // initialize with zeros
|
February 28, 2011 Re: How-to manipulate a C array with D2 vector operations? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Lars Holowko | > I am trying to implement a D2 function that has this C signature (it
> gets called from a C module and I cannot change the caller):
>
> extern(C) read_into(char *buffer, size_t buf_len);
>
> I would like to use D's vector (or array-wise according to TDPL)
> operations on buffer but I cannot find a way, how I could initialize a
auto darray = buffer[0 .. buf_len]
|
February 28, 2011 Re: How-to manipulate a C array with D2 vector operations? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Denis Koroskin | On 2/28/2011 10:15 AM, Denis Koroskin wrote:
> On Mon, 28 Feb 2011 19:51:28 +0300, Lars Holowko
> <lars.holowko@gmail.com> wrote:
>
>> gets called from a C module and I cannot change the caller):
>>
>> extern(C) read_into(char *buffer, size_t buf_len);
>>
>> I would like to use D's vector (or array-wise according to TDPL)
>> operations on buffer but I cannot find a way, how I could initialize a
>> (static?) D array and tell it to use buffer as its memory. Obviously I
>
> Here you go:
>
> auto arr = buffer[0..buf_len];
>
> Now you can operate on this array however you like. E.g.
>
> arr[] = 0; // initialize with zeros
Thanks Denis and Trass3r,
that was embarrasingly easy ;-)
|
Copyright © 1999-2021 by the D Language Foundation