[Issue 6345] New: A different kind of vector operation

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Jul 18 12:21:02 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=6345

           Summary: A different kind of vector operation
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: bearophile_hugs at eml.cc


--- Comment #0 from bearophile_hugs at eml.cc 2011-07-18 12:15:46 PDT ---
Currently (DMD 2.054) this is not allowed, but a vector op like this is
sometimes useful to me:

struct Foo {
    int x, y;
    int[100] array;
}
void main() {
    auto foos = new Foo[100];
    foos[].y += 10; // ********
}


For the programmer I think the meaning of such code is easy enough to
understand and use.

At the moment I don't see the need to define a operator overload for this too
(I mean something like opSliceUnary).


Don notes:

> An interesting use case:
> void main()
> {
>     cdouble[100] foos;
>     foos[].re = 5.0;
> }



Wilfried Kirschenmann suggests:

> void main() {
>   auto foos = new Foo[100];
>   auto ints = new int[100]
>   ints = foos[].y;
> }
> 
> This would simplify the wrinting of numerous application, especially
> in the writing of image/video processing (eg. rgb2yuv conversions)
> This would also simplify the writing of template library transforming
> "array of struct" to "struct of arrays" in a transparent manner for
> the library user.


Andrej Mitrovic notes (I don't understand this):

> float[] buffers = malloc..;
> float*[] CBuffers = buffers[].ptr;

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list