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, &
29 use iso_fortran_env
, only: error_unit
35 integer,
parameter :: wp = private_single
36 private :: c_ptr, c_char, c_null_char, c_null_ptr, c_loc, c_funptr, c_null_funptr, c_funloc
38 private :: private_plflt, private_plint, private_plbool, private_single,
plcgrid,
plfgrid
45 include
'included_plplot_real_interfaces.f90'
49 subroutine plmapformf2c( n, x, y ) bind(c, name = 'plplot_single_private_plmapformf2c')
50 integer(kind=private_plint),
value,
intent(in) :: n
51 real(kind=private_plflt),
dimension(n),
intent(inout) :: x, y
53 real(kind=wp),
dimension(:),
allocatable :: x_inout, y_inout
55 allocate(x_inout(n), y_inout(n))
57 x_inout =
real(x, kind=wp)
58 y_inout =
real(y, kind=wp)
60 call plmapform( x_inout, y_inout )
61 x =
real(x_inout, kind=private_plflt)
62 y =
real(y_inout, kind=private_plflt)
65 subroutine pllabelerf2c( axis, value, label, length, data ) bind(c, name = 'plplot_single_private_pllabelerf2c')
66 integer(kind=private_plint),
value,
intent(in) :: axis, length
67 real(kind=private_plflt),
value,
intent(in) :: value
68 character(len=1),
dimension(*),
intent(out) :: label
69 type(c_ptr),
value,
intent(in) :: data
71 character(len=:),
allocatable :: label_out
72 integer :: trimmed_length
74 if ( c_associated(data) )
then
75 write(*,*)
'PLPlot: error in pllabelerf2c - data argument should be NULL'
79 allocate(
character(length) :: label_out)
80 call pllabeler( int(axis),
real(value,kind=wp), label_out )
81 trimmed_length =
min(length,len_trim(label_out) + 1)
82 label(1:trimmed_length) = transfer(trim(label_out(1:length))//c_null_char,
" ", trimmed_length)
86 subroutine pllabelerf2c_data( axis, value, label, length, data ) bind(c, name = 'plplot_single_private_pllabelerf2c_data')
87 integer(kind=private_plint),
value,
intent(in) :: axis, length
88 real(kind=private_plflt),
value,
intent(in) :: value
89 character(len=1),
dimension(*),
intent(out) :: label
90 type(c_ptr),
value,
intent(in) :: data
92 character(len=:),
allocatable :: label_out
93 integer :: trimmed_length
95 allocate(
character(length) :: label_out)
96 call pllabeler_data( int(axis),
real(value,kind=wp), label_out, data )
97 trimmed_length =
min(length,len_trim(label_out) + 1)
98 label(1:trimmed_length) = transfer(trim(label_out(1:length))//c_null_char,
" ", trimmed_length)
102 subroutine pltransformf2c( x, y, tx, ty, data ) bind(c, name = 'plplot_single_private_pltransformf2c')
103 real(kind=private_plflt),
value,
intent(in) :: x, y
104 real(kind=private_plflt),
intent(out) :: tx, ty
105 type(c_ptr),
value,
intent(in) :: data
107 real(kind=wp) :: tx_out, ty_out
109 if ( c_associated(data) )
then
110 write(*,*)
'PLPlot: error in pltransfrom2c - data argument should be NULL'
114 call pltransform(
real(x,kind=wp),
real(y,kind=wp), tx_out, ty_out )
119 subroutine pltransformf2c_data( x, y, tx, ty, data ) bind(c, name = 'plplot_single_private_pltransformf2c_data')
120 real(kind=private_plflt),
value,
intent(in) :: x, y
121 real(kind=private_plflt),
intent(out) :: tx, ty
122 type(c_ptr),
value,
intent(in) :: data
124 real(kind=wp) :: tx_out, ty_out
126 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)
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, private plmapformf2c(n, x, y)
subroutine, private pltransformf2c(x, y, tx, ty, data)