27 use iso_c_binding
, only: c_ptr, c_char, c_null_char, c_null_ptr, c_loc, c_funptr, c_null_funptr, c_funloc, c_associated
28 use iso_fortran_env
, only: error_unit
34 integer,
parameter :: wp = private_double
35 private :: c_ptr, c_char, c_null_char, c_null_ptr, c_loc, c_funptr, c_null_funptr, c_funloc
37 private :: private_plflt, private_plint, private_plbool, private_double,
plcgrid,
plfgrid
61 import :: c_funptr, c_ptr
62 type(c_funptr),
value,
intent(in) :: proc
63 type(c_ptr),
value,
intent(in) :: data
70 import :: c_funptr, c_ptr
71 type(c_funptr),
value,
intent(in) :: proc
72 type(c_ptr),
value,
intent(in) :: data
117 include
'included_plplot_real_interfaces.f90'
129 real(kind=wp) :: plrandd_impl
132 function interface_plrandd() bind(c,name='c_plrandd')
133 import :: private_plflt
135 real(kind=private_plflt) :: interface_plrandd
136 end function interface_plrandd
139 plrandd_impl =
real(interface_plrandd(), kind=wp)
145 procedure(pllabeler_proc_data) :: proc
146 type(c_ptr),
value,
intent(in) :: data
147 pllabeler_data => proc
154 procedure(pllabeler_proc) :: proc
166 procedure(pltransform_proc_data) :: proc
167 type(c_ptr),
value,
intent(in) :: data
168 pltransform_data => proc
175 procedure(pltransform_proc) :: proc
186 subroutine plmapformf2c( n, x, y ) bind(c, name = 'plplot_double_private_plmapformf2c')
187 integer(kind=private_plint),
value,
intent(in) :: n
188 real(kind=private_plflt),
dimension(n),
intent(inout) :: x, y
190 real(kind=wp),
dimension(:),
allocatable :: x_inout, y_inout
192 allocate(x_inout(n), y_inout(n))
194 x_inout =
real(x, kind=wp)
195 y_inout =
real(y, kind=wp)
197 call plmapform( x_inout, y_inout )
198 x =
real(x_inout, kind=private_plflt)
199 y =
real(y_inout, kind=private_plflt)
202 subroutine pllabelerf2c( axis, value, label, length, data ) bind(c, name = 'plplot_double_private_pllabelerf2c')
203 integer(kind=private_plint),
value,
intent(in) :: axis, length
204 real(kind=private_plflt),
value,
intent(in) :: value
205 character(len=1),
dimension(*),
intent(out) :: label
206 type(c_ptr),
value,
intent(in) :: data
208 character(len=:),
allocatable :: label_out
209 integer :: trimmed_length
211 if ( c_associated(data) )
then
212 write(*,*)
'PLPlot: error in pllabelerf2c - data argument should be NULL'
216 allocate(
character(length) :: label_out)
217 call pllabeler( int(axis),
real(value,kind=wp), label_out )
218 trimmed_length =
min(length,len_trim(label_out) + 1)
219 label(1:trimmed_length) = transfer(trim(label_out(1:length))//c_null_char,
" ", trimmed_length)
220 deallocate(label_out)
223 subroutine pllabelerf2c_data( axis, value, label, length, data ) bind(c, name = 'plplot_double_private_pllabelerf2c_data')
224 integer(kind=private_plint),
value,
intent(in) :: axis, length
225 real(kind=private_plflt),
value,
intent(in) :: value
226 character(len=1),
dimension(*),
intent(out) :: label
227 type(c_ptr),
value,
intent(in) :: data
229 character(len=:),
allocatable :: label_out
230 integer :: trimmed_length
232 allocate(
character(length) :: label_out)
233 call pllabeler_data( int(axis),
real(value,kind=wp), label_out, data )
234 trimmed_length =
min(length,len_trim(label_out) + 1)
235 label(1:trimmed_length) = transfer(trim(label_out(1:length))//c_null_char,
" ", trimmed_length)
236 deallocate(label_out)
239 subroutine pltransformf2c( x, y, tx, ty, data ) bind(c, name = 'plplot_double_private_pltransformf2c')
240 real(kind=private_plflt),
value,
intent(in) :: x, y
241 real(kind=private_plflt),
intent(out) :: tx, ty
242 type(c_ptr),
value,
intent(in) :: data
244 real(kind=wp) :: tx_out, ty_out
246 if ( c_associated(data) )
then
247 write(*,*)
'PLPlot: error in pltransfrom2c - data argument should be NULL'
251 call pltransform(
real(x,kind=wp),
real(y,kind=wp), tx_out, ty_out )
256 subroutine pltransformf2c_data( x, y, tx, ty, data ) bind(c, name = 'plplot_double_private_pltransformf2c_data')
257 real(kind=private_plflt),
value,
intent(in) :: x, y
258 real(kind=private_plflt),
intent(out) :: tx, ty
259 type(c_ptr),
value,
intent(in) :: data
261 real(kind=wp) :: tx_out, ty_out
263 call pltransform_data(
real(x,kind=wp),
real(y,kind=wp), tx_out, ty_out, data )
subroutine, private pllabelerf2c_data(axis, value, label, length, data)
real(kind=wp) function plrandd_impl()
subroutine plslabelfunc_impl_data(proc, data)
subroutine plslabelfunc_impl_null
subroutine, private pllabelerf2c(axis, value, label, length, data)
subroutine character_array_to_c(cstring_array, cstring_address, character_array)
subroutine, private pltransformf2c_data(x, y, tx, ty, data)
subroutine plslabelfunc_impl(proc)
subroutine, private plmapformf2c(n, x, y)
subroutine, private pltransformf2c(x, y, tx, ty, data)