]> granicus.if.org Git - graphviz/commitdiff
experimental go bits
authorJohn Ellson <ellson@research.att.com>
Wed, 20 Nov 2013 20:58:40 +0000 (15:58 -0500)
committerJohn Ellson <ellson@research.att.com>
Wed, 20 Nov 2013 20:58:40 +0000 (15:58 -0500)
tclpkg/gv/go/README [new file with mode: 0644]
tclpkg/gv/go/setup [new file with mode: 0755]
tclpkg/gv/go/src/example/example.c [new file with mode: 0644]
tclpkg/gv/go/src/example/example.go [new file with mode: 0644]
tclpkg/gv/go/src/example/example.swig [new file with mode: 0644]
tclpkg/gv/go/src/makefile [new file with mode: 0644]
tclpkg/gv/go/src/test.go [new file with mode: 0644]

diff --git a/tclpkg/gv/go/README b/tclpkg/gv/go/README
new file mode 100644 (file)
index 0000000..6a0a620
--- /dev/null
@@ -0,0 +1,5 @@
+This directory is hopefully temporary,  containing various experimantal code towards a GO language extension.
+
+Currently requires a very recent GO installed in /usr/local/go
+
+(Later than the 1.1.2 available in fc20 or rawhide at this time.)
diff --git a/tclpkg/gv/go/setup b/tclpkg/gv/go/setup
new file mode 100755 (executable)
index 0000000..fe58680
--- /dev/null
@@ -0,0 +1,2 @@
+export GOROOT=/usr/local/go
+export GOPATH=`pwd`
diff --git a/tclpkg/gv/go/src/example/example.c b/tclpkg/gv/go/src/example/example.c
new file mode 100644 (file)
index 0000000..65b76ae
--- /dev/null
@@ -0,0 +1,20 @@
+#include <time.h>
+
+double My_variable = 3.0; 
+
+int fact(int n) { 
+       if (n <= 1) 
+               return 1;
+       else
+               return n*fact(n-1);
+} 
+
+int my_mod(int x, int y) {
+       return (x%y);
+} 
+
+char *get_time() { 
+       time_t ltime; 
+       time(&ltime); 
+       return ctime(&ltime); 
+}
diff --git a/tclpkg/gv/go/src/example/example.go b/tclpkg/gv/go/src/example/example.go
new file mode 100644 (file)
index 0000000..f7ec372
--- /dev/null
@@ -0,0 +1 @@
+package example
diff --git a/tclpkg/gv/go/src/example/example.swig b/tclpkg/gv/go/src/example/example.swig
new file mode 100644 (file)
index 0000000..aaf1862
--- /dev/null
@@ -0,0 +1,13 @@
+%module example 
+%{ 
+/* Put header files here or function declarations like below */ 
+extern double My_variable;
+extern int fact(int n); 
+extern int my_mod(int x, int y); 
+extern char *get_time(); 
+%} 
+extern double My_variable;
+extern int fact(int n); 
+extern int my_mod(int x, int y); 
+extern char *get_time();
+
diff --git a/tclpkg/gv/go/src/makefile b/tclpkg/gv/go/src/makefile
new file mode 100644 (file)
index 0000000..4e3e31c
--- /dev/null
@@ -0,0 +1,20 @@
+GO=$(GOROOT)/bin/go
+LDFLAGS="-r `pwd`/gv -r `pwd`/example"
+
+test: test.go prep
+       $(GO) build -x -ldflags=$(LDFLAGS) test.go
+
+.PHONY: prep
+prep:
+       mkdir -p gv
+#      swig -c++ -go -intgosize 32 -o gv/gv_go.cpp ../../gv.i
+#      sed -e 's/#include "gvc.h"/#include <graphviz\/gvc.h>/' <../../gv.cpp >gv/gv.cpp
+#      sed -e 's/#include "gvc.h"/#include <graphviz\/gvc.h>/' <gv/gv_go.cpp >gv/gv_go.cpp2
+#      mv gv/gv_go.cpp2 gv/gv_go.cpp
+       sed -e 's/#include "gvc.h"/#include <graphviz\/gvc.h>/' <../../gv.i >gv/gv.swig
+       sed -e 's/#include "gvc.h"/#include <graphviz\/gvc.h>/' \
+               -e 's/DEMAND_LOADING/1/' <../../gv.cpp >gv/gv.cpp
+       echo "package gv" >gv/gv.go
+
+clean:
+       rm -rf test gv */*.so
diff --git a/tclpkg/gv/go/src/test.go b/tclpkg/gv/go/src/test.go
new file mode 100644 (file)
index 0000000..bfc288e
--- /dev/null
@@ -0,0 +1,11 @@
+package main
+import (
+   "fmt"
+   "example"
+   "gv"
+)
+
+func main() {
+    fmt.Printf("Hello, world.  fact(2) = %v\n", example.Fact(2))
+    G = gv.Digraph()
+}