Don't convert return value of Clone().
Have Clone return an Obj rather than an interface{}, and override the
default binding which would convert some Clownfish types to Go types.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/db2fcaee
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/db2fcaee
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/db2fcaee
Branch: refs/heads/master
Commit: db2fcaeef7deaf725bd72e9ee5f57c5359ee465b
Parents: b1a2632
Author: Marvin Humphrey <[email protected]>
Authored: Tue Aug 4 11:55:17 2015 -0700
Committer: Marvin Humphrey <[email protected]>
Committed: Thu Aug 6 19:51:31 2015 -0700
----------------------------------------------------------------------
runtime/go/build.go | 1 +
runtime/go/clownfish/clownfish.go | 6 ++++++
2 files changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/db2fcaee/runtime/go/build.go
----------------------------------------------------------------------
diff --git a/runtime/go/build.go b/runtime/go/build.go
index 71a8c6b..71c668a 100644
--- a/runtime/go/build.go
+++ b/runtime/go/build.go
@@ -137,6 +137,7 @@ func runCFC() {
func specMethods(parcel *cfc.Parcel) {
objBinding := cfc.NewGoClass(parcel, "Clownfish::Obj")
objBinding.SpecMethod("", "TOPTR() uintptr")
+ objBinding.SpecMethod("Clone", "Clone() Obj")
objBinding.Register()
errBinding := cfc.NewGoClass(parcel, "Clownfish::Err")
http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/db2fcaee/runtime/go/clownfish/clownfish.go
----------------------------------------------------------------------
diff --git a/runtime/go/clownfish/clownfish.go
b/runtime/go/clownfish/clownfish.go
index d5e3190..35cb470 100644
--- a/runtime/go/clownfish/clownfish.go
+++ b/runtime/go/clownfish/clownfish.go
@@ -160,6 +160,12 @@ func (o *ObjIMP) TOPTR() uintptr {
return o.ref
}
+func (o *ObjIMP)Clone() Obj {
+ self := (*C.cfish_Obj)(unsafe.Pointer(o.TOPTR()))
+ dupe := C.CFISH_Obj_Clone(self)
+ return WRAPAny(unsafe.Pointer(dupe)).(Obj)
+}
+
func certifyCF(value interface{}, class *C.cfish_Class) {
cfObj, ok := value.(Obj)
if ok {