(j3.2006) (SC22WG5.3591) Assumed-type and Assumed-rank extensions for C Interop TR.
Bill Long
longb
Fri Jul 25 14:04:07 EDT 2008
Aleksandar Donev wrote:
> On Friday 25 July 2008 08:52, Jim Xia wrote:
>
>
>> And more, I don't understand this fragment
>>
>> type(*),target :: block(*)
>> integer(8) :: nbytes
>> Integer(8),pointer :: usable(:)
>>
>> call c_f_pointer (c_loc(block), usable, [nbytes*bit_size(usable)/8] )
>>
>> In particular, I don't understand what c_loc is used for since block is
>> already an address.
>>
> It is an assumed-shape ARRAY, not an address.
Assumed-size, actually. Either way, the real reason for the c_loc is
that the first argument of c_f_pointer is required to be of type C_PTR,
which is what C_LOC provides.
Cheers,
Bill
> We don't have that concept nor
> is anyone proposing we add it. It is passed by address, sure, but so are
> other assumed-shape arrays.
>
>
>> Also I don't see any type "casting" happens here as
>> the example to demonstrate that.
>>
> You started with an array of unknown type, with which you can do nothing. Then
> you made a Fortran pointer of a known type (integer) point to it. Now you can
> do things with it. It is like doing:
>
> usable => block(1:nbytes/8)
>
> Aleks
>
> _______________________________________________
> J3 mailing list
> J3 at j3-fortran.org
> http://j3-fortran.org/mailman/listinfo/j3
>
--
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc., 1340 Mendota Heights Rd., Mendota Heights, MN, 55120
More information about the J3
mailing list