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
36 private :: c_ptr, c_char, c_null_char, c_null_ptr, c_loc, c_funptr, c_null_funptr, c_funloc
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 )