Description: Replace gdc extensions in D binding and examples source code with equivalent standard D source code
 This patch is needed to avoid FTBFS with recent gdc versions.
Author: Alan W. Irwin <airwin@users.sourceforge.net>
Origin: upstream, https://sourceforge.net/p/plplot/plplot/ci/74799e02c5435e491b46dfc1fd053753105c3441/
Reviewed-by: Sébastien Villemot <sebastien@debian.org>
Forwarded: not-needed
Last-Update: 2019-10-08
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/bindings/d/plplot.d
+++ b/bindings/d/plplot.d
@@ -298,7 +298,7 @@ void plfill3( PLFLT[] x, PLFLT[] y, PLFL
 // Get the current device (keyword) name
 void plgdev( out string p_dev )
 {
-    char cdev[1024];
+    char[1024] cdev;
     c_plgdev( cdev.ptr );
     p_dev = to!string( cdev.ptr );
 }
@@ -306,7 +306,7 @@ void plgdev( out string p_dev )
 // Get the (current) output file name.  Must be preallocated to >80 bytes
 void plgfnam( out string fnam )
 {
-    char cfnam[1024];
+    char[1024] cfnam;
     c_plgfnam( cfnam.ptr );
     fnam = to!string( cfnam.ptr );
 }
@@ -337,7 +337,7 @@ void  plgriddata( PLFLT[] x, PLFLT[] y,
 // Get the current library version number
 void plgver( out string p_ver )
 {
-    char cver[1024];
+    char[1024] cver;
     c_plgver( cver.ptr );
     p_ver = to!string( cver.ptr );
 }
--- a/examples/d/x01d.d
+++ b/examples/d/x01d.d
@@ -224,7 +224,7 @@ class plot {
 
         if ( do_test && test_xor )
         {
-            writefln( "The -xor command line option can only be exercised if your "
+            writefln( "The -xor command line option can only be exercised if your " ~
                 "system\nhas usleep(), which does not seem to happen." );
         }
     }
@@ -294,4 +294,4 @@ class plot {
         plcol0( 4 );
         plline( x, y );
     }
-}
\ No newline at end of file
+}
--- a/examples/d/x08d.d
+++ b/examples/d/x08d.d
@@ -24,7 +24,7 @@
 import plplot;
 import std.string;
 import std.math;
-import std.c.stdlib;
+import core.stdc.stdlib;
 
 //--------------------------------------------------------------------------
 // cmap1_init1
@@ -92,8 +92,8 @@ int main( char[][] args )
     PLFLT[]     alt = [ 60.0, 40.0 ];
     PLFLT[]     az  = [ 30.0, -30.0 ];
 
-    string title[] = [ "#frPLplot Example 8 - Alt=60, Az=30",
-                       "#frPLplot Example 8 - Alt=40, Az=-30" ];
+    string[]    title = [ "#frPLplot Example 8 - Alt=60, Az=30",
+                          "#frPLplot Example 8 - Alt=40, Az=-30" ];
 
     // Parse and process command line arguments
     plparseopts( args, PL_PARSE_FULL );
--- a/examples/d/x11d.d
+++ b/examples/d/x11d.d
@@ -48,16 +48,16 @@ void cmap1_init()
 //--------------------------------------------------------------------------
 int main( char[][] args )
 {
-    const   nlevel = 10;
-    const   XPTS   = 35;        // Data points in x
-    const   YPTS   = 46;        // Data points in y
+    const    nlevel = 10;
+    const    XPTS   = 35;       // Data points in x
+    const    YPTS   = 46;       // Data points in y
 
-    int[]   opt = [ DRAW_LINEXY, DRAW_LINEXY ];
+    int[]    opt = [ DRAW_LINEXY, DRAW_LINEXY ];
 
-    PLFLT[] alt = [ 33.0, 17.0 ];
-    PLFLT[] az  = [ 24.0, 115.0 ];
+    PLFLT[]  alt = [ 33.0, 17.0 ];
+    PLFLT[]  az  = [ 24.0, 115.0 ];
 
-    string title[] = [ "#frPLplot Example 11 - Alt=33, Az=24, Opt=3",
+    string[] title = [ "#frPLplot Example 11 - Alt=33, Az=24, Opt=3",
                        "#frPLplot Example 11 - Alt=17, Az=115, Opt=3" ];
 
     PLFLT xx, yy;
--- a/examples/d/x15d.d
+++ b/examples/d/x15d.d
@@ -145,10 +145,10 @@ class plot {
 //--------------------------------------------------------------------------
     public void plot2( PLFLT[][] z )
     {
-        static PLINT nlin[10]   = [ 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 ];
-        static PLINT inc[10][2] = [ [450, 0], [-450, 0], [0, 0], [900, 0], [300, 0],
+        static PLINT[10] nlin   = [ 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 ];
+        static PLINT[2][10] inc = [ [450, 0], [-450, 0], [0, 0], [900, 0], [300, 0],
                                     [450, -450], [0, 900], [0, 450], [450, -450], [0, 900] ];
-        static PLINT del[10][2] = [ [2000, 2000], [2000, 2000], [2000, 2000],
+        static PLINT[2][10] del = [ [2000, 2000], [2000, 2000], [2000, 2000],
                                     [2000, 2000], [2000, 2000], [2000, 2000],
                                     [2000, 2000], [2000, 2000], [4000, 4000],
                                     [4000, 2000] ];
@@ -191,11 +191,11 @@ class plot {
 //--------------------------------------------------------------------------
     public void plot3()
     {
-        static PLFLT xx[2][5] = [ [-1.0, 1.0, 1.0, -1.0, -1.0],
+        static PLFLT[5][2] xx = [ [-1.0, 1.0, 1.0, -1.0, -1.0],
                                   [-1.0, 1.0, 1.0, -1.0, -1.0] ];
-        static PLFLT yy[2][5] = [ [1.0, 1.0, 0.0, 0.0, 1.0],
+        static PLFLT[5][2] yy = [ [1.0, 1.0, 0.0, 0.0, 1.0],
                                   [-1.0, -1.0, 0.0, 0.0, -1.0] ];
-        static PLFLT zz[2][5] = [ [0.0, 0.0, 1.0, 1.0, 0.0],
+        static PLFLT[5][2] zz = [ [0.0, 0.0, 1.0, 1.0, 0.0],
                                   [0.0, 0.0, 1.0, 1.0, 0.0] ];
 
         pladv( 0 );
--- a/examples/d/x16d.d
+++ b/examples/d/x16d.d
@@ -195,7 +195,7 @@ int main( char[][] args )
     string[]  axis_opts = [
         "bcvtm",
     ];
-    PLFLT[] values[NUM_AXES];
+    PLFLT[][NUM_AXES] values;
     for ( size_t i = 0; i < NUM_AXES; i++ )
     {
         values[i] = new PLFLT[ns];
@@ -207,7 +207,7 @@ int main( char[][] args )
         0,
     ];
     const int NUM_LABELS = 1;
-    PLINT label_opts[] = [
+    PLINT[]   label_opts = [
         PL_COLORBAR_LABEL_BOTTOM,
     ];
     string[] labels = [
--- a/examples/d/x17d.d
+++ b/examples/d/x17d.d
@@ -4,7 +4,7 @@
 import std.string;
 import std.math;
 import std.stdio;
-import std.c.stdlib;
+import core.stdc.stdlib;
 import plplot;
 
 
--- a/examples/d/x18d.d
+++ b/examples/d/x18d.d
@@ -6,9 +6,9 @@ import std.string;
 
 import plplot;
 
-int opt[]   = [ 1, 0, 1, 0 ];
-PLFLT alt[] = [ 20.0, 35.0, 50.0, 65.0 ];
-PLFLT az[]  = [ 30.0, 40.0, 50.0, 60.0 ];
+int[]   opt = [ 1, 0, 1, 0 ];
+PLFLT[] alt = [ 20.0, 35.0, 50.0, 65.0 ];
+PLFLT[] az  = [ 30.0, 40.0, 50.0, 60.0 ];
 
 //--------------------------------------------------------------------------
 // main
@@ -81,7 +81,7 @@ int main( char[][] args )
 
 void test_poly( int k )
 {
-    PLINT draw[][] = [ [ 1, 1, 1, 1 ],
+    PLINT[][] draw = [ [ 1, 1, 1, 1 ],
                        [ 1, 0, 1, 0 ],
                        [ 0, 1, 0, 1 ],
                        [ 1, 1, 0, 0 ] ];
--- a/examples/d/x19d.d
+++ b/examples/d/x19d.d
@@ -4,7 +4,7 @@
 
 import std.math;
 import std.string;
-import std.c.string;
+import core.stdc.string;
 
 import plplot;
 
@@ -109,15 +109,15 @@ int main( char[][] args )
     PLFLT maxy = 80;
 
     //variables for the shapelib example
-    const PLINT nbeachareas = 2;
-    const PLINT beachareas[] = [ 23, 24 ];
-    const       nwoodlandareas = 94;
-    PLINT       woodlandareas[94];
-    const PLINT nshingleareas = 22;
-    const PLINT shingleareas[] = [ 0, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 217, 2424, 2425, 2426, 2427, 2428, 2491, 2577 ];
-    const PLINT ncragareas = 2024;
-    PLINT       cragareas[2024];
-    const PLINT majorroads[] = [ 33, 48, 71, 83, 89, 90, 101, 102, 111 ];
+    const PLINT   nbeachareas    = 2;
+    const PLINT[] beachareas     = [ 23, 24 ];
+    const         nwoodlandareas = 94;
+    PLINT[94] woodlandareas;
+    const PLINT   nshingleareas = 22;
+    const PLINT[] shingleareas  = [ 0, 1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 217, 2424, 2425, 2426, 2427, 2428, 2491, 2577 ];
+    const PLINT   ncragareas    = 2024;
+    PLINT[2024]       cragareas;
+    const PLINT[] majorroads = [ 33, 48, 71, 83, 89, 90, 101, 102, 111 ];
 
     plinit();
 
@@ -173,8 +173,8 @@ int main( char[][] args )
     // Show Baltimore, MD on the map
     plcol0( 2 );
     plssym( 0.0, 2.0 );
-    PLFLT x[1] = -76.6125;
-    PLFLT y[1] = 39.2902778;
+    PLFLT[1] x = -76.6125;
+    PLFLT[1] y = 39.2902778;
     plpoin( x, y, 18 );
     plssym( 0.0, 1.0 );
     plptex( -76.6125, 43.0, 0.0, 0.0, 0.0, "Baltimore, MD" );
--- a/examples/d/x23d.d
+++ b/examples/d/x23d.d
@@ -336,14 +336,14 @@ int main( char[][] args )
             }
             else if ( page == 14 )
             {
-                text = format( "Page 15, %s, %s, %s:  #<0x%1x0>#<0x%1x1>#<0x%1x2>"
+                text = format( "Page 15, %s, %s, %s:  #<0x%1x0>#<0x%1x1>#<0x%1x2>" ~
                     "The quick brown fox jumps over the lazy dog",
                     family[family_index], style[style_index], weight[weight_index],
                     family_index, style_index, weight_index );
             }
             else if ( page == 15 )
             {
-                text = format( "Page 16, %s, %s, %s:  #<%s/>#<%s/>#<%s/>"
+                text = format( "Page 16, %s, %s, %s:  #<%s/>#<%s/>#<%s/>" ~
                     "The quick brown fox jumps over the lazy dog",
                     family[family_index], style[style_index], weight[weight_index],
                     family[family_index], style[style_index], weight[weight_index] );
--- a/examples/d/x33d.d
+++ b/examples/d/x33d.d
@@ -30,7 +30,7 @@ import plplot;
 import std.math;
 import std.string;
 
-static PLINT position_options[16] = [
+static PLINT[16] position_options = [
     PL_POSITION_LEFT | PL_POSITION_TOP | PL_POSITION_OUTSIDE,
     PL_POSITION_TOP | PL_POSITION_OUTSIDE,
     PL_POSITION_RIGHT | PL_POSITION_TOP | PL_POSITION_OUTSIDE,
@@ -50,7 +50,7 @@ static PLINT position_options[16] = [
 ];
 
 // Pick 5 arbitrary UTF-8 symbols useful for plotting points (✠✚✱✪✽✺✰✴✦).
-static string special_symbols[5] = [
+static string[5] special_symbols = [
     "✰",
     "✴",
     "✱",
@@ -61,14 +61,14 @@ static string special_symbols[5] = [
 // plcolorbar options
 
 // Colorbar type options
-const int    COLORBAR_KINDS = 4;
-static PLINT colorbar_option_kinds[COLORBAR_KINDS] = [
+const int COLORBAR_KINDS = 4;
+static    PLINT[COLORBAR_KINDS] colorbar_option_kinds = [
     PL_COLORBAR_SHADE,
     PL_COLORBAR_SHADE | PL_COLORBAR_SHADE_LABEL,
     PL_COLORBAR_IMAGE,
     PL_COLORBAR_GRADIENT
 ];
-static string colorbar_option_kind_labels[COLORBAR_KINDS] = [
+static string[COLORBAR_KINDS] colorbar_option_kind_labels = [
     "Shade colorbars",
     "Shade colorbars with custom labels",
     "Image colorbars",
@@ -76,14 +76,14 @@ static string colorbar_option_kind_label
 ];
 
 // Which side of the page are we positioned relative to?
-const int    COLORBAR_POSITIONS = 4;
-static PLINT colorbar_position_options[COLORBAR_POSITIONS] = [
+const int COLORBAR_POSITIONS = 4;
+static    PLINT[COLORBAR_POSITIONS] colorbar_position_options = [
     PL_POSITION_LEFT,
     PL_POSITION_RIGHT,
     PL_POSITION_TOP,
     PL_POSITION_BOTTOM
 ];
-static string colorbar_position_option_labels[COLORBAR_POSITIONS] = [
+static string[COLORBAR_POSITIONS] colorbar_position_option_labels = [
     "Left",
     "Right",
     "Top",
@@ -91,14 +91,14 @@ static string colorbar_position_option_l
 ];
 
 // Colorbar label positioning options
-const int    COLORBAR_LABELS = 4;
-static PLINT colorbar_label_options[COLORBAR_LABELS] = [
+const int COLORBAR_LABELS = 4;
+static    PLINT[COLORBAR_LABELS] colorbar_label_options = [
     PL_COLORBAR_LABEL_LEFT,
     PL_COLORBAR_LABEL_RIGHT,
     PL_COLORBAR_LABEL_TOP,
     PL_COLORBAR_LABEL_BOTTOM
 ];
-static string colorbar_label_option_labels[COLORBAR_LABELS] = [
+static string[COLORBAR_LABELS] colorbar_label_option_labels = [
     "Label left",
     "Label right",
     "Label top",
@@ -106,14 +106,14 @@ static string colorbar_label_option_labe
 ];
 
 // Colorbar cap options
-const int    COLORBAR_CAPS = 4;
-static PLINT colorbar_cap_options[COLORBAR_CAPS] = [
+const int COLORBAR_CAPS = 4;
+static    PLINT[COLORBAR_CAPS] colorbar_cap_options = [
     PL_COLORBAR_CAP_NONE,
     PL_COLORBAR_CAP_LOW,
     PL_COLORBAR_CAP_HIGH,
     PL_COLORBAR_CAP_LOW | PL_COLORBAR_CAP_HIGH
 ];
-static string colorbar_cap_option_labels[COLORBAR_CAPS] = [
+static string[COLORBAR_CAPS] colorbar_cap_option_labels = [
     "No caps",
     "Low cap",
     "High cap",
@@ -126,20 +126,20 @@ void
 plcolorbar_example_page( int kind_i, int label_i, int cap_i, PLINT cont_color, PLFLT cont_width, PLINT n_values, PLFLT [] values )
 {
     // Parameters for the colorbars on this page
-    PLINT     position_i, position, opt;
-    PLFLT     x, y, x_length, y_length;
-    PLFLT     ticks[1]     = [ 0.0 ];
-    PLINT     sub_ticks[1] = [ 0 ];
+    PLINT position_i, position, opt;
+    PLFLT x, y, x_length, y_length;
+    PLFLT[1]     ticks     = [ 0.0 ];
+    PLINT[1]     sub_ticks = [ 0 ];
     PLFLT     low_cap_color, high_cap_color;
     PLINT     vertical, ifn;
     PLINT     n_axes = 1;
     string[]  axis_opts;
-    PLINT     n_labels      = 1;
-    PLINT     label_opts[1] = [ 0 ];
+    PLINT     n_labels = 1;
+    PLINT[1]     label_opts = [ 0 ];
     string[]  label;
     string    title;
     PLFLT     colorbar_width, colorbar_height;
-    PLINT     n_values_array[1];
+    PLINT[1]     n_values_array;
     PLFLT[][] values_array;
 
     axis_opts.length  = 1;
@@ -279,26 +279,26 @@ const int MAX_NLEGEND = 7;
 
 int main( char[][] args )
 {
-    int    i, k;
-    PLINT  opt;
-    PLINT  nlegend, nturn;
-    PLINT  opt_array[MAX_NLEGEND];
-    PLINT  text_colors[MAX_NLEGEND];
-    PLINT  box_colors[MAX_NLEGEND];
-    PLINT  box_patterns[MAX_NLEGEND];
-    PLFLT  box_scales[MAX_NLEGEND];
-    PLFLT  box_line_widths[MAX_NLEGEND];
-    PLINT  line_colors[MAX_NLEGEND];
-    PLINT  line_styles[MAX_NLEGEND];
-    PLFLT  line_widths[MAX_NLEGEND];
-    PLINT  symbol_numbers[MAX_NLEGEND];
-    PLINT  symbol_colors[MAX_NLEGEND];
-    PLFLT  symbol_scales[MAX_NLEGEND];
-    string text[MAX_NLEGEND];
-    string symbols[MAX_NLEGEND];
-    PLFLT  legend_width, legend_height, x, y, xstart, ystart;
-    PLFLT  max_height, text_scale;
-    PLINT  position, opt_base, nrow, ncolumn;
+    int   i, k;
+    PLINT opt;
+    PLINT nlegend, nturn;
+    PLINT[MAX_NLEGEND]  opt_array;
+    PLINT[MAX_NLEGEND]  text_colors;
+    PLINT[MAX_NLEGEND]  box_colors;
+    PLINT[MAX_NLEGEND]  box_patterns;
+    PLFLT[MAX_NLEGEND]  box_scales;
+    PLFLT[MAX_NLEGEND]  box_line_widths;
+    PLINT[MAX_NLEGEND]  line_colors;
+    PLINT[MAX_NLEGEND]  line_styles;
+    PLFLT[MAX_NLEGEND]  line_widths;
+    PLINT[MAX_NLEGEND]  symbol_numbers;
+    PLINT[MAX_NLEGEND]  symbol_colors;
+    PLFLT[MAX_NLEGEND]  symbol_scales;
+    string[MAX_NLEGEND] text;
+    string[MAX_NLEGEND] symbols;
+    PLFLT legend_width, legend_height, x, y, xstart, ystart;
+    PLFLT max_height, text_scale;
+    PLINT position, opt_base, nrow, ncolumn;
 
     // Parse and process command line arguments
     plparseopts( args, PL_PARSE_FULL );
@@ -822,9 +822,9 @@ int main( char[][] args )
     if ( colorbar )
     {
         // Color bar examples
-        PLFLT values_small[2]  = [ -1.0e-20, 1.0e-20 ];
-        PLFLT values_uneven[9] = [ -1.0e-20, 2.0e-20, 2.6e-20, 3.4e-20, 6.0e-20, 7.0e-20, 8.0e-20, 9.0e-20, 10.0e-20 ];
-        PLFLT values_even[9]   = [ -2.0e-20, -1.0e-20, 0.0e-20, 1.0e-20, 2.0e-20, 3.0e-20, 4.0e-20, 5.0e-20, 6.0e-20 ];
+        PLFLT[2] values_small  = [ -1.0e-20, 1.0e-20 ];
+        PLFLT[9] values_uneven = [ -1.0e-20, 2.0e-20, 2.6e-20, 3.4e-20, 6.0e-20, 7.0e-20, 8.0e-20, 9.0e-20, 10.0e-20 ];
+        PLFLT[9] values_even   = [ -2.0e-20, -1.0e-20, 0.0e-20, 1.0e-20, 2.0e-20, 3.0e-20, 4.0e-20, 5.0e-20, 6.0e-20 ];
 
         // Use unsaturated green background colour to contrast with black caps.
         plscolbg( 70, 185, 70 );
