31 use iso_c_binding,
only: c_ptr, c_char, c_loc, c_funloc, c_funptr, c_null_char, c_null_ptr, c_null_funptr
32 use iso_fortran_env,
only: error_unit
42 integer,
parameter ::
plflt = private_plflt
48 integer(kind=private_plint),
parameter ::
maxlen = 320
50 include
'included_plplot_parameters.f90'
52 private :: c_ptr, c_char, c_loc, c_funloc, c_funptr, c_null_char, c_null_ptr, c_null_funptr
80 integer(kind=private_plint),
value,
intent(in) :: mode
82 integer(kind=private_plint),
intent(inout) :: argc
83 type(c_ptr),
dimension(*),
intent(inout) :: argv
483 integer,
intent(in) :: lexp, sigdig
489 integer(kind=private_plint),
value,
intent(in) :: lexp, sigdig
497 integer,
intent(in) :: sub
502 integer(kind=private_plint),
value,
intent(in) :: sub
526 integer,
intent(in) :: icol
531 integer(kind=private_plint),
value,
intent(in) :: icol
539 integer,
intent(in) :: iplsr
540 logical,
intent(in) :: flags
545 integer(kind=private_plint),
value,
intent(in) :: iplsr
546 integer(kind=private_plbool),
value,
intent(in) :: flags
594 integer,
intent(in) :: font
599 integer(kind=private_plint),
value,
intent(in) :: font
607 integer,
intent(in) :: charset
612 integer(kind=private_plint),
value,
intent(in) :: charset
620 integer,
intent(in) :: icol
621 integer,
intent(out) :: r, g, b
623 integer(kind=private_plint) :: r_out, g_out, b_out
629 integer(kind=private_plint),
value,
intent(in) :: icol
630 integer(kind=private_plint),
intent(out) :: r, g, b
641 integer,
intent(out) :: r, g, b
643 integer(kind=private_plint) :: r_out, g_out, b_out
649 integer(kind=private_plint),
intent(out) :: r, g, b
660 integer,
intent(out) :: compression
662 integer(kind=private_plint) :: compression_out
668 integer(kind=private_plint),
intent(out) :: compression
673 compression = int(compression_out)
677 character*(*),
intent(out) :: dev
679 character(len=1),
dimension(100) :: dev_out
684 character(len=1),
dimension(*),
intent(out) :: dev
709 character(len=:),
dimension(:),
allocatable,
intent(out) :: argv
711 integer :: nargv_local
712 character(len=1) :: test_argv_local
713 integer :: length_argv_local, length_local, iargs_local
715 nargv_local = command_argument_count()
716 if (nargv_local < 0)
then
718 write(error_unit,
'(a)')
'Plplot Fortran Severe Warning: plget_arguments: negative number of arguments'
724 length_argv_local = 0
725 do iargs_local = 0, nargv_local
726 call get_command_argument(iargs_local, test_argv_local, length_local)
727 length_argv_local =
max(length_argv_local, length_local)
731 allocate(
character(len=length_argv_local) :: argv(0:nargv_local))
732 do iargs_local = 0, nargv_local
733 call get_command_argument(iargs_local, argv(iargs_local))
740 character(len=*),
dimension(:),
allocatable,
intent(out) :: argv
741 integer,
intent(in) :: disambiguate
743 integer :: nargv_local
744 character(len=1) :: test_argv_local
745 integer :: length_argv_local, length_local, iargs_local
747 nargv_local = command_argument_count()
748 if (nargv_local < 0)
then
750 write(error_unit,
'(a)')
'Plplot Fortran Severe Warning: plget_arguments: negative number of arguments'
756 length_argv_local = 0
757 do iargs_local = 0, nargv_local
758 call get_command_argument(iargs_local, test_argv_local, length_local)
759 length_argv_local =
max(length_argv_local, length_local)
762 if(length_argv_local > len(argv) )
then
763 write(error_unit,*)
'Plplot Fortran Severe Warning: plget_arguments: at least one argument is too long to process'
769 allocate(argv(0:nargv_local))
770 do iargs_local = 0, nargv_local
771 call get_command_argument(iargs_local, argv(iargs_local))
778 integer,
intent(out) :: nargv
779 character(len=*),
dimension(0:),
intent(out) :: argv
781 character(len=1) :: test_argv_local
782 integer :: length_argv_local, length_local, iargs_local
784 nargv = command_argument_count()
787 write(error_unit,
'(a)')
'Plplot Fortran Severe Warning: plget_arguments: negative number of arguments'
792 if(nargv + 1 >
size(argv))
then
793 write(error_unit,
'(a)')
'Plplot Fortran Severe Warning: plget_arguments: too many arguments to process'
799 length_argv_local = 0
800 do iargs_local = 0, nargv
801 call get_command_argument(iargs_local, test_argv_local, length_local)
802 length_argv_local =
max(length_argv_local, length_local)
804 if(length_argv_local > len(argv) )
then
805 write(error_unit,*)
'Plplot Fortran Severe Warning: plget_arguments: at least one argument is too long to process'
810 do iargs_local = 0, nargv
811 call get_command_argument(iargs_local, argv(iargs_local))
817 integer,
intent(out) :: fam, num, bmax
819 integer(kind=private_plint) :: fam_out, num_out, bmax_out
825 integer(kind=private_plint),
intent(out) :: fam, num, bmax
836 integer,
intent(out) :: fci
838 integer(kind=private_plunicode) :: fci_out
844 integer(kind=private_plunicode),
intent(out) :: fci
853 character*(*),
intent(out) :: fnam
855 character(len=1),
dimension(100) :: fnam_out
860 character(len=1),
dimension(*),
intent(out) :: fnam
869 integer,
intent(out) :: family, style, weight
871 integer(kind=private_plint) :: family_out, style_out, weight_out
877 integer(kind=private_plint),
intent(out) :: family, style, weight
882 family = int(family_out)
883 style = int(style_out)
884 weight = int(weight_out)
888 integer,
intent(out) :: level
890 integer(kind=private_plint) :: level_out
896 integer(kind=private_plint),
intent(out) :: level
901 level = int(level_out)
913 integer,
intent(out) :: strm
915 integer(kind=private_plint) :: strm_out
921 integer(kind=private_plint),
intent(out) :: strm
930 character*(*),
intent(out) :: ver
932 character(len=1),
dimension(100) :: ver_out
937 character(len=1),
dimension(*),
intent(out) :: ver
946 integer,
intent(out) :: digmax, digits
948 integer(kind=private_plint) :: digmax_out, digits_out
954 integer(kind=private_plint),
intent(out) :: digmax, digits
959 digmax = int(digmax_out)
960 digits = int(digits_out)
964 integer,
intent(out) :: digmax, digits
966 integer(kind=private_plint) :: digmax_out, digits_out
972 integer(kind=private_plint),
intent(out) :: digmax, digits
977 digmax = int(digmax_out)
978 digits = int(digits_out)
982 integer,
intent(out) :: digmax, digits
984 integer(kind=private_plint) :: digmax_out, digits_out
990 integer(kind=private_plint),
intent(out) :: digmax, digits
995 digmax = int(digmax_out)
996 digits = int(digits_out)
1008 character(len=*),
intent(in) :: xlab, ylab, title
1013 character(len=1),
dimension(*),
intent(in) :: xlab, ylab, title
1017 call interface_pllab( trim(xlab)//c_null_char, trim(ylab)//c_null_char, trim(title)//c_null_char )
1022 integer,
intent(in) :: lin
1027 integer(kind=private_plint),
value,
intent(in) :: lin
1035 integer,
intent(in) :: strm
1040 integer(kind=private_plint),
value,
intent(in) :: strm
1049 character(len=:),
intent(inout),
dimension(:),
allocatable :: argv
1050 integer,
intent(in) :: mode
1052 integer(kind=private_plint) :: size_local
1053 integer :: max_length_local
1055 character(len=1),
dimension(:,:),
allocatable :: cstring_arg_local
1056 type(c_ptr),
dimension(:),
allocatable :: cstring_address_arg_inout
1067 allocate(
character(len=max_length_local) :: argv(0:size_local - 1))
1073 character(len=*),
intent(inout),
dimension(:),
allocatable :: argv
1074 integer,
intent(in) :: mode, disambiguate
1076 integer(kind=private_plint) :: size_local
1078 character(len=1),
dimension(:,:),
allocatable :: cstring_arg_local
1079 type(c_ptr),
dimension(:),
allocatable :: cstring_address_arg_inout
1090 write(error_unit,*)
'Plplot Fortran Severe Warning: plparseopts: at least one argument is too long to process'
1095 allocate(argv(0:size_local - 1))
1101 integer,
intent(out) :: nargv
1102 character(len=*),
intent(inout),
dimension(0:) :: argv
1103 integer,
intent(in) :: mode
1105 integer(kind=private_plint) :: size_local
1107 character(len=1),
dimension(:,:),
allocatable :: cstring_arg_local
1108 type(c_ptr),
dimension(:),
allocatable :: cstring_address_arg_inout
1118 write(error_unit,*)
'Plplot Fortran Severe Warning: plparseopts: at least one argument is too long to process'
1123 nargv = int(size_local - 1)
1128 integer,
intent(in) :: mode
1130 integer :: numargs_local, plget_arguments_rc
1131 integer(kind=private_plint) :: size_local
1133 integer,
parameter :: maxargs_local = 1000
1134 character (len=maxlen),
dimension(0:maxargs_local) :: arg_local
1135 character(len=1),
dimension(:,:),
allocatable :: cstring_arg_local
1136 type(c_ptr),
dimension(:),
allocatable :: cstring_address_arg_inout
1139 if(plget_arguments_rc /= 0)
then
1143 call character_array_to_c( cstring_arg_local, cstring_address_arg_inout, arg_local(0:numargs_local) )
1152 integer,
dimension(:),
intent(in) :: inc, del
1154 integer(kind=private_plint) :: nlin_local
1160 integer(kind=private_plint),
value,
intent(in) :: nlin
1161 integer(kind=private_plint),
dimension(*),
intent(in) :: inc, del
1167 write(error_unit,
"(a)")
"Plplot Fortran Warning: plpat: sizes of inc and del are not consistent"
1175 integer,
intent(in) :: setp, prec
1180 integer(kind=private_plint),
value,
intent(in) :: setp, prec
1188 integer,
intent(in) :: patt
1193 integer(kind=private_plint),
value,
intent(in) :: patt
1209 integer,
dimension(:),
intent(in) :: r, g, b
1211 integer(kind=private_plint) :: n_local
1217 integer(kind=private_plint),
dimension(*),
intent(in) :: r, g, b
1218 integer(kind=private_plint),
value,
intent(in) :: n
1224 write(error_unit,
"(a)")
"Plplot Fortran Warning: plscmap0: inconsistent sizes for r, g, and/or b"
1232 integer,
intent(in) :: n
1237 integer(kind=private_plint),
value,
intent(in) :: n
1245 integer,
dimension(:),
intent(in) :: r, g, b
1247 integer(kind=private_plint) :: n_local
1253 integer(kind=private_plint),
dimension(*),
intent(in) :: r, g, b
1254 integer(kind=private_plint),
value,
intent(in) :: n
1260 write(error_unit,
"(a)")
"Plplot Fortran Warning: plscmap1: inconsistent sizes for r, g, and/or b"
1268 integer,
intent(in) :: n
1273 integer(kind=private_plint),
value,
intent(in) :: n
1281 integer,
intent(in) :: icol, r, g, b
1286 integer(kind=private_plint),
value,
intent(in) :: icol, r, g, b
1295 integer,
intent(in) :: r, g, b
1300 integer(kind=private_plint),
value,
intent(in) :: r, g, b
1309 integer,
intent(in) :: color
1314 integer(kind=private_plint),
value,
intent(in) :: color
1322 integer,
intent(in) :: compression
1327 integer(kind=private_plint),
value,
intent(in) :: compression
1335 character(len=*),
intent(in) :: devname
1340 character(len=1),
dimension(*),
intent(in) :: devname
1349 integer,
intent(in) :: mode
1354 integer(kind=private_plint),
value,
intent(in) :: mode
1362 integer,
intent(in) :: s
1367 integer(kind=private_plint),
value,
intent(in) :: s
1376 integer,
intent(in) :: esc
1381 integer(kind=private_plint),
value,
intent(in) :: esc
1390 character(len=*),
intent(in) :: opt, optarg
1398 character(len=1),
dimension(*),
intent(in) :: opt, optarg
1407 integer,
intent(in) :: fam, num, bmax
1412 integer(kind=private_plint),
value,
intent(in) :: fam, num, bmax
1420 integer,
intent(in) :: fci
1426 integer(kind=private_plunicode),
value,
intent(in) :: fci
1435 character(len=*),
intent(in) :: fnam
1440 character(len=1),
dimension(*),
intent(in) :: fnam
1449 integer,
intent(in) :: family, style, weight
1454 integer(kind=private_plint),
value,
intent(in) :: family, style, weight
1466 integer,
intent(in) :: maxx, maxy
1467 character(kind=c_char),
dimension(:, :, :),
target,
intent(in) :: plotmem
1473 integer(kind=private_plint),
value,
intent(in) :: maxx, maxy
1474 type(c_ptr),
value,
intent(in) :: plotmem
1479 if( 3 /=
size(plotmem,1) )
then
1480 write(error_unit,
"(a)")
"Plplot Fortran Warning: plsmem: first dimension of plotmem is not 3"
1485 if( maxx /=
size(plotmem,2) .or. maxy /=
size(plotmem,3) )
then
1486 write(error_unit,
"(a)")
"Plplot Fortran Warning: plsmem: maxx and/or maxy not &
1487 &consistent with second and third plotmem dimensions"
1497 integer,
intent(in) :: maxx, maxy
1498 character(kind=c_char),
dimension(:, :, :),
target,
intent(in) :: plotmem
1504 integer(kind=private_plint),
value,
intent(in) :: maxx, maxy
1505 type(c_ptr),
value,
intent(in) :: plotmem
1510 if( 4 /=
size(plotmem,1) )
then
1511 write(error_unit,
"(a)")
"Plplot Fortran Warning: plsmema: first dimension of plotmem is not 4"
1516 if( maxx /=
size(plotmem,2) .or. maxy /=
size(plotmem,3) )
then
1517 write(error_unit,
"(a)")
"Plplot Fortran Warning: plsmema: maxx and/or maxy not &
1518 &consistent with second and third plotmem dimensions"
1524 integer,
intent(in) :: rot
1529 integer(kind=private_plint),
value,
intent(in) :: rot
1537 character(len=*),
intent(in) :: filename
1542 character(len=1),
dimension(*),
intent(in) :: filename
1551 character(len=*),
intent(in) :: filename
1552 logical,
intent(in) :: interpolate
1558 integer(kind=private_plbool),
value,
intent(in) :: interpolate
1559 character(len=1),
dimension(*),
intent(in) :: filename
1568 logical,
intent(in) :: pause
1574 integer(kind=private_plbool),
value,
intent(in) :: pause
1582 integer,
intent(in) :: strm
1587 integer(kind=private_plint),
value,
intent(in) :: strm
1595 integer,
intent(in) :: nx, ny
1600 integer(kind=private_plint),
value,
intent(in) :: nx, ny
1608 integer,
intent(in) :: nx, ny
1613 integer(kind=private_plint),
value,
intent(in) :: nx, ny
1621 integer,
intent(in) :: nx, ny
1622 character(len=*),
intent(in) :: devname
1627 integer(kind=private_plint),
value,
intent(in) :: nx, ny
1628 character(len=1),
dimension(*),
intent(in) :: devname
1636 integer,
intent(in) :: id
1641 integer(kind=private_plint),
value,
intent(in) :: id
1649 integer,
dimension(:),
intent(in) :: mark, space
1651 integer(kind=private_plint) :: n_local
1657 integer(kind=private_plint),
value,
intent(in) :: n
1658 integer(kind=private_plint),
dimension(*),
intent(in) :: mark, space
1664 write(error_unit,
"(a)")
"Plplot Fortran Warning: plstyl: inconsistent sizes for mark and space"
1672 logical,
optional,
intent(in) :: fill
1680 if (
present(fill) )
then
1688 integer,
intent(in) :: digmax, digits
1693 integer(kind=private_plint),
value,
intent(in) :: digmax, digits
1701 integer,
intent(in) :: digmax, digits
1706 integer(kind=private_plint),
value,
intent(in) :: digmax, digits
1714 integer,
intent(in) :: digmax, digits
1719 integer(kind=private_plint),
value,
intent(in) :: digmax, digits
1735 character(len=*),
intent(in) :: fmt
1740 character(len=1),
dimension(*),
intent(in) :: fmt
1757 logical,
intent(in) :: mode
1758 logical,
intent(out) :: status
1760 integer(kind=private_plbool) :: status_out
1766 integer(kind=private_plbool),
value,
intent(in) :: mode
1767 integer(kind=private_plbool),
intent(out) :: status
1772 status = status_out /= 0_private_plbool
subroutine character_array_to_c(cstring_array, cstring_address, character_array)
integer function max_cstring_length(cstring_address_array)
subroutine copystring2f(fstring, cstring)
integer function c_to_character_array(character_array, cstring_address_array)
integer, parameter private_plunicode
integer, parameter private_double
integer, parameter private_plbool
integer, parameter private_plint
integer, parameter private_single
subroutine, private plmkstrm_impl(strm)
integer(kind=private_plint), parameter, private maxlen
subroutine, private plsfam_impl(fam, num, bmax)
subroutine, private plgxax_impl(digmax, digits)
subroutine, private plclear_impl()
subroutine, private plgfam_impl(fam, num, bmax)
integer function, private plget_arguments_dynamic(argv)
subroutine, private plspause_impl(pause)
subroutine, private plsdev_impl(devname)
subroutine, private plfont_impl(font)
subroutine, private plgfont_impl(family, style, weight)
subroutine, private plprec_impl(setp, prec)
subroutine, private plsvect_none(fill)
subroutine, private plspal0_impl(filename)
subroutine, private plssub_impl(nx, ny)
subroutine, private pltext_impl()
subroutine, private plgver_impl(ver)
subroutine, private plstar_impl(nx, ny)
subroutine, private plscolor_impl(color)
subroutine, private plszax_impl(digmax, digits)
subroutine, private plgstrm_impl(strm)
subroutine, private plgra_impl()
subroutine, private plgcolbg_impl(r, g, b)
subroutine, private plsmema_impl(maxx, maxy, plotmem)
subroutine, private pladv_impl(sub)
subroutine, private plinit_impl()
subroutine, private plscmap0n_impl(n)
subroutine, private plglevel_impl(level)
subroutine, private plend_impl()
subroutine, private plpsty_impl(patt)
subroutine, private pllab_impl(xlab, ylab, title)
subroutine, private plseed_impl(s)
subroutine, private plflush_impl()
subroutine, private plend1_impl()
subroutine, private plsfci_impl(fci)
subroutine, private plsyax_impl(digmax, digits)
subroutine, private plscol0_impl(icol, r, g, b)
subroutine, private plgyax_impl(digmax, digits)
subroutine, private plscolbg_impl(r, g, b)
subroutine, private plstart_impl(devname, nx, ny)
subroutine, private plstripd_impl(id)
subroutine, private plgfnam_impl(fnam)
subroutine, private plgdev_impl(dev)
subroutine, private plpat_impl(inc, del)
subroutine, private plxormod_impl(mode, status)
subroutine, private plsstrm_impl(strm)
subroutine, private pltimefmt_impl(fmt)
subroutine, private plscmap0_impl(r, g, b)
subroutine, private plcpstrm_impl(iplsr, flags)
subroutine, private plreplot_impl()
subroutine, private plsfnam_impl(fnam)
subroutine, private plsesc_impl(esc)
subroutine, private plsxax_impl(digmax, digits)
subroutine, private plsdrawmode_impl(mode)
integer, parameter pl_test_flt
integer function, private plgdrawmode_impl()
subroutine, private plscmap1_impl(r, g, b)
subroutine, private plgzax_impl(digmax, digits)
subroutine, private plgcol0_impl(icol, r, g, b)
subroutine, private plvsta_impl()
integer function, private plparseopts_dynamic(argv, mode)
subroutine, private pllsty_impl(lin)
subroutine, private plsori_impl(rot)
subroutine, private plspal1_impl(filename, interpolate)
character(len=1), parameter pl_end_of_string
integer function, private plget_arguments_static_length(argv, disambiguate)
subroutine, private plscmap1n_impl(n)
subroutine, private pl_setcontlabelformat_impl(lexp, sigdig)
subroutine, private plbop_impl()
subroutine, private plcol0_impl(icol)
subroutine, private plfamadv_impl()
subroutine, private plgfci_impl(fci)
subroutine, private plsmem_impl(maxx, maxy, plotmem)
integer function, private plget_arguments_static(nargv, argv)
subroutine, private plfontld_impl(charset)
integer function, private plsetopt_impl(opt, optarg)
subroutine, private pleop_impl()
subroutine, private plsfont_impl(family, style, weight)
integer function, private plparseopts_static(nargv, argv, mode)
integer function, private plparseopts_static_length(argv, mode, disambiguate)
integer function, private plparseopts_brief(mode)
subroutine, private plscompression_impl(compression)
subroutine, private plgcompression_impl(compression)
subroutine, private plstyl_impl(mark, space)