--- /dev/null
+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.)
--- /dev/null
+export GOROOT=/usr/local/go
+export GOPATH=`pwd`
--- /dev/null
+#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(<ime);
+ return ctime(<ime);
+}
--- /dev/null
+package example
--- /dev/null
+%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();
+
--- /dev/null
+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
--- /dev/null
+package main
+import (
+ "fmt"
+ "example"
+ "gv"
+)
+
+func main() {
+ fmt.Printf("Hello, world. fact(2) = %v\n", example.Fact(2))
+ G = gv.Digraph()
+}