WSTester updated to work plus hopefully all the other changes that need to go into...
[jabaws.git] / binaries / src / ViennaRNA / RNAforester / g2-0.70 / g2_perl / G2.xs
diff --git a/binaries/src/ViennaRNA/RNAforester/g2-0.70/g2_perl/G2.xs b/binaries/src/ViennaRNA/RNAforester/g2-0.70/g2_perl/G2.xs
new file mode 100644 (file)
index 0000000..5f4d55f
--- /dev/null
@@ -0,0 +1,922 @@
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <stdlib.h>
+#include <g2.h>
+
+#ifdef DO_PS
+#include <g2_PS.h>
+#endif /* DO_PS */
+
+#ifdef DO_FIG
+#include <g2_FIG.h>
+#endif /* DO_FIG */
+
+#ifdef DO_X11
+#include <g2_X11.h>
+#endif /* DO_X11 */
+
+#ifdef DO_GD
+#include <g2_gd.h>
+#endif /* DO_GD */
+
+#ifdef DO_WIN32
+#include <g2_Win32.h>
+#endif /* DO_WIN32 */
+
+
+static int
+not_here(s)
+char *s;
+{
+    croak("%s not implemented on this architecture", s);
+    return -1;
+}
+
+static double
+constant(name, arg)
+char *name;
+int arg;
+{
+    errno = 0;
+    switch (*name) {
+    case 'A':
+       break;
+    case 'B':
+       break;
+    case 'C':
+       break;
+    case 'D':
+       break;
+    case 'E':
+       break;
+    case 'F':
+       break;
+    case 'G':
+       if (strEQ(name, "G2LD"))
+#ifdef G2LD
+           return G2LD;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "G2_H"))
+#ifdef G2_H
+           return G2_H;
+#else
+           goto not_there;
+#endif
+       if (strEQ(name, "G2_VERSION"))
+#ifdef G2_VERSION
+           return atof(G2_VERSION);
+#else
+           goto not_there;
+#endif
+       break;
+    case 'H':
+       break;
+    case 'I':
+       break;
+    case 'J':
+       break;
+    case 'K':
+       break;
+    case 'L':
+       break;
+    case 'M':
+       break;
+    case 'N':
+       break;
+    case 'O':
+       break;
+    case 'P':
+       break;
+    case 'Q':
+       break;
+    case 'R':
+       break;
+    case 'S':
+       break;
+    case 'T':
+       break;
+    case 'U':
+       break;
+    case 'V':
+       break;
+    case 'W':
+       break;
+    case 'X':
+       break;
+    case 'Y':
+       break;
+    case 'Z':
+       break;
+    }
+    errno = EINVAL;
+    return 0;
+
+not_there:
+    errno = ENOENT;
+    return 0;
+}
+
+typedef int* DevType;
+typedef        DevType G2__Device;
+
+
+MODULE = G2            PACKAGE = G2                    
+
+
+double
+constant(name,arg)
+       char *          name
+       int             arg
+
+MODULE = G2            PACKAGE = G2::Device            PREFIX = g2_
+
+#ifdef DO_X11
+
+G2::Device
+g2_newX11(packname="G2::Device", width=100,height=100)
+       char * packname
+       int width
+       int height
+        PROTOTYPE: $;$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_X11(width, height);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+
+#endif /* DO_X11 */
+       
+
+#ifdef DO_WIN32
+
+G2::Device
+g2_newWin32(packname="G2::Device", width=100,height=100,filename="Win32 window",type=0)
+       char * packname
+       int width
+       int height
+       char * filename 
+        int type
+        PROTOTYPE: $;$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_win32(width, height, filename, type);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+
+#endif /* DO_WIN32 */
+
+#ifdef DO_GD
+
+G2::Device
+g2_newGD(packname="G2::Device", filename="g2.png", width=100, height=100, type=1)
+       char * packname
+       char * filename
+       int width
+       int height
+       int type
+        PROTOTYPE: $;$$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_gd(filename, width, height, type);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+
+#endif /* DO_GD */
+
+#ifdef DO_PS
+
+G2::Device
+g2_newPS(packname="G2::Device", filename="g2.ps", paper=1,orientation=1)
+       char * packname
+       char * filename
+       int paper
+       int orientation
+        PROTOTYPE: $;$$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_PS(filename, paper, orientation);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+       
+G2::Device
+g2_newEPSF(packname="G2::Device", filename="g2.eps")
+       char * packname
+       char * filename
+        PROTOTYPE: $;$$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_EPSF(filename);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+       
+G2::Device
+g2_newEPSF_CLIP(packname="G2::Device", filename="g2.eps",width=100,height=100)
+       char * packname
+       char * filename
+       long width
+       long height
+        PROTOTYPE: $;$$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_EPSF_CLIP(filename,width,height);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+       
+#endif /* DO_PS */
+
+#ifdef DO_FIG
+
+G2::Device
+g2_newFIG(packname="G2::Device", filename="g2.fig")
+       char * packname
+       char * filename
+        PROTOTYPE: $;$$$
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_FIG(filename);
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+       
+#endif /* DO_FIG */
+
+       
+G2::Device
+g2_newvd(packname="G2::Device")
+       char * packname
+        PROTOTYPE: $;
+       CODE:
+       {
+               DevType theDevice;
+               theDevice = (int *)malloc(sizeof(int));
+               *theDevice = g2_open_vd();
+               RETVAL = theDevice;
+       }
+       OUTPUT:
+       RETVAL
+
+
+void
+g2_DESTROY(dev)
+       G2::Device      dev
+       PROTOTYPE: $
+       CODE:
+       {
+               if(g2_device_exist(*dev)) {
+                       g2_close(*dev);
+               }
+               free(dev);
+       }
+
+
+void
+g2_attach(vd_dev, dev)
+       G2::Device      vd_dev
+       G2::Device      dev
+       PROTOTYPE: $
+       CODE:
+       {
+       g2_attach(*vd_dev, *dev);
+       }
+
+void
+g2_detach(vd_dev, dev)
+       G2::Device      vd_dev
+       G2::Device      dev
+       PROTOTYPE: $
+       CODE:
+       {
+       g2_detach(*vd_dev, *dev);
+       }
+
+void
+g2_close(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+       g2_close(*dev);
+       }
+
+void
+g2_set_auto_flush(dev, on_off)
+       G2::Device      dev
+       int     on_off
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_set_auto_flush(*dev, on_off);
+       }
+
+void
+g2_flush(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+               g2_flush(*dev);
+       }
+
+void
+g2_save(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+               g2_save(*dev);
+       }
+
+void
+g2_set_coordinate_system(dev, x_origin, y_origin, x_mul, y_mul)
+       G2::Device      dev
+       double  x_origin
+       double  y_origin
+       double  x_mul
+       double  y_mul
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_set_coordinate_system(*dev, x_origin, y_origin, x_mul, y_mul);
+       }
+
+
+int
+g2_ink(pd_dev, red, green, blue)
+       G2::Device      pd_dev
+       double  red
+       double  green
+       double  blue
+       PROTOTYPE: $$$
+       CODE:
+       {
+               RETVAL = g2_ink(*pd_dev, red, green, blue);
+       }
+       OUTPUT:
+       RETVAL
+
+void
+g2_pen(dev, color)
+       G2::Device      dev
+       int     color
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_pen(*dev, color);
+       }
+
+
+void
+g2_set_dash(dev, N, dashes=NULL)
+       G2::Device      dev
+       int     N
+       double *        dashes
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_set_dash(*dev, N, dashes);
+               free(dashes);
+       }
+
+void
+g2_set_font_size(dev, size)
+       G2::Device      dev
+       double  size
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_set_font_size(*dev, size);
+       }
+
+void
+g2_set_line_width(dev, w)
+       G2::Device      dev
+       double  w
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_set_line_width(*dev, w);
+       }
+
+void
+g2_clear_palette(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+               g2_clear_palette(*dev);
+       }
+
+void
+g2_reset_palette(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+               g2_reset_palette(*dev);
+       }
+
+void
+g2_allocate_basic_colors(dev)
+       G2::Device      dev
+       PROTOTYPE: 
+       CODE:
+       {
+               g2_allocate_basic_colors(*dev);
+       }
+
+void
+g2_clear(dev)
+       G2::Device      dev
+       PROTOTYPE:
+       CODE:
+       {
+               g2_clear(*dev);
+       }
+
+void
+g2_set_background(dev, color)
+       G2::Device      dev
+       int     color
+       PROTOTYPE: $
+       CODE:
+       {
+               g2_set_background(*dev, color);
+       }
+
+void
+g2_move(dev, x, y)
+       G2::Device      dev
+       double  x
+       double  y
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_move(*dev, x, y);
+       }
+
+void
+g2_move_r(dev, dx, dy)
+       G2::Device      dev
+       double  dx
+       double  dy
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_move_r(*dev, dx, dy);
+       }
+
+void
+g2_plot(dev, x, y)
+       G2::Device      dev
+       double  x
+       double  y
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_plot(*dev, x, y);
+       }
+
+void
+g2_plot_r(dev, dx, dy)
+       G2::Device      dev
+       double  dx
+       double  dy
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_plot_r(*dev, dx, dy);
+       }
+
+
+
+void
+g2_line(dev, x1, y1, x2, y2)
+       G2::Device      dev
+       double  x1
+       double  y1
+       double  x2
+       double  y2
+
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_line(*dev, x1, y1, x2, y2);
+       }
+
+void
+g2_line_r(dev, dx, dy)
+       G2::Device      dev
+       double  dx
+       double  dy
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_line_r(*dev, dx, dy);
+       }
+
+void
+g2_line_to(dev, x, y)
+       G2::Device      dev
+       double  x
+       double  y
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_line_to(*dev, x, y);
+       }
+
+void
+g2_poly_line(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_poly_line(*dev, N_pt, points);
+               free(points);
+       }
+
+void
+g2_triangle(dev, x1, y1, x2, y2, x3, y3)
+       G2::Device      dev
+       double  x1
+       double  y1
+       double  x2
+       double  y2
+       double  x3
+       double  y3
+       PROTOTYPE: $$$$$$$
+       CODE:
+       {
+               g2_triangle(*dev, x1, y1, x2, y2, x3, y3);
+       }
+
+
+void
+g2_filled_triangle(dev, x1, y1, x2, y2, x3, y3)
+       G2::Device      dev
+       double  x1
+       double  y1
+       double  x2
+       double  y2
+       double  x3
+       double  y3
+       PROTOTYPE: $$$$$$$
+       CODE:
+       {
+               g2_filled_triangle(*dev, x1, y1, x2, y2, x3, y3);
+       }
+
+void
+g2_rectangle(dev, x1, y1, x2, y2)
+       G2::Device      dev
+       double  x1
+       double  y1
+       double  x2
+       double  y2
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_rectangle(*dev, x1, y1, x2, y2);
+       }
+
+
+void
+g2_filled_rectangle(dev, x1, y1, x2, y2)
+       G2::Device      dev
+       double  x1
+       double  y1
+       double  x2
+       double  y2
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_filled_rectangle(*dev, x1, y1, x2, y2);
+       }
+
+void
+g2_polygon(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_polygon(*dev, N_pt, points);
+               free(points);
+       }
+
+void
+g2_filled_polygon(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_polygon(*dev, N_pt, points);
+               free(points);
+       }
+
+void
+g2_circle(dev, x, y, r)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r
+       PROTOTYPE: $$$
+       CODE:
+       {
+               g2_circle(*dev, x, y, r);
+       }
+
+void
+g2_filled_circle(dev, x, y, r)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r
+       PROTOTYPE: $$$
+       CODE:
+       {
+               g2_filled_circle(*dev, x, y, r);
+       }
+
+void
+g2_ellipse(dev, x, y, r1, r2)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r1
+       double  r2
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_ellipse(*dev, x, y, r1, r2);
+       }
+
+void
+g2_filled_ellipse(dev, x, y, r1, r2)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r1
+       double  r2
+       PROTOTYPE: $$$$
+       CODE:
+       {
+               g2_filled_ellipse(*dev, x, y, r1, r2);
+       }
+
+void
+g2_arc(dev, x, y, r1, r2, a1, a2)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r1
+       double  r2
+       double  a1
+       double  a2
+       PROTOTYPE: $$$$$$
+       CODE:
+       {
+               g2_arc(*dev, x, y, r1, r2, a1, a2);
+       }
+
+void
+g2_filled_arc(dev, x, y, r1, r2, a1, a2)
+       G2::Device      dev
+       double  x
+       double  y
+       double  r1
+       double  r2
+       double  a1
+       double  a2
+       PROTOTYPE: $$$$$$
+       CODE:
+       {
+               g2_filled_arc(*dev, x, y, r1, r2, a1, a2);
+       }
+
+void
+g2_string(dev, x, y, text)
+       G2::Device      dev
+       double  x
+       double  y
+       char *  text
+       PROTOTYPE: $$$
+       CODE:
+       {
+               g2_string(*dev, x, y, text);
+       }
+
+void
+g2_set_QP(dev, d, shape)
+       G2::Device      dev
+       double  d
+       enum QPshape    shape
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_set_QP(*dev, d, shape);
+       }
+
+void
+g2_plot_QP(dev, x, y)
+       G2::Device      dev
+       double  x
+       double  y
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_plot_QP(*dev, x, y);
+       }
+
+void
+g2_query_pointer(dev)
+       G2::Device      dev
+       PROTOTYPE: $$
+       CODE:
+       {
+               double x, y;
+               unsigned int button;
+               g2_query_pointer(*dev, &x, &y, &button);
+       }
+
+
+
+
+
+void
+g2_spline(dev, N_pt, points, o)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       int o
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_spline(*dev, N_pt, points, o);
+               free(points);
+       }
+
+
+void
+g2_b_spline(dev, N_pt, points, o)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       int o
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_b_spline(*dev, N_pt, points, o);
+               free(points);
+       }
+
+
+void
+g2_raspln(dev, N_pt, points, tn)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       double tn
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_raspln(*dev, N_pt, points, tn);
+               free(points);
+       }
+
+
+void
+g2_para_3(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_para_3(*dev, N_pt, points);
+               free(points);
+       }
+
+
+void
+g2_para_5(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_para_5(*dev, N_pt, points);
+               free(points);
+       }
+
+
+void
+g2_filled_spline(dev, N_pt, points, o)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       int o
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_spline(*dev, N_pt, points, o);
+               free(points);
+       }
+
+
+void
+g2_filled_b_spline(dev, N_pt, points, o)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       int o
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_b_spline(*dev, N_pt, points, o);
+               free(points);
+       }
+
+
+void
+g2_filled_raspln(dev, N_pt, points, tn)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       double tn
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_raspln(*dev, N_pt, points, tn);
+               free(points);
+       }
+
+
+void
+g2_filled_para_3(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_para_3(*dev, N_pt, points);
+               free(points);
+       }
+
+
+void
+g2_filled_para_5(dev, N_pt, points)
+       G2::Device      dev
+       int     N_pt
+       double * points
+       PROTOTYPE: $$
+       CODE:
+       {
+               g2_filled_para_5(*dev, N_pt, points);
+               free(points);
+       }