slice based on base and width

2013-09-08 Thread Øivind

I find myself writing the following a lot:

  a[base..base+width]

to get the slice starting at 'base' of width 'width'. In verilog, 
we select members of a vector/array in three ways


  a[c :  d]   //D: a[c   .. d+1]
  a[c +: d]   //D: a[c   .. c+d]
  a[c -: d]   //D: a[c-d .. c]

Borrowing a bit from verilog, could we make two new operators, 
maybe +.. and -.. that allow us to do the same?


I could then write e.g.

  a[base+..width]

instead of the more verbose

  a[base..base+width]


Re: slice based on base and width

2013-09-08 Thread Øivind



  a[c -: d]   //D: a[c-d .. c]


I think this should be

a[c -: d]   //D: a[c-d+1 .. c+1],  e.g. a[5 -: 2] == [a[4], a[5]]



Re: slice based on base and width

2013-09-08 Thread Chang Long

On Sunday, 8 September 2013 at 10:53:23 UTC, Øivind wrote:



 a[c -: d]   //D: a[c-d .. c]


I think this should be

a[c -: d]   //D: a[c-d+1 .. c+1],  e.g. a[5 -: 2] == [a[4], 
a[5]]



try a[base][0..width]


Re: slice based on base and width

2013-09-08 Thread Simen Kjaeraas

On 2013-09-08, 14:02, Chang Long wrote:


On Sunday, 8 September 2013 at 10:53:23 UTC, Øivind wrote:



 a[c -: d]   //D: a[c-d .. c]


I think this should be

a[c -: d]   //D: a[c-d+1 .. c+1],  e.g. a[5 -: 2] == [a[4], a[5]]



try a[base][0..width]


That throws safety out the window for one. If you want safety and
no new language features, this should work:

  a[base..$][0..width]

--
  Simen


Re: slice based on base and width

2013-09-08 Thread Øivind

On Sunday, 8 September 2013 at 12:08:50 UTC, Simen Kjaeraas wrote:

On 2013-09-08, 14:02, Chang Long wrote:


On Sunday, 8 September 2013 at 10:53:23 UTC, Øivind wrote:



a[c -: d]   //D: a[c-d .. c]


I think this should be

a[c -: d]   //D: a[c-d+1 .. c+1],  e.g. a[5 -: 2] == [a[4], 
a[5]]



try a[base][0..width]


That throws safety out the window for one. If you want safety 
and

no new language features, this should work:

  a[base..$][0..width]


Thanks

Still a little verbose, but at least you don't have to type the 
same things twice.


I guess the double slice will be optimized into a single one at 
least for release mode, so there should be no performance 
degredation?




Re: slice based on base and width

2013-09-08 Thread Walter Bright

On 9/8/2013 6:03 AM, Øivind wrote:

That throws safety out the window for one. If you want safety and
no new language features, this should work:

  a[base..$][0..width]


Thanks

Still a little verbose, but at least you don't have to type the same things 
twice.

I guess the double slice will be optimized into a single one at least for
release mode, so there should be no performance degredation?



Try it and see. If it isn't, feel free to file an enhancement request for the 
optimizer!