Note that in that thread the immutable is being put in an array first and
then the array is reinterpreted. That is the only way this can work,
because an immutable is not guaranteed to live in the heap.

On Tue, Mar 17, 2015 at 11:25 AM, René Donner <[email protected]> wrote:

> I believe this might help:
> https://groups.google.com/d/msg/julia-users/K1BlJW8k2o0/FRfANpsB_XIJ
>
> Am Dienstag, 17. März 2015 16:08:09 UTC+1 schrieb Kristoffer Carlsson:
>
>> Say I have an immutable with only one type.
>>
>> immutable Strain
>>     exx::Float64
>>     eyy::Float64
>>     ezz::Float64
>>     gyz::Float64
>>     gxz::Float64
>>     gxy::Float64
>> end
>>
>> Is there anyway I can reinterpret this as a Vector{Float64} in a fast way
>> without copying data. The memory of the Strain type should be exactly like
>> the vector.
>>
>> The reason I want to do this is because I want to i.e. be able to
>> multiply a strain and a general matrix but I also want to be able to write
>> my own functions for Strain.
>>
>> Naively, I tried this:
>>
>> julia> reinterpret(Vector{Float64}, strain)
>> ERROR: reinterpret: expected bits type as first argument
>>  in reinterpret at base.jl:65
>>
>> I saw this comment in one of the issues here
>> https://github.com/JuliaLang/julia/issues/5857:
>>
>> "ImmutableArrays has the advantage that Array(Vector4{Int}, 10) it can be
>> reinterpreted as a 4x10 matrix with reinterpret and reshape without memory
>> movement (e.g. when calling a c function on the data)."
>>
>>
>> Best regards,
>> Kristoffer Carlsson
>>
>

Reply via email to