Support Folder as arg for IndexSearcher, Indexer.

OpenIndexer and OpenIndexSearcher should accept either a Go `string`
path or a Clownfish Folder as the `index` argument.


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/b69adb89
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/b69adb89
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/b69adb89

Branch: refs/heads/master
Commit: b69adb89aa9fc6a9c7d97c2729a9a0ceadc103be
Parents: c94acc5
Author: Marvin Humphrey <[email protected]>
Authored: Tue Aug 11 13:07:02 2015 -0700
Committer: Marvin Humphrey <[email protected]>
Committed: Wed Sep 9 16:17:59 2015 -0700

----------------------------------------------------------------------
 go/lucy/index.go  | 22 +++++-----------------
 go/lucy/search.go | 10 ++--------
 2 files changed, 7 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/b69adb89/go/lucy/index.go
----------------------------------------------------------------------
diff --git a/go/lucy/index.go b/go/lucy/index.go
index a55771e..4aab0a2 100644
--- a/go/lucy/index.go
+++ b/go/lucy/index.go
@@ -47,20 +47,10 @@ type OpenIndexerArgs struct {
 }
 
 func OpenIndexer(args *OpenIndexerArgs) (obj Indexer, err error) {
-       var schemaC *C.lucy_Schema = nil
-       if args.Schema != nil {
-               schemaC = (*C.lucy_Schema)(unsafe.Pointer(args.Schema.TOPTR()))
-       }
-       switch args.Index.(type) {
-       case string:
-       default:
-               panic("TODO: support Folder")
-       }
-       ixLoc := clownfish.NewString(args.Index.(string))
-       var managerC *C.lucy_IndexManager = nil
-       if args.Manager != nil {
-               managerC = 
(*C.lucy_IndexManager)(unsafe.Pointer(args.Manager.TOPTR()))
-       }
+       schema := (*C.lucy_Schema)(clownfish.UnwrapNullable(args.Schema))
+       manager := 
(*C.lucy_IndexManager)(clownfish.UnwrapNullable(args.Manager))
+       index := (*C.cfish_Obj)(clownfish.GoToClownfish(args.Index, 
unsafe.Pointer(C.CFISH_OBJ), false))
+       defer C.cfish_decref(unsafe.Pointer(index))
        var flags int32
        if args.Create {
                flags = flags | int32(C.lucy_Indexer_CREATE)
@@ -69,9 +59,7 @@ func OpenIndexer(args *OpenIndexerArgs) (obj Indexer, err 
error) {
                flags = flags | int32(C.lucy_Indexer_TRUNCATE)
        }
        err = clownfish.TrapErr(func() {
-               cfObj := C.lucy_Indexer_new(schemaC,
-                       (*C.cfish_Obj)(unsafe.Pointer(ixLoc.TOPTR())),
-                       managerC, C.int32_t(flags))
+               cfObj := C.lucy_Indexer_new(schema, index, manager, 
C.int32_t(flags))
                obj = WRAPIndexer(unsafe.Pointer(cfObj))
        })
        return obj, err

http://git-wip-us.apache.org/repos/asf/lucy/blob/b69adb89/go/lucy/search.go
----------------------------------------------------------------------
diff --git a/go/lucy/search.go b/go/lucy/search.go
index c71048b..3335252 100644
--- a/go/lucy/search.go
+++ b/go/lucy/search.go
@@ -40,14 +40,8 @@ type HitsIMP struct {
 }
 
 func OpenIndexSearcher(index interface{}) (obj IndexSearcher, err error) {
-       var indexC *C.cfish_Obj
-       switch index.(type) {
-       case string:
-               ixLoc := clownfish.NewString(index.(string))
-               indexC = (*C.cfish_Obj)(unsafe.Pointer(ixLoc.TOPTR()))
-       default:
-               panic("TODO: support Folder")
-       }
+       indexC := (*C.cfish_Obj)(clownfish.GoToClownfish(index, 
unsafe.Pointer(C.CFISH_OBJ), false))
+       defer C.cfish_decref(unsafe.Pointer(indexC))
        err = clownfish.TrapErr(func() {
                cfObj := C.lucy_IxSearcher_new(indexC)
                obj = WRAPIndexSearcher(unsafe.Pointer(cfObj))

Reply via email to