func HashToGo(ptr unsafe.Pointer) map[string]interface{} { hash := (*C.cfish_Hash)(ptr) if hash == nil { return nil } class := C.cfish_Obj_get_class((*C.cfish_Obj)(ptr)) if class != C.CFISH_HASH { mess := "Not a Hash: " + StringToGo(unsafe.Pointer(C.CFISH_Class_Get_Name(class))) panic(NewErr(mess)) } size := C.CFISH_Hash_Get_Size(hash) m := make(map[string]interface{}, int(size)) iter := C.cfish_HashIter_new(hash) defer C.cfish_dec_refcount(unsafe.Pointer(iter)) for C.CFISH_HashIter_Next(iter) { key := C.CFISH_HashIter_Get_Key(iter) val := C.CFISH_HashIter_Get_Value(iter) m[StringToGo(unsafe.Pointer(key))] = ToGo(unsafe.Pointer(val)) } return m }
//export GOLUCY_Doc_Get_Size func GOLUCY_Doc_Get_Size(d *C.lucy_Doc) C.uint32_t { ivars := C.lucy_Doc_IVARS(d) hash := ((*C.cfish_Hash)(ivars.fields)) return C.uint32_t(C.CFISH_Hash_Get_Size(hash)) }