July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tim Matthews | Tim Matthews Wrote:
> I thought a slice would behave slighty different due to some sort of meta data that is a separate area of memory so it doesn't effect D's abi.
>
Current plan is to introduce new type - array - into the language.
| |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Kagamin | Kagamin wrote:
> Tim Matthews Wrote:
>
>> I thought a slice would behave slighty different due to some sort of meta data that is a separate area of memory so it doesn't effect D's abi.
>>
> Current plan is to introduce new type - array - into the language.
Do you know the ng posts or where ever that was posted?
| |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tim Matthews |
Tim Matthews wrote:
> Kagamin wrote:
>> Tim Matthews Wrote:
>>
>>> I thought a slice would behave slighty different due to some sort of meta data that is a separate area of memory so it doesn't effect D's abi.
>>>
>> Current plan is to introduce new type - array - into the language.
>
> Do you know the ng posts or where ever that was posted?
Best bet would be to search for "T[new]".
| |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tim Matthews | Hello Tim, > BCS wrote: > >> Hello Tim, >> >>> Anyway I like how you can get a slice of array that is just a view >>> into the original. If I modify the slice, it modifies the full >>> original array which can be very useful. If however I modify the >>> length of the slice which I was doing in an attempt to extend the >>> view, it becomes it's own array. >>> >> [...] >> >>> Was this a design choice, bug, undefined behavior, etc...? >>> >> you can grab a larger chunk like this >> >> char[] buff1 = something; >> char[] buff2 = buff1[10..20]; >> buff2 = buff2.ptr[0..20]; >> >> note this is unsafe and will give you no warnings if you extend past >> the end of buff1; >> > I know that but I when I said I was trying to extend the view I really > mean that I was just trying to extend the view. If that doesn't "extend the view", then I'm not understanding what you are asking for. the above should compile to the sudocode: t = &(buff.ptr[0]); L = 20-0; buff2.{ptr, length} = {t, L}; and should optimize to just an assignment to length. > Also depending on what > news reader you use you should see that it branched off in a > particular direction to a solution. > If you are referring the your response to Steven Schveighoffer, that amounts to the same thing I proposed but is even less safe (I don't think the layout of an array reference is speced) and harder to understand. | |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to BCS | Sorry I misread (lacking sleep). I can just re slice from the slice, silly me.
import std.stdio;
void extendSlice(T)(ref T[] slice, uint extendCount)
{
slice = slice.ptr[0..slice.length+extendCount];
}
void main()
{
char[] a = "Hello".dup;
char[] b;
b = a[1..3]; //b is a view into a
writeln(a); //(Hello)
writeln(b); //(el)
extendSlice(b,1);
writeln(a); //(Hello)
writeln(b); //(ell)
}
| |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Tim Matthews | Hello Tim,
> Sorry I misread (lacking sleep).
Been there, done that. :oz
| |||
July 09, 2009 Re: Array slice length confusion | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | Daniel Keep wrote:
>
> Tim Matthews wrote:
>> Kagamin wrote:
>>> Tim Matthews Wrote:
>>>
>>>> I thought a slice would behave slighty different due to some sort of
>>>> meta data that is a separate area of memory so it doesn't effect D's
>>>> abi.
>>>>
>>> Current plan is to introduce new type - array - into the language.
>> Do you know the ng posts or where ever that was posted?
>
> Best bet would be to search for "T[new]".
Superseded by Andrei's Array struct.
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply