summaryrefslogtreecommitdiff
path: root/doc/progs
diff options
context:
space:
mode:
authorFrancisco Souza <franciscossouza@gmail.com>2012-03-13 09:07:37 +1100
committerAndrew Gerrand <adg@golang.org>2012-03-13 09:07:37 +1100
commit60b98d62087d582dafdda68c2af281c5e204fe03 (patch)
tree42d8bf0d7948fe652d8c401f2fd503227b51fd6b /doc/progs
parentc7cca2756e7cf04a472c97b81f07ab791b7186ca (diff)
downloadgo-git-60b98d62087d582dafdda68c2af281c5e204fe03.tar.gz
doc: add C? Go? Cgo! article
Originally published on The Go Programming Language Blog, March 17, 2011. http://blog.golang.org/2011/03/c-go-cgo.html Update #2547. R=golang-dev, adg CC=golang-dev https://golang.org/cl/5777054
Diffstat (limited to 'doc/progs')
-rw-r--r--doc/progs/cgo1.go23
-rw-r--r--doc/progs/cgo2.go21
-rw-r--r--doc/progs/cgo3.go17
-rw-r--r--doc/progs/cgo4.go17
-rwxr-xr-xdoc/progs/run9
5 files changed, 86 insertions, 1 deletions
diff --git a/doc/progs/cgo1.go b/doc/progs/cgo1.go
new file mode 100644
index 0000000000..3125cda3d8
--- /dev/null
+++ b/doc/progs/cgo1.go
@@ -0,0 +1,23 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package rand
+
+// INCLUDE OMIT
+
+/*
+#include <stdlib.h>
+*/
+import "C"
+
+// STOP OMIT
+func Random() int {
+ return int(C.random())
+}
+
+// STOP OMIT
+func Seed(i int) {
+ C.srandom(C.uint(i))
+}
+
+// END OMIT
diff --git a/doc/progs/cgo2.go b/doc/progs/cgo2.go
new file mode 100644
index 0000000000..f38473b13e
--- /dev/null
+++ b/doc/progs/cgo2.go
@@ -0,0 +1,21 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package rand2
+
+/*
+#include <stdlib.h>
+*/
+import "C"
+
+func Random() int {
+ var r C.long = C.random()
+ return int(r)
+}
+
+// STOP OMIT
+func Seed(i int) {
+ C.srandom(C.uint(i))
+}
+
+// END OMIT
diff --git a/doc/progs/cgo3.go b/doc/progs/cgo3.go
new file mode 100644
index 0000000000..435fd0402d
--- /dev/null
+++ b/doc/progs/cgo3.go
@@ -0,0 +1,17 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package print
+
+// #include <stdio.h>
+// #include <stdlib.h>
+import "C"
+import "unsafe"
+
+func Print(s string) {
+ cs := C.CString(s)
+ C.fputs(cs, (*C.FILE)(C.stdout))
+ C.free(unsafe.Pointer(cs))
+}
+
+// END OMIT
diff --git a/doc/progs/cgo4.go b/doc/progs/cgo4.go
new file mode 100644
index 0000000000..3808d62179
--- /dev/null
+++ b/doc/progs/cgo4.go
@@ -0,0 +1,17 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+package print
+
+// #include <stdio.h>
+// #include <stdlib.h>
+import "C"
+import "unsafe"
+
+func Print(s string) {
+ cs := C.CString(s)
+ defer C.free(unsafe.Pointer(cs))
+ C.fputs(cs, (*C.FILE)(C.stdout))
+}
+
+// END OMIT
diff --git a/doc/progs/run b/doc/progs/run
index 9d4669b6c2..8b383e5903 100755
--- a/doc/progs/run
+++ b/doc/progs/run
@@ -28,7 +28,14 @@ law_of_reflection="
interface2
"
-all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection slices go1)
+c_go_cgo="
+ cgo1
+ cgo2
+ cgo3
+ cgo4
+"
+
+all=$(echo $defer_panic_recover $effective_go $error_handling $law_of_reflection $c_go_cgo slices go1)
for i in $all; do
go build $i.go