PLplot  5.13.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
plplot.f90
Go to the documentation of this file.
1 !***********************************************************************
2 ! plplot_binding.f90
3 !
4 ! Copyright (C) 2005-2016 Arjen Markus
5 ! Copyright (C) 2006-2016 Alan W. Irwin
6 !
7 ! This file is part of PLplot.
8 !
9 ! PLplot is free software; you can redistribute it and/or modify
10 ! it under the terms of the GNU Library General Public License as published
11 ! by the Free Software Foundation; either version 2 of the License, or
12 ! (at your option) any later version.
13 !
14 ! PLplot is distributed in the hope that it will be useful,
15 ! but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ! GNU Library General Public License for more details.
18 !
19 ! You should have received a copy of the GNU Library General Public License
20 ! along with PLplot; if not, write to the Free Software
21 ! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22 !
23 !
24 !***********************************************************************
25 
26 module plplot
27  use plplot_single
28  use plplot_double
29  use plplot_types, only: private_plflt, private_plint, private_plbool, private_plunicode, private_single, private_double
30  use plplot_graphics
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
34  implicit none
35  ! We will continue to define plflt for those of our users who are
36  ! content to simply follow in their own Fortran code the
37  ! floating-point precision of our C libraries, but our users no
38  ! longer need to use of this parameter. Instead, kind(1.0) or
39  ! kind(1.0d0) floating-point precision should work for users so
40  ! long as the precision of the floating-point arguments of a given
41  ! call to a PLplot routine are identical.
42  integer, parameter :: plflt = private_plflt
43  ! The following parameter is provided as a convenience to PLplot
44  ! developers to allow them to test any combination of
45  ! floating-point precision of our C libraries and the
46  ! floating-point precision (pl_test_flt) of our Fortran examples.
47  integer, parameter :: pl_test_flt = private_plflt
48  integer(kind=private_plint), parameter :: maxlen = 320
49  character(len=1), parameter :: pl_end_of_string = achar(0)
50  include 'included_plplot_parameters.f90'
51  private :: private_plflt, private_plint, private_plbool, private_plunicode, private_single, private_double
52  private :: c_ptr, c_char, c_loc, c_funloc, c_funptr, c_null_char, c_null_ptr, c_null_funptr
53  private :: copystring2f, maxlen
54  private :: error_unit
55  private :: character_array_to_c
56  !
57  ! Interfaces that do not depend on the real kind.
58  !
60  module procedure pl_setcontlabelformat_impl
61  end interface pl_setcontlabelformat
63 
64  interface pladv
65  module procedure pladv_impl
66  end interface pladv
67  private :: pladv_impl
68 
69  interface plbop
70  module procedure plbop_impl
71  end interface plbop
72  private :: plbop_impl
73 
74  interface plclear
75  module procedure plclear_impl
76  end interface plclear
77  private :: plclear_impl
78 
79  interface plcol0
80  module procedure plcol0_impl
81  end interface plcol0
82  private :: plcol0_impl
83 
84  interface plcpstrm
85  module procedure plcpstrm_impl
86  end interface plcpstrm
87  private :: plcpstrm_impl
88 
89  interface plend1
90  module procedure plend1_impl
91  end interface plend1
92  private :: plend1_impl
93 
94  interface plend
95  module procedure plend_impl
96  end interface plend
97  private :: plend_impl
98 
99  interface pleop
100  module procedure pleop_impl
101  end interface pleop
102  private :: pleop_impl
103 
104  interface plfamadv
105  module procedure plfamadv_impl
106  end interface plfamadv
107  private :: plfamadv_impl
108 
109  interface plflush
110  module procedure plflush_impl
111  end interface plflush
112  private :: plflush_impl
113 
114  interface plfont
115  module procedure plfont_impl
116  end interface plfont
117  private :: plfont_impl
118 
119  interface plfontld
120  module procedure plfontld_impl
121  end interface plfontld
122  private :: plfontld_impl
123 
124  interface plgcol0
125  module procedure plgcol0_impl
126  end interface plgcol0
127  private :: plgcol0_impl
128 
129  interface plgcolbg
130  module procedure plgcolbg_impl
131  end interface plgcolbg
132  private :: plgcolbg_impl
133 
134  interface plgcompression
135  module procedure plgcompression_impl
136  end interface plgcompression
137  private :: plgcompression_impl
138 
139  interface plgdev
140  module procedure plgdev_impl
141  end interface plgdev
142  private :: plgdev_impl
143 
144  interface plgdrawmode
145  module procedure plgdrawmode_impl
146  end interface plgdrawmode
147  private :: plgdrawmode_impl
148 
149  interface plgfam
150  module procedure plgfam_impl
151  end interface plgfam
152  private :: plgfam_impl
153 
154  interface plgfci
155  module procedure plgfci_impl
156  end interface plgfci
157  private :: plgfci_impl
158 
159  interface plgfnam
160  module procedure plgfnam_impl
161  end interface plgfnam
162  private :: plgfnam_impl
163 
164  interface plgfont
165  module procedure plgfont_impl
166  end interface plgfont
167  private :: plgfont_impl
168 
169  interface plglevel
170  module procedure plglevel_impl
171  end interface plglevel
172  private :: plglevel_impl
173 
174  interface plgra
175  module procedure plgra_impl
176  end interface plgra
177  private :: plgra_impl
178 
179  interface plgstrm
180  module procedure plgstrm_impl
181  end interface plgstrm
182  private :: plgstrm_impl
183 
184  interface plgver
185  module procedure plgver_impl
186  end interface plgver
187  private :: plgver_impl
188 
189  interface plgxax
190  module procedure plgxax_impl
191  end interface plgxax
192  private :: plgxax_impl
193 
194  interface plgyax
195  module procedure plgyax_impl
196  end interface plgyax
197  private :: plgyax_impl
198 
199  interface plgzax
200  module procedure plgzax_impl
201  end interface plgzax
202  private :: plgzax_impl
203 
204  interface plinit
205  module procedure plinit_impl
206  end interface plinit
207  private :: plinit_impl
208 
209  interface pllab
210  module procedure pllab_impl
211  end interface pllab
212  private :: pllab_impl
213 
214  interface pllsty
215  module procedure pllsty_impl
216  end interface pllsty
217  private :: pllsty_impl
218 
219  interface plmkstrm
220  module procedure plmkstrm_impl
221  end interface plmkstrm
222  private :: plmkstrm_impl
223 
224  interface plparseopts
225  module procedure plparseopts_impl
226  end interface plparseopts
227  private :: plparseopts_impl
228 
229  interface plpat
230  module procedure plpat_impl
231  end interface plpat
232  private :: plpat_impl
233 
234  interface plprec
235  module procedure plprec_impl
236  end interface plprec
237  private :: plprec_impl
238 
239  interface plpsty
240  module procedure plpsty_impl
241  end interface plpsty
242  private :: plpsty_impl
243 
244  interface plreplot
245  module procedure plreplot_impl
246  end interface plreplot
247  private :: plreplot_impl
248 
249  interface plscmap0
250  module procedure plscmap0_impl
251  end interface plscmap0
252  private :: plscmap0_impl
253 
254  interface plscmap0n
255  module procedure plscmap0n_impl
256  end interface plscmap0n
257  private :: plscmap0n_impl
258 
259  interface plscmap1
260  module procedure plscmap1_impl
261  end interface plscmap1
262  private :: plscmap1_impl
263 
264  interface plscmap1n
265  module procedure plscmap1n_impl
266  end interface plscmap1n
267  private :: plscmap1n_impl
268 
269  interface plscol0
270  module procedure plscol0_impl
271  end interface plscol0
272  private :: plscol0_impl
273 
274  interface plscolbg
275  module procedure plscolbg_impl
276  end interface plscolbg
277  private :: plscolbg_impl
278 
279  interface plscolor
280  module procedure plscolor_impl
281  end interface plscolor
282  private :: plscolor_impl
283 
284  interface plscompression
285  module procedure plscompression_impl
286  end interface plscompression
287  private :: plscompression_impl
288 
289  interface plsdev
290  module procedure plsdev_impl
291  end interface plsdev
292  private :: plsdev_impl
293 
294  interface plsdrawmode
295  module procedure plsdrawmode_impl
296  end interface plsdrawmode
297  private :: plsdrawmode_impl
298 
299  interface plseed
300  module procedure plseed_impl
301  end interface plseed
302  private :: plseed_impl
303 
304  interface plsesc
305  module procedure plsesc_impl
306  end interface plsesc
307  private :: plsesc_impl
308 
309  interface plsetopt
310  module procedure plsetopt_impl
311  end interface plsetopt
312  private :: plsetopt_impl
313 
314  interface plsfam
315  module procedure plsfam_impl
316  end interface plsfam
317  private :: plsfam_impl
318 
319  interface plsfci
320  module procedure plsfci_impl
321  end interface plsfci
322  private :: plsfci_impl
323 
324  interface plsfnam
325  module procedure plsfnam_impl
326  end interface plsfnam
327  private :: plsfnam_impl
328 
329  interface plsfont
330  module procedure plsfont_impl
331  end interface plsfont
332  private :: plsfont_impl
333 
334  interface plsmem
335  module procedure plsmem_impl
336  end interface plsmem
337  private :: plsmem_impl
338 
339  interface plsmema
340  module procedure plsmema_impl
341  end interface plsmema
342  private :: plsmema_impl
343 
344  interface plsori
345  module procedure plsori_impl
346  end interface plsori
347  private :: plsori_impl
348 
349  interface plspal0
350  module procedure plspal0_impl
351  end interface plspal0
352  private :: plspal0_impl
353 
354  interface plspal1
355  module procedure plspal1_impl
356  end interface plspal1
357  private :: plspal1_impl
358 
359  interface plspause
360  module procedure plspause_impl
361  end interface plspause
362  private :: plspause_impl
363 
364  interface plsstrm
365  module procedure plsstrm_impl
366  end interface plsstrm
367  private :: plsstrm_impl
368 
369  interface plssub
370  module procedure plssub_impl
371  end interface plssub
372  private :: plssub_impl
373 
374  interface plstar
375  module procedure plstar_impl
376  end interface plstar
377  private :: plstar_impl
378 
379  interface plstart
380  module procedure plstart_impl
381  end interface plstart
382  private :: plstart_impl
383 
384  interface plstripd
385  module procedure plstripd_impl
386  end interface plstripd
387  private :: plstripd_impl
388 
389  interface plstyl
390  module procedure plstyl_impl
391  end interface plstyl
392  private :: plstyl_impl
393 
394  ! double- and single-precision variants defined in the plplot_double and plplot_single modules.
395  interface plsvect
396  module procedure plsvect_none
397  end interface plsvect
398  private :: plsvect_none
399 
400  interface plsxax
401  module procedure plsxax_impl
402  end interface plsxax
403  private :: plsxax_impl
404 
405  interface plsyax
406  module procedure plsyax_impl
407  end interface plsyax
408  private :: plsyax_impl
409 
410  interface plszax
411  module procedure plszax_impl
412  end interface plszax
413  private :: plszax_impl
414 
415  interface pltext
416  module procedure pltext_impl
417  end interface pltext
418  private :: pltext_impl
419 
420  interface pltimefmt
421  module procedure pltimefmt_impl
422  end interface pltimefmt
423  private :: pltimefmt_impl
424 
425  interface plvsta
426  module procedure plvsta_impl
427  end interface plvsta
428  private :: plvsta_impl
429 
430  interface plxormod
431  module procedure plxormod_impl
432  end interface plxormod
433  private :: plxormod_impl
434 
435 contains
436 
437  !
438  ! Interface routines
439  !
440  subroutine pl_setcontlabelformat_impl( lexp, sigdig )
441  integer, intent(in) :: lexp, sigdig
442 
443  interface
444  subroutine interface_pl_setcontlabelformat( lexp, sigdig ) bind(c,name='c_pl_setcontlabelformat')
445  import :: private_plint
446  implicit none
447  integer(kind=private_plint), value, intent(in) :: lexp, sigdig
448  end subroutine interface_pl_setcontlabelformat
449  end interface
450 
451  call interface_pl_setcontlabelformat( int(lexp,kind=private_plint), int(sigdig,kind=private_plint) )
452  end subroutine pl_setcontlabelformat_impl
453 
454  subroutine pladv_impl( sub )
455  integer, intent(in) :: sub
456  interface
457  subroutine interface_pladv( sub ) bind( c, name = 'c_pladv' )
458  import :: private_plint
459  implicit none
460  integer(kind=private_plint), value, intent(in) :: sub
461  end subroutine interface_pladv
462  end interface
463 
464  call interface_pladv( int(sub,kind=private_plint) )
465  end subroutine pladv_impl
466 
467  subroutine plbop_impl()
468  interface
469  subroutine interface_plbop() bind(c,name='c_plbop')
470  end subroutine interface_plbop
471  end interface
472  call interface_plbop()
473  end subroutine plbop_impl
474 
475  subroutine plclear_impl()
476  interface
477  subroutine interface_plclear() bind(c,name='c_plclear')
478  end subroutine interface_plclear
479  end interface
480  call interface_plclear()
481  end subroutine plclear_impl
482 
483  subroutine plcol0_impl( icol )
484  integer, intent(in) :: icol
485  interface
486  subroutine interface_plcol0( icol ) bind(c, name = 'c_plcol0' )
487  import :: private_plint
488  implicit none
489  integer(kind=private_plint), value, intent(in) :: icol
490  end subroutine interface_plcol0
491  end interface
492 
493  call interface_plcol0( int(icol,kind=private_plint) )
494  end subroutine plcol0_impl
495 
496  subroutine plcpstrm_impl( iplsr, flags )
497  integer, intent(in) :: iplsr
498  logical, intent(in) :: flags
499  interface
500  subroutine interface_plcpstrm( iplsr, flags ) bind(c, name = 'c_plcpstrm' )
501  import :: private_plint, private_plbool
502  implicit none
503  integer(kind=private_plint), value, intent(in) :: iplsr
504  integer(kind=private_plbool), value, intent(in) :: flags
505  end subroutine interface_plcpstrm
506  end interface
507 
508  call interface_plcpstrm( int(iplsr,kind=private_plint), int(merge(1,0,flags),kind=private_plbool) )
509  end subroutine plcpstrm_impl
510 
511  subroutine plend1_impl()
512  interface
513  subroutine interface_plend1() bind( c, name = 'c_plend1' )
514  end subroutine interface_plend1
515  end interface
516  call interface_plend1()
517  end subroutine plend1_impl
518 
519  subroutine plend_impl()
520  interface
521  subroutine interface_plend() bind( c, name = 'c_plend' )
522  end subroutine interface_plend
523  end interface
524  call interface_plend()
525  end subroutine plend_impl
526 
527  subroutine pleop_impl()
528  interface
529  subroutine interface_pleop() bind( c, name = 'c_pleop' )
530  end subroutine interface_pleop
531  end interface
532  call interface_pleop()
533  end subroutine pleop_impl
534 
535  subroutine plfamadv_impl()
536  interface
537  subroutine interface_plfamadv() bind( c, name = 'c_plfamadv' )
538  end subroutine interface_plfamadv
539  end interface
540  call interface_plfamadv()
541  end subroutine plfamadv_impl
542 
543  subroutine plflush_impl()
544  interface
545  subroutine interface_plflush() bind( c, name = 'c_plflush' )
546  end subroutine interface_plflush
547  end interface
548  call interface_plflush()
549  end subroutine plflush_impl
550 
551  subroutine plfont_impl( font )
552  integer, intent(in) :: font
553  interface
554  subroutine interface_plfont( font ) bind( c, name = 'c_plfont' )
555  import :: private_plint
556  implicit none
557  integer(kind=private_plint), value, intent(in) :: font
558  end subroutine interface_plfont
559  end interface
560 
561  call interface_plfont( int(font,kind=private_plint) )
562  end subroutine plfont_impl
563 
564  subroutine plfontld_impl( charset )
565  integer, intent(in) :: charset
566  interface
567  subroutine interface_plfontld( charset ) bind( c, name = 'c_plfontld' )
568  import :: private_plint
569  implicit none
570  integer(kind=private_plint), value, intent(in) :: charset
571  end subroutine interface_plfontld
572  end interface
573 
574  call interface_plfontld( int(charset,kind=private_plint) )
575  end subroutine plfontld_impl
576 
577  subroutine plgcol0_impl( icol, r, g, b )
578  integer, intent(in) :: icol
579  integer, intent(out) :: r, g, b
580 
581  integer(kind=private_plint) :: r_out, g_out, b_out
582 
583  interface
584  subroutine interface_plgcol0( icol, r, g, b ) bind( c, name = 'c_plgcol0' )
585  import :: private_plint
586  implicit none
587  integer(kind=private_plint), value, intent(in) :: icol
588  integer(kind=private_plint), intent(out) :: r, g, b
589  end subroutine interface_plgcol0
590  end interface
591 
592  call interface_plgcol0( int(icol,kind=private_plint), r_out, g_out, b_out )
593  r = int(r_out)
594  g = int(g_out)
595  b = int(b_out)
596  end subroutine plgcol0_impl
597 
598  subroutine plgcolbg_impl( r, g, b )
599  integer, intent(out) :: r, g, b
600 
601  integer(kind=private_plint) :: r_out, g_out, b_out
602 
603  interface
604  subroutine interface_plgcolbg( r, g, b ) bind( c, name = 'c_plgcolbg' )
605  import :: private_plint
606  implicit none
607  integer(kind=private_plint), intent(out) :: r, g, b
608  end subroutine interface_plgcolbg
609  end interface
610 
611  call interface_plgcolbg( r_out, g_out, b_out )
612  r = int(r_out)
613  g = int(g_out)
614  b = int(b_out)
615  end subroutine plgcolbg_impl
616 
617  subroutine plgcompression_impl( compression )
618  integer, intent(out) :: compression
619 
620  integer(kind=private_plint) :: compression_out
621 
622  interface
623  subroutine interface_plgcompression( compression ) bind( c, name = 'c_plgcompression' )
624  import :: private_plint
625  implicit none
626  integer(kind=private_plint), intent(out) :: compression
627  end subroutine interface_plgcompression
628  end interface
629 
630  call interface_plgcompression( compression_out )
631  compression = int(compression_out)
632  end subroutine plgcompression_impl
633 
634  subroutine plgdev_impl(dev)
635  character*(*), intent(out) :: dev
636 
637  character(len=1), dimension(100) :: dev_out
638 
639  interface
640  subroutine interface_plgdev( dev ) bind(c,name='c_plgdev')
641  implicit none
642  character(len=1), dimension(*), intent(out) :: dev
643  end subroutine interface_plgdev
644  end interface
645 
646  call interface_plgdev( dev_out )
647  call copystring2f( dev, dev_out )
648  end subroutine plgdev_impl
649 
650  function plgdrawmode_impl()
651 
652  integer :: plgdrawmode_impl !function type
653 
654  interface
655  function interface_plgdrawmode() bind(c,name='c_plgdrawmode')
656  import :: private_plint
657  implicit none
658  integer(kind=private_plint) :: interface_plgdrawmode !function type
659  end function interface_plgdrawmode
660  end interface
661 
662  plgdrawmode_impl = int(interface_plgdrawmode())
663  end function plgdrawmode_impl
664 
665  subroutine plgfam_impl( fam, num, bmax )
666  integer, intent(out) :: fam, num, bmax
667 
668  integer(kind=private_plint) :: fam_out, num_out, bmax_out
669 
670  interface
671  subroutine interface_plgfam( fam, num, bmax ) bind( c, name = 'c_plgfam' )
672  import :: private_plint
673  implicit none
674  integer(kind=private_plint), intent(out) :: fam, num, bmax
675  end subroutine interface_plgfam
676  end interface
677 
678  call interface_plgfam( fam_out, num_out, bmax_out )
679  fam = int(fam_out)
680  num = int(num_out)
681  bmax = int(bmax_out)
682  end subroutine plgfam_impl
683 
684  subroutine plgfci_impl( fci )
685  integer, intent(out) :: fci
686 
687  integer(kind=private_plunicode) :: fci_out
688 
689  interface
690  subroutine interface_plgfci( fci ) bind( c, name = 'c_plgfci' )
691  import :: private_plunicode
692  implicit none
693  integer(kind=private_plunicode), intent(out) :: fci
694  end subroutine interface_plgfci
695  end interface
696 
697  call interface_plgfci( fci_out )
698  fci = int(fci_out)
699  end subroutine plgfci_impl
700 
701  subroutine plgfnam_impl( fnam )
702  character*(*), intent(out) :: fnam
703 
704  character(len=1), dimension(100) :: fnam_out
705 
706  interface
707  subroutine interface_plgfnam( fnam ) bind(c,name='c_plgfnam')
708  implicit none
709  character(len=1), dimension(*), intent(out) :: fnam
710  end subroutine interface_plgfnam
711  end interface
712 
713  call interface_plgfnam( fnam_out )
714  call copystring2f( fnam, fnam_out )
715  end subroutine plgfnam_impl
716 
717  subroutine plgfont_impl( family, style, weight )
718  integer, intent(out) :: family, style, weight
719 
720  integer(kind=private_plint) :: family_out, style_out, weight_out
721 
722  interface
723  subroutine interface_plgfont( family, style, weight ) bind( c, name = 'c_plgfont' )
724  import :: private_plint
725  implicit none
726  integer(kind=private_plint), intent(out) :: family, style, weight
727  end subroutine interface_plgfont
728  end interface
729 
730  call interface_plgfont( family_out, style_out, weight_out )
731  family = int(family_out)
732  style = int(style_out)
733  weight = int(weight_out)
734  end subroutine plgfont_impl
735 
736  subroutine plglevel_impl( level )
737  integer, intent(out) :: level
738 
739  integer(kind=private_plint) :: level_out
740 
741  interface
742  subroutine interface_plglevel( level ) bind( c, name = 'c_plglevel' )
743  import :: private_plint
744  implicit none
745  integer(kind=private_plint), intent(out) :: level
746  end subroutine interface_plglevel
747  end interface
748 
749  call interface_plglevel( level_out )
750  level = int(level_out)
751  end subroutine plglevel_impl
752 
753  subroutine plgra_impl()
754  interface
755  subroutine interface_plgra() bind( c, name = 'c_plgra' )
756  end subroutine interface_plgra
757  end interface
758  call interface_plgra()
759  end subroutine plgra_impl
760 
761  subroutine plgstrm_impl( strm )
762  integer, intent(out) :: strm
763 
764  integer(kind=private_plint) :: strm_out
765 
766  interface
767  subroutine interface_plgstrm( strm ) bind( c, name = 'c_plgstrm' )
768  import :: private_plint
769  implicit none
770  integer(kind=private_plint), intent(out) :: strm
771  end subroutine interface_plgstrm
772  end interface
773 
774  call interface_plgstrm( strm_out )
775  strm = int(strm_out)
776  end subroutine plgstrm_impl
777 
778  subroutine plgver_impl(ver)
779  character*(*), intent(out) :: ver
780 
781  character(len=1), dimension(100) :: ver_out
782 
783  interface
784  subroutine interface_plgver( ver ) bind(c,name='c_plgver')
785  implicit none
786  character(len=1), dimension(*), intent(out) :: ver
787  end subroutine interface_plgver
788  end interface
789 
790  call interface_plgver( ver_out )
791  call copystring2f( ver, ver_out )
792  end subroutine plgver_impl
793 
794  subroutine plgxax_impl( digmax, digits )
795  integer, intent(out) :: digmax, digits
796 
797  integer(kind=private_plint) :: digmax_out, digits_out
798 
799  interface
800  subroutine interface_plgxax( digmax, digits ) bind( c, name = 'c_plgxax' )
801  import :: private_plint
802  implicit none
803  integer(kind=private_plint), intent(out) :: digmax, digits
804  end subroutine interface_plgxax
805  end interface
806 
807  call interface_plgxax( digmax_out, digits_out )
808  digmax = int(digmax_out)
809  digits = int(digits_out)
810  end subroutine plgxax_impl
811 
812  subroutine plgyax_impl( digmax, digits )
813  integer, intent(out) :: digmax, digits
814 
815  integer(kind=private_plint) :: digmax_out, digits_out
816 
817  interface
818  subroutine interface_plgyax( digmax, digits ) bind( c, name = 'c_plgyax' )
819  import :: private_plint
820  implicit none
821  integer(kind=private_plint), intent(out) :: digmax, digits
822  end subroutine interface_plgyax
823  end interface
824 
825  call interface_plgyax( digmax_out, digits_out )
826  digmax = int(digmax_out)
827  digits = int(digits_out)
828  end subroutine plgyax_impl
829 
830  subroutine plgzax_impl( digmax, digits )
831  integer, intent(out) :: digmax, digits
832 
833  integer(kind=private_plint) :: digmax_out, digits_out
834 
835  interface
836  subroutine interface_plgzax( digmax, digits ) bind( c, name = 'c_plgzax' )
837  import :: private_plint
838  implicit none
839  integer(kind=private_plint), intent(out) :: digmax, digits
840  end subroutine interface_plgzax
841  end interface
842 
843  call interface_plgzax( digmax_out, digits_out )
844  digmax = int(digmax_out)
845  digits = int(digits_out)
846  end subroutine plgzax_impl
847 
848  subroutine plinit_impl()
849  interface
850  subroutine interface_plinit() bind( c, name = 'c_plinit' )
851  end subroutine interface_plinit
852  end interface
853  call interface_plinit()
854  end subroutine plinit_impl
855 
856  subroutine pllab_impl( xlab, ylab, title )
857  character(len=*), intent(in) :: xlab, ylab, title
858 
859  interface
860  subroutine interface_pllab( xlab, ylab, title ) bind(c,name='c_pllab')
861  implicit none
862  character(len=1), dimension(*), intent(in) :: xlab, ylab, title
863  end subroutine interface_pllab
864  end interface
865 
866  call interface_pllab( trim(xlab)//c_null_char, trim(ylab)//c_null_char, trim(title)//c_null_char )
867 
868  end subroutine pllab_impl
869 
870  subroutine pllsty_impl( lin )
871  integer, intent(in) :: lin
872  interface
873  subroutine interface_pllsty( lin ) bind( c, name = 'c_pllsty' )
874  import :: private_plint
875  implicit none
876  integer(kind=private_plint), value, intent(in) :: lin
877  end subroutine interface_pllsty
878  end interface
879 
880  call interface_pllsty( int(lin,kind=private_plint) )
881  end subroutine pllsty_impl
882 
883  subroutine plmkstrm_impl( strm )
884  integer, intent(in) :: strm
885  interface
886  subroutine interface_plmkstrm( strm ) bind( c, name = 'c_plmkstrm' )
887  import :: private_plint
888  implicit none
889  integer(kind=private_plint), value, intent(in) :: strm
890  end subroutine interface_plmkstrm
891  end interface
892 
893  call interface_plmkstrm( int(strm,kind=private_plint) )
894  end subroutine plmkstrm_impl
895 
896  function plparseopts_impl(mode)
897  integer :: plparseopts_impl !function type
898  integer, intent(in) :: mode
899 
900  integer :: iargs_local, numargs_local
901  integer(kind=private_plint) :: numargsp1_inout
902 
903  integer, parameter :: maxargs_local = 100
904  character (len=maxlen), dimension(0:maxargs_local) :: arg_local
905  character(len=1), dimension(:,:), allocatable :: cstring_arg_local
906  type(c_ptr), dimension(:), allocatable :: cstring_address_arg_inout
907 
908  interface
909  function interface_plparseopts( argc, argv, mode ) bind(c,name='c_plparseopts')
910  import :: c_ptr
911  import :: private_plint
912  implicit none
913  integer(kind=private_plint) :: interface_plparseopts !function type
914  integer(kind=private_plint), value, intent(in) :: mode
915  ! The C routine changes both argc and argv
916  integer(kind=private_plint), intent(inout) :: argc
917  type(c_ptr), dimension(*), intent(inout) :: argv
918  end function interface_plparseopts
919  end interface
920 
921  numargs_local = command_argument_count()
922  if (numargs_local < 0) then
923  ! This actually happened historically on a badly linked Cygwin platform.
924  write(error_unit,'(a)') 'Plplot Fortran Severe Warning: plparseopts: negative number of arguments'
925  plparseopts_impl = 1
926  return
927  endif
928  if(numargs_local > maxargs_local) then
929  write(error_unit,'(a)') 'Plplot Fortran Severe Warning: plparseopts: too many arguments'
930  plparseopts_impl = 1
931  return
932  endif
933  do iargs_local = 0, numargs_local
934  call get_command_argument(iargs_local, arg_local(iargs_local))
935  enddo
936 
937  call character_array_to_c( cstring_arg_local, cstring_address_arg_inout, arg_local(0:numargs_local) )
938 
939  ! The inout suffix is to remind us that the c_plparseopt routine changes the
940  ! value of numargsp1_inout and the values of the vector elements of cstring_address_arg_inout.
941  ! (and maybe even the elements of cstring_arg_local). However, these changes in
942  ! contents of vector and possibly array should not affect the deallocation of
943  ! this vector and the array, and I have checked with valgrind that there are
944  ! no memory management issues with this approach.
945  numargsp1_inout = int(numargs_local+1, kind=private_plint)
946  plparseopts_impl = int(interface_plparseopts( numargsp1_inout, &
947  cstring_address_arg_inout, int(mode, kind=private_plint)))
948  end function plparseopts_impl
949 
950  subroutine plpat_impl( inc, del )
951  integer, dimension(:), intent(in) :: inc, del
952 
953  integer(kind=private_plint) :: nlin_local
954 
955  interface
956  subroutine interface_plpat( nlin, inc, del ) bind( c, name = 'c_plpat' )
957  import :: private_plint
958  implicit none
959  integer(kind=private_plint), value, intent(in) :: nlin
960  integer(kind=private_plint), dimension(*), intent(in) :: inc, del
961  end subroutine interface_plpat
962  end interface
963 
964  nlin_local = size(inc, kind=private_plint)
965  if(nlin_local /= size(del, kind=private_plint) ) then
966  write(error_unit, "(a)") "Plplot Fortran Warning: plpat: sizes of inc and del are not consistent"
967  endif
968 
969  call interface_plpat( nlin_local, int(inc,kind=private_plint), int(del,kind=private_plint) )
970 
971  end subroutine plpat_impl
972 
973  subroutine plprec_impl( setp, prec )
974  integer, intent(in) :: setp, prec
975  interface
976  subroutine interface_plprec( setp, prec ) bind( c, name = 'c_plprec' )
977  import :: private_plint
978  implicit none
979  integer(kind=private_plint), value, intent(in) :: setp, prec
980  end subroutine interface_plprec
981  end interface
982 
983  call interface_plprec( int(setp,kind=private_plint), int(prec,kind=private_plint) )
984  end subroutine plprec_impl
985 
986  subroutine plpsty_impl( patt )
987  integer, intent(in) :: patt
988  interface
989  subroutine interface_plpsty( patt ) bind( c, name = 'c_plpsty' )
990  import :: private_plint
991  implicit none
992  integer(kind=private_plint), value, intent(in) :: patt
993  end subroutine interface_plpsty
994  end interface
995 
996  call interface_plpsty( int(patt,kind=private_plint) )
997  end subroutine plpsty_impl
998 
999  subroutine plreplot_impl()
1000  interface
1001  subroutine interface_plreplot() bind(c,name='c_plreplot')
1002  end subroutine interface_plreplot
1003  end interface
1004  call interface_plreplot()
1005  end subroutine plreplot_impl
1006 
1007  subroutine plscmap0_impl( r, g, b )
1008  integer, dimension(:), intent(in) :: r, g, b
1009 
1010  integer(kind=private_plint) :: n_local
1011 
1012  interface
1013  subroutine interface_plscmap0( r, g, b, n ) bind(c,name='c_plscmap0')
1014  import :: private_plint
1015  implicit none
1016  integer(kind=private_plint), dimension(*), intent(in) :: r, g, b
1017  integer(kind=private_plint), value, intent(in) :: n
1018  end subroutine interface_plscmap0
1019  end interface
1020 
1021  n_local = size(r,kind=private_plint)
1022  if( n_local /= size(g, kind=private_plint) .or. n_local /= size(b, kind=private_plint) ) then
1023  write(error_unit, "(a)") "Plplot Fortran Warning: plscmap0: inconsistent sizes for r, g, and/or b"
1024  end if
1025 
1026  call interface_plscmap0( int(r,kind=private_plint), int(g,kind=private_plint), int(b,kind=private_plint), &
1027  n_local )
1028  end subroutine plscmap0_impl
1029 
1030  subroutine plscmap0n_impl( n )
1031  integer, intent(in) :: n
1032  interface
1033  subroutine interface_plscmap0n( n ) bind( c, name = 'c_plscmap0n' )
1034  import :: private_plint
1035  implicit none
1036  integer(kind=private_plint), value, intent(in) :: n
1037  end subroutine interface_plscmap0n
1038  end interface
1039 
1040  call interface_plscmap0n( int(n,kind=private_plint) )
1041  end subroutine plscmap0n_impl
1042 
1043  subroutine plscmap1_impl( r, g, b )
1044  integer, dimension(:), intent(in) :: r, g, b
1045 
1046  integer(kind=private_plint) :: n_local
1047 
1048  interface
1049  subroutine interface_plscmap1( r, g, b, n ) bind(c,name='c_plscmap1')
1050  import :: private_plint
1051  implicit none
1052  integer(kind=private_plint), dimension(*), intent(in) :: r, g, b
1053  integer(kind=private_plint), value, intent(in) :: n
1054  end subroutine interface_plscmap1
1055  end interface
1056 
1057  n_local = size(r,kind=private_plint)
1058  if( n_local /= size(g, kind=private_plint) .or. n_local /= size(b, kind=private_plint) ) then
1059  write(error_unit, "(a)") "Plplot Fortran Warning: plscmap1: inconsistent sizes for r, g, and/or b"
1060  end if
1061 
1062  call interface_plscmap1( int(r,kind=private_plint), int(g,kind=private_plint), int(b,kind=private_plint), &
1063  n_local )
1064  end subroutine plscmap1_impl
1065 
1066  subroutine plscmap1n_impl( n )
1067  integer, intent(in) :: n
1068  interface
1069  subroutine interface_plscmap1n( n ) bind( c, name = 'c_plscmap1n' )
1070  import :: private_plint
1071  implicit none
1072  integer(kind=private_plint), value, intent(in) :: n
1073  end subroutine interface_plscmap1n
1074  end interface
1075 
1076  call interface_plscmap1n( int(n,kind=private_plint) )
1077  end subroutine plscmap1n_impl
1078 
1079  subroutine plscol0_impl( icol, r, g, b )
1080  integer, intent(in) :: icol, r, g, b
1081  interface
1082  subroutine interface_plscol0( icol, r, g, b ) bind( c, name = 'c_plscol0' )
1083  import :: private_plint
1084  implicit none
1085  integer(kind=private_plint), value, intent(in) :: icol, r, g, b
1086  end subroutine interface_plscol0
1087  end interface
1088 
1089  call interface_plscol0( int(icol,kind=private_plint), &
1090  int(r,kind=private_plint), int(g,kind=private_plint), int(b,kind=private_plint) )
1091  end subroutine plscol0_impl
1092 
1093  subroutine plscolbg_impl( r, g, b )
1094  integer, intent(in) :: r, g, b
1095  interface
1096  subroutine interface_plscolbg( r, g, b ) bind( c, name = 'c_plscolbg' )
1097  import :: private_plint
1098  implicit none
1099  integer(kind=private_plint), value, intent(in) :: r, g, b
1100  end subroutine interface_plscolbg
1101  end interface
1102 
1103  call interface_plscolbg( int(r,kind=private_plint), int(g,kind=private_plint), int(b,kind=private_plint) )
1104  end subroutine plscolbg_impl
1105 
1106 
1107  subroutine plscolor_impl( color )
1108  integer, intent(in) :: color
1109  interface
1110  subroutine interface_plscolor( color ) bind( c, name = 'c_plscolor' )
1111  import :: private_plint
1112  implicit none
1113  integer(kind=private_plint), value, intent(in) :: color
1114  end subroutine interface_plscolor
1115  end interface
1116 
1117  call interface_plscolor( int(color,kind=private_plint) )
1118  end subroutine plscolor_impl
1119 
1120  subroutine plscompression_impl( compression )
1121  integer, intent(in) :: compression
1122  interface
1123  subroutine interface_plscompression( compression ) bind( c, name = 'c_plscompression' )
1124  import :: private_plint
1125  implicit none
1126  integer(kind=private_plint), value, intent(in) :: compression
1127  end subroutine interface_plscompression
1128  end interface
1129 
1130  call interface_plscompression( int(compression,kind=private_plint) )
1131  end subroutine plscompression_impl
1132 
1133  subroutine plsdev_impl( devname )
1134  character(len=*), intent(in) :: devname
1135 
1136  interface
1137  subroutine interface_plsdev( devname ) bind(c,name='c_plsdev')
1138  implicit none
1139  character(len=1), dimension(*), intent(in) :: devname
1140  end subroutine interface_plsdev
1141  end interface
1142 
1143  call interface_plsdev( trim(devname)//c_null_char )
1144 
1145  end subroutine plsdev_impl
1146 
1147  subroutine plsdrawmode_impl( mode )
1148  integer, intent(in) :: mode
1149  interface
1150  subroutine interface_plsdrawmode( mode ) bind( c, name = 'c_plsdrawmode' )
1151  import :: private_plint
1152  implicit none
1153  integer(kind=private_plint), value, intent(in) :: mode
1154  end subroutine interface_plsdrawmode
1155  end interface
1156 
1157  call interface_plsdrawmode( int(mode,kind=private_plint) )
1158  end subroutine plsdrawmode_impl
1159 
1160  subroutine plseed_impl( s )
1161  integer, intent(in) :: s
1162  interface
1163  subroutine interface_plseed( s ) bind( c, name = 'c_plseed' )
1164  import :: private_plint
1165  implicit none
1166  integer(kind=private_plint), value, intent(in) :: s
1167  end subroutine interface_plseed
1168  end interface
1169 
1170  call interface_plseed( int(s,kind=private_plint) )
1171  end subroutine plseed_impl
1172 
1173  ! TODO: character-version
1174  subroutine plsesc_impl( esc )
1175  integer, intent(in) :: esc
1176  interface
1177  subroutine interface_plsesc( esc ) bind( c, name = 'c_plsesc' )
1178  import :: private_plint
1179  implicit none
1180  integer(kind=private_plint), value, intent(in) :: esc
1181  end subroutine interface_plsesc
1182  end interface
1183 
1184  call interface_plsesc( int(esc,kind=private_plint) )
1185  end subroutine plsesc_impl
1186 
1187  function plsetopt_impl( opt, optarg )
1188  integer :: plsetopt_impl !function type
1189  character(len=*), intent(in) :: opt, optarg
1190 
1191 
1192  interface
1193  function interface_plsetopt( opt, optarg ) bind(c,name='c_plsetopt')
1194  import :: private_plint
1195  implicit none
1196  integer(kind=private_plint) :: interface_plsetopt !function type
1197  character(len=1), dimension(*), intent(in) :: opt, optarg
1198  end function interface_plsetopt
1199  end interface
1200 
1201  plsetopt_impl = int(interface_plsetopt( trim(opt)//c_null_char, trim(optarg)//c_null_char ))
1202 
1203  end function plsetopt_impl
1204 
1205  subroutine plsfam_impl( fam, num, bmax )
1206  integer, intent(in) :: fam, num, bmax
1207  interface
1208  subroutine interface_plsfam( fam, num, bmax ) bind( c, name = 'c_plsfam' )
1209  import :: private_plint
1210  implicit none
1211  integer(kind=private_plint), value, intent(in) :: fam, num, bmax
1212  end subroutine interface_plsfam
1213  end interface
1214 
1215  call interface_plsfam( int(fam,kind=private_plint), int(num,kind=private_plint), int(bmax,kind=private_plint) )
1216  end subroutine plsfam_impl
1217 
1218  subroutine plsfci_impl( fci )
1219  integer, intent(in) :: fci
1220 
1221  interface
1222  subroutine interface_plsfci( fci ) bind( c, name = 'c_plsfci' )
1223  import :: private_plunicode
1224  implicit none
1225  integer(kind=private_plunicode), value, intent(in) :: fci
1226  end subroutine interface_plsfci
1227  end interface
1228 
1229  call interface_plsfci( int(fci,kind=private_plunicode) )
1230 
1231  end subroutine plsfci_impl
1232 
1233  subroutine plsfnam_impl( fnam )
1234  character(len=*), intent(in) :: fnam
1235 
1236  interface
1237  subroutine interface_plsfnam( fnam ) bind(c,name='c_plsfnam')
1238  implicit none
1239  character(len=1), dimension(*), intent(in) :: fnam
1240  end subroutine interface_plsfnam
1241  end interface
1242 
1243  call interface_plsfnam( trim(fnam)//c_null_char )
1244 
1245  end subroutine plsfnam_impl
1246 
1247  subroutine plsfont_impl( family, style, weight )
1248  integer, intent(in) :: family, style, weight
1249  interface
1250  subroutine interface_plsfont( family, style, weight ) bind( c, name = 'c_plsfont' )
1251  import :: private_plint
1252  implicit none
1253  integer(kind=private_plint), value, intent(in) :: family, style, weight
1254  end subroutine interface_plsfont
1255  end interface
1256 
1257  call interface_plsfont( int(family,kind=private_plint), int(style,kind=private_plint), int(weight,kind=private_plint) )
1258  end subroutine plsfont_impl
1259 
1260  ! Probably would be better to define this in redacted form, but it is not documented that
1261  ! way, and the python interface also does not use redacted form. So leave it for now.
1262  ! I (AWI) followed advice in <http://stackoverflow.com/questions/10755896/fortran-how-to-store-value-255-into-one-byte>
1263  ! for the type statement for plotmem
1264  subroutine plsmem_impl( maxx, maxy, plotmem )
1265  integer, intent(in) :: maxx, maxy
1266  character(kind=c_char), dimension(:, :, :), target, intent(in) :: plotmem
1267  interface
1268  subroutine interface_plsmem( maxx, maxy, plotmem ) bind( c, name = 'c_plsmem' )
1269  import :: c_ptr
1270  import :: private_plint
1271  implicit none
1272  integer(kind=private_plint), value, intent(in) :: maxx, maxy
1273  type(c_ptr), value, intent(in) :: plotmem
1274  end subroutine interface_plsmem
1275  end interface
1276 
1277  ! We need a first dimension of 3 to have space for RGB
1278  if( 3 /= size(plotmem,1) ) then
1279  write(error_unit, "(a)") "Plplot Fortran Warning: plsmem: first dimension of plotmem is not 3"
1280  endif
1281 
1282  ! Since not defined in redacted form, we at least check that
1283  ! maxx, and maxy are consistent with the second and third dimensions of plotmem.
1284  if( maxx /= size(plotmem,2) .or. maxy /= size(plotmem,3) ) then
1285  write(error_unit, "(a)") "Plplot Fortran Warning: plsmem: maxx and/or maxy not &
1286  &consistent with second and third plotmem dimensions"
1287  endif
1288  call interface_plsmem( int(maxx,kind=private_plint), int(maxy,kind=private_plint), c_loc(plotmem))
1289  end subroutine plsmem_impl
1290 
1291  ! Probably would be better to define this in redacted form, but it is not documented that
1292  ! way, and the python interface also does not use redacted form. So leave it for now.
1293  ! I (AWI) followed advice in <http://stackoverflow.com/questions/10755896/fortran-how-to-store-value-255-into-one-byte>
1294  ! for the type statement for plotmem
1295  subroutine plsmema_impl( maxx, maxy, plotmem )
1296  integer, intent(in) :: maxx, maxy
1297  character(kind=c_char), dimension(:, :, :), target, intent(in) :: plotmem
1298  interface
1299  subroutine interface_plsmema( maxx, maxy, plotmem ) bind( c, name = 'c_plsmema' )
1300  import :: c_ptr
1301  import :: private_plint
1302  implicit none
1303  integer(kind=private_plint), value, intent(in) :: maxx, maxy
1304  type(c_ptr), value, intent(in) :: plotmem
1305  end subroutine interface_plsmema
1306  end interface
1307 
1308  ! We need a first dimension of 4 to have space for RGBa
1309  if( 4 /= size(plotmem,1) ) then
1310  write(error_unit, "(a)") "Plplot Fortran Warning: plsmema: first dimension of plotmem is not 4"
1311  endif
1312 
1313  ! Since not defined in redacted form, we at least check that
1314  ! maxx, and maxy are consistent with the second and third dimensions of plotmem.
1315  if( maxx /= size(plotmem,2) .or. maxy /= size(plotmem,3) ) then
1316  write(error_unit, "(a)") "Plplot Fortran Warning: plsmema: maxx and/or maxy not &
1317  &consistent with second and third plotmem dimensions"
1318  endif
1319  call interface_plsmema( int(maxx,kind=private_plint), int(maxy,kind=private_plint), c_loc(plotmem))
1320  end subroutine plsmema_impl
1321 
1322  subroutine plsori_impl( rot )
1323  integer, intent(in) :: rot
1324  interface
1325  subroutine interface_plsori( rot ) bind( c, name = 'c_plsori' )
1326  import :: private_plint
1327  implicit none
1328  integer(kind=private_plint), value, intent(in) :: rot
1329  end subroutine interface_plsori
1330  end interface
1331 
1332  call interface_plsori( int(rot,kind=private_plint) )
1333  end subroutine plsori_impl
1334 
1335  subroutine plspal0_impl( filename )
1336  character(len=*), intent(in) :: filename
1337 
1338  interface
1339  subroutine interface_plspal0( filename ) bind(c,name='c_plspal0')
1340  implicit none
1341  character(len=1), dimension(*), intent(in) :: filename
1342  end subroutine interface_plspal0
1343  end interface
1344 
1345  call interface_plspal0( trim(filename)//c_null_char )
1346 
1347  end subroutine plspal0_impl
1348 
1349  subroutine plspal1_impl( filename, interpolate )
1350  character(len=*), intent(in) :: filename
1351  logical, intent(in) :: interpolate
1352 
1353  interface
1354  subroutine interface_plspal1( filename, interpolate ) bind(c,name='c_plspal1')
1355  import :: private_plbool
1356  implicit none
1357  integer(kind=private_plbool), value, intent(in) :: interpolate
1358  character(len=1), dimension(*), intent(in) :: filename
1359  end subroutine interface_plspal1
1360  end interface
1361 
1362  call interface_plspal1( trim(filename)//c_null_char, int( merge(1,0,interpolate),kind=private_plbool) )
1363 
1364  end subroutine plspal1_impl
1365 
1366  subroutine plspause_impl( pause )
1367  logical, intent(in) :: pause
1368 
1369  interface
1370  subroutine interface_plspause( pause ) bind(c,name='c_plspause')
1371  import :: private_plbool
1372  implicit none
1373  integer(kind=private_plbool), value, intent(in) :: pause
1374  end subroutine interface_plspause
1375  end interface
1376 
1377  call interface_plspause( int( merge(1,0,pause),kind=private_plbool) )
1378  end subroutine plspause_impl
1379 
1380  subroutine plsstrm_impl( strm )
1381  integer, intent(in) :: strm
1382  interface
1383  subroutine interface_plsstrm( strm ) bind( c, name = 'c_plsstrm' )
1384  import :: private_plint
1385  implicit none
1386  integer(kind=private_plint), value, intent(in) :: strm
1387  end subroutine interface_plsstrm
1388  end interface
1389 
1390  call interface_plsstrm( int(strm,kind=private_plint) )
1391  end subroutine plsstrm_impl
1392 
1393  subroutine plssub_impl( nx, ny )
1394  integer, intent(in) :: nx, ny
1395  interface
1396  subroutine interface_plssub( nx, ny ) bind( c, name = 'c_plssub' )
1397  import :: private_plint
1398  implicit none
1399  integer(kind=private_plint), value, intent(in) :: nx, ny
1400  end subroutine interface_plssub
1401  end interface
1402 
1403  call interface_plssub( int(nx,kind=private_plint), int(ny,kind=private_plint) )
1404  end subroutine plssub_impl
1405 
1406  subroutine plstar_impl( nx, ny )
1407  integer, intent(in) :: nx, ny
1408  interface
1409  subroutine interface_plstar( nx, ny ) bind( c, name = 'c_plstar' )
1410  import :: private_plint
1411  implicit none
1412  integer(kind=private_plint), value, intent(in) :: nx, ny
1413  end subroutine interface_plstar
1414  end interface
1415 
1416  call interface_plstar( int(nx,kind=private_plint), int(ny,kind=private_plint) )
1417  end subroutine plstar_impl
1418 
1419  subroutine plstart_impl( devname, nx, ny )
1420  integer, intent(in) :: nx, ny
1421  character(len=*), intent(in) :: devname
1422  interface
1423  subroutine interface_plstart( devname, nx, ny ) bind( c, name = 'c_plstart' )
1424  import :: private_plint
1425  implicit none
1426  integer(kind=private_plint), value, intent(in) :: nx, ny
1427  character(len=1), dimension(*), intent(in) :: devname
1428  end subroutine interface_plstart
1429  end interface
1430 
1431  call interface_plstart( trim(devname)//c_null_char, int(nx,kind=private_plint), int(ny,kind=private_plint) )
1432  end subroutine plstart_impl
1433 
1434  subroutine plstripd_impl( id )
1435  integer, intent(in) :: id
1436  interface
1437  subroutine interface_plstripd( id ) bind( c, name = 'c_plstripd' )
1438  import :: private_plint
1439  implicit none
1440  integer(kind=private_plint), value, intent(in) :: id
1441  end subroutine interface_plstripd
1442  end interface
1443 
1444  call interface_plstripd( int(id,kind=private_plint) )
1445  end subroutine plstripd_impl
1446 
1447  subroutine plstyl_impl( mark, space )
1448  integer, dimension(:), intent(in) :: mark, space
1449 
1450  integer(kind=private_plint) :: n_local
1451 
1452  interface
1453  subroutine interface_plstyl( n, mark, space ) bind( c, name = 'c_plstyl' )
1454  import :: private_plint
1455  implicit none
1456  integer(kind=private_plint), value, intent(in) :: n
1457  integer(kind=private_plint), dimension(*), intent(in) :: mark, space
1458  end subroutine interface_plstyl
1459  end interface
1460 
1461  n_local = size(mark,kind=private_plint)
1462  if( n_local /= size(space, kind=private_plint) ) then
1463  write(error_unit, "(a)") "Plplot Fortran Warning: plstyl: inconsistent sizes for mark and space"
1464  end if
1465 
1466  call interface_plstyl( n_local, int(mark,kind=private_plint), int(space,kind=private_plint) )
1467  end subroutine plstyl_impl
1468 
1469  ! double- and single-precision variants defined in the plplot_double and plplot_single modules.
1470  subroutine plsvect_none( fill )
1471  logical, optional, intent(in) :: fill
1472 
1473  interface
1474  subroutine interface_plsvect_null() bind(c,name='plsvect_null')
1475  end subroutine interface_plsvect_null
1476  end interface
1477 
1478  ! Note: simple construct to avoid compiler message about unused argument
1479  if ( present(fill) ) then
1480  call interface_plsvect_null
1481  else
1482  call interface_plsvect_null
1483  endif
1484  end subroutine plsvect_none
1485 
1486  subroutine plsxax_impl( digmax, digits )
1487  integer, intent(in) :: digmax, digits
1488  interface
1489  subroutine interface_plsxax( digmax, digits ) bind( c, name = 'c_plsxax' )
1490  import :: private_plint
1491  implicit none
1492  integer(kind=private_plint), value, intent(in) :: digmax, digits
1493  end subroutine interface_plsxax
1494  end interface
1495 
1496  call interface_plsxax( int(digmax,kind=private_plint), int(digits,kind=private_plint) )
1497  end subroutine plsxax_impl
1498 
1499  subroutine plsyax_impl( digmax, digits )
1500  integer, intent(in) :: digmax, digits
1501  interface
1502  subroutine interface_plsyax( digmax, digits ) bind( c, name = 'c_plsyax' )
1503  import :: private_plint
1504  implicit none
1505  integer(kind=private_plint), value, intent(in) :: digmax, digits
1506  end subroutine interface_plsyax
1507  end interface
1508 
1509  call interface_plsyax( int(digmax,kind=private_plint), int(digits,kind=private_plint) )
1510  end subroutine plsyax_impl
1511 
1512  subroutine plszax_impl( digmax, digits )
1513  integer, intent(in) :: digmax, digits
1514  interface
1515  subroutine interface_plszax( digmax, digits ) bind( c, name = 'c_plszax' )
1516  import :: private_plint
1517  implicit none
1518  integer(kind=private_plint), value, intent(in) :: digmax, digits
1519  end subroutine interface_plszax
1520  end interface
1521 
1522  call interface_plszax( int(digmax,kind=private_plint), int(digits,kind=private_plint) )
1523  end subroutine plszax_impl
1524 
1525  subroutine pltext_impl()
1526  interface
1527  subroutine interface_pltext() bind(c,name='c_pltext')
1528  end subroutine interface_pltext
1529  end interface
1530  call interface_pltext()
1531  end subroutine pltext_impl
1532 
1533  subroutine pltimefmt_impl( fmt )
1534  character(len=*), intent(in) :: fmt
1535 
1536  interface
1537  subroutine interface_pltimefmt( fmt ) bind(c,name='c_pltimefmt')
1538  implicit none
1539  character(len=1), dimension(*), intent(in) :: fmt
1540  end subroutine interface_pltimefmt
1541  end interface
1542 
1543  call interface_pltimefmt( trim(fmt)//c_null_char )
1544 
1545  end subroutine pltimefmt_impl
1546 
1547  subroutine plvsta_impl()
1548  interface
1549  subroutine interface_plvsta() bind(c,name='c_plvsta')
1550  end subroutine interface_plvsta
1551  end interface
1552  call interface_plvsta()
1553  end subroutine plvsta_impl
1554 
1555  subroutine plxormod_impl( mode, status )
1556  logical, intent(in) :: mode
1557  logical, intent(out) :: status
1558 
1559  integer(kind=private_plbool) :: status_out
1560 
1561  interface
1562  subroutine interface_plxormod( mode, status ) bind(c,name='c_plxormod')
1563  import :: private_plbool
1564  implicit none
1565  integer(kind=private_plbool), value, intent(in) :: mode
1566  integer(kind=private_plbool), intent(out) :: status
1567  end subroutine interface_plxormod
1568  end interface
1569 
1570  call interface_plxormod( int( merge(1,0,mode),kind=private_plbool), status_out )
1571  status = status_out /= 0_private_plbool
1572 
1573  end subroutine plxormod_impl
1574 
1575 end module plplot
subroutine plsyax_impl(digmax, digits)
Definition: plplot.f90:1499
void merge(octave_swig_type &rhs)
subroutine plglevel_impl(level)
Definition: plplot.f90:736
subroutine pl_setcontlabelformat_impl(lexp, sigdig)
Definition: plplot.f90:440
subroutine plscmap0n_impl(n)
Definition: plplot.f90:1030
subroutine plstar_impl(nx, ny)
Definition: plplot.f90:1406
subroutine plgra_impl()
Definition: plplot.f90:753
subroutine plsmem_impl(maxx, maxy, plotmem)
Definition: plplot.f90:1264
subroutine plsdrawmode_impl(mode)
Definition: plplot.f90:1147
subroutine plpsty_impl(patt)
Definition: plplot.f90:986
subroutine plspause_impl(pause)
Definition: plplot.f90:1366
subroutine plsfont_impl(family, style, weight)
Definition: plplot.f90:1247
subroutine plgyax_impl(digmax, digits)
Definition: plplot.f90:812
subroutine plend_impl()
Definition: plplot.f90:519
subroutine plsstrm_impl(strm)
Definition: plplot.f90:1380
subroutine plstart_impl(devname, nx, ny)
Definition: plplot.f90:1419
subroutine plsdev_impl(devname)
Definition: plplot.f90:1133
subroutine plbop_impl()
Definition: plplot.f90:467
subroutine character_array_to_c(cstring_array, cstring_address, character_array)
subroutine plgdev_impl(dev)
Definition: plplot.f90:634
subroutine plsfam_impl(fam, num, bmax)
Definition: plplot.f90:1205
integer function plgdrawmode_impl()
Definition: plplot.f90:650
integer function plsetopt_impl(opt, optarg)
Definition: plplot.f90:1187
subroutine plscmap0_impl(r, g, b)
Definition: plplot.f90:1007
subroutine plssub_impl(nx, ny)
Definition: plplot.f90:1393
subroutine plgver_impl(ver)
Definition: plplot.f90:778
subroutine plsvect_none(fill)
Definition: plplot.f90:1470
subroutine plpat_impl(inc, del)
Definition: plplot.f90:950
subroutine pllab_impl(xlab, ylab, title)
Definition: plplot.f90:856
subroutine plprec_impl(setp, prec)
Definition: plplot.f90:973
subroutine plgzax_impl(digmax, digits)
Definition: plplot.f90:830
subroutine plcpstrm_impl(iplsr, flags)
Definition: plplot.f90:496
subroutine plgcolbg_impl(r, g, b)
Definition: plplot.f90:598
subroutine plsesc_impl(esc)
Definition: plplot.f90:1174
subroutine pltext_impl()
Definition: plplot.f90:1525
subroutine plsfnam_impl(fnam)
Definition: plplot.f90:1233
subroutine plszax_impl(digmax, digits)
Definition: plplot.f90:1512
subroutine pleop_impl()
Definition: plplot.f90:527
subroutine plscolor_impl(color)
Definition: plplot.f90:1107
subroutine plstripd_impl(id)
Definition: plplot.f90:1434
subroutine plfont_impl(font)
Definition: plplot.f90:551
subroutine plinit_impl()
Definition: plplot.f90:848
subroutine plgfnam_impl(fnam)
Definition: plplot.f90:701
subroutine plreplot_impl()
Definition: plplot.f90:999
subroutine plfontld_impl(charset)
Definition: plplot.f90:564
subroutine plscmap1n_impl(n)
Definition: plplot.f90:1066
subroutine plmkstrm_impl(strm)
Definition: plplot.f90:883
subroutine plsxax_impl(digmax, digits)
Definition: plplot.f90:1486
subroutine plgcol0_impl(icol, r, g, b)
Definition: plplot.f90:577
subroutine copystring2f(fstring, cstring)
subroutine plflush_impl()
Definition: plplot.f90:543
subroutine plgxax_impl(digmax, digits)
Definition: plplot.f90:794
subroutine plstyl_impl(mark, space)
Definition: plplot.f90:1447
subroutine plcol0_impl(icol)
Definition: plplot.f90:483
subroutine plxormod_impl(mode, status)
Definition: plplot.f90:1555
subroutine pladv_impl(sub)
Definition: plplot.f90:454
subroutine plspal0_impl(filename)
Definition: plplot.f90:1335
subroutine plscol0_impl(icol, r, g, b)
Definition: plplot.f90:1079
subroutine plgcompression_impl(compression)
Definition: plplot.f90:617
subroutine plseed_impl(s)
Definition: plplot.f90:1160
subroutine plsmema_impl(maxx, maxy, plotmem)
Definition: plplot.f90:1295
subroutine plspal1_impl(filename, interpolate)
Definition: plplot.f90:1349
subroutine plscmap1_impl(r, g, b)
Definition: plplot.f90:1043
subroutine plscolbg_impl(r, g, b)
Definition: plplot.f90:1093
subroutine plvsta_impl()
Definition: plplot.f90:1547
subroutine plgstrm_impl(strm)
Definition: plplot.f90:761
subroutine plsori_impl(rot)
Definition: plplot.f90:1322
subroutine pllsty_impl(lin)
Definition: plplot.f90:870
subroutine plsfci_impl(fci)
Definition: plplot.f90:1218
subroutine plfamadv_impl()
Definition: plplot.f90:535
subroutine plscompression_impl(compression)
Definition: plplot.f90:1120
subroutine plgfam_impl(fam, num, bmax)
Definition: plplot.f90:665
subroutine plclear_impl()
Definition: plplot.f90:475
subroutine pltimefmt_impl(fmt)
Definition: plplot.f90:1533
subroutine plgfci_impl(fci)
Definition: plplot.f90:684
integer function plparseopts_impl(mode)
Definition: plplot.f90:896
subroutine plend1_impl()
Definition: plplot.f90:511
subroutine plgfont_impl(family, style, weight)
Definition: plplot.f90:717