Switch Go bindings from C32/C64 to CI32/etc. Change IO methods invoked to use explicitly signed/unsigned versions rather than casting.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/795626b6 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/795626b6 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/795626b6 Branch: refs/heads/master Commit: 795626b6c4c6c98cd6f6ac0d0a2899e4b6e09e33 Parents: cbe964d Author: Marvin Humphrey <[email protected]> Authored: Tue Apr 19 19:19:28 2016 -0700 Committer: Marvin Humphrey <[email protected]> Committed: Tue Apr 19 19:20:27 2016 -0700 ---------------------------------------------------------------------- go/build.go | 8 ++++++ go/lucy/lucy.go | 16 +++++------ go/lucy/store.go | 66 +++++++++++++++++++++++++++++++++++++++++++++- go/lucy/store_test.go | 28 ++++++++++++++------ 4 files changed, 101 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/795626b6/go/build.go ---------------------------------------------------------------------- diff --git a/go/build.go b/go/build.go index 8353d66..ecf36f4 100644 --- a/go/build.go +++ b/go/build.go @@ -388,7 +388,11 @@ func specClasses(parcel *cfc.Parcel) { inStreamBinding.SpecMethod("Read_U32", "ReadU32() (uint32, error)") inStreamBinding.SpecMethod("Read_U64", "ReadU64() (uint64, error)") inStreamBinding.SpecMethod("Read_C32", "ReadC32() (uint32, error)") + inStreamBinding.SpecMethod("Read_CI32", "ReadCI32() (int32, error)") + inStreamBinding.SpecMethod("Read_CU32", "ReadCU32() (uint32, error)") inStreamBinding.SpecMethod("Read_C64", "ReadC64() (uint64, error)") + inStreamBinding.SpecMethod("Read_CI64", "ReadCI64() (int64, error)") + inStreamBinding.SpecMethod("Read_CU64", "ReadCU64() (uint64, error)") inStreamBinding.SpecMethod("Read_F32", "ReadF32() (float32, error)") inStreamBinding.SpecMethod("Read_F64", "ReadF64() (float64, error)") inStreamBinding.Register() @@ -406,7 +410,11 @@ func specClasses(parcel *cfc.Parcel) { outStreamBinding.SpecMethod("Write_U32", "WriteU32(uint32) error") outStreamBinding.SpecMethod("Write_U64", "WriteU64(uint64) error") outStreamBinding.SpecMethod("Write_C32", "WriteC32(uint32) error") + outStreamBinding.SpecMethod("Write_CI32", "WriteCI32(int32) error") + outStreamBinding.SpecMethod("Write_CU32", "WriteCU32(uint32) error") outStreamBinding.SpecMethod("Write_C64", "WriteC64(uint64) error") + outStreamBinding.SpecMethod("Write_CI64", "WriteCI64(int64) error") + outStreamBinding.SpecMethod("Write_CU64", "WriteCU64(uint64) error") outStreamBinding.SpecMethod("Write_F32", "WriteF32(float32) error") outStreamBinding.SpecMethod("Write_F64", "WriteF64(float64) error") outStreamBinding.SpecMethod("Absorb", "Absorb(InStream) error") http://git-wip-us.apache.org/repos/asf/lucy/blob/795626b6/go/lucy/lucy.go ---------------------------------------------------------------------- diff --git a/go/lucy/lucy.go b/go/lucy/lucy.go index 138b599..4a4fc71 100644 --- a/go/lucy/lucy.go +++ b/go/lucy/lucy.go @@ -297,7 +297,7 @@ func GOLUCY_Doc_Serialize(d *C.lucy_Doc, outstream *C.lucy_OutStream) { hash := clownfish.GoToClownfish(fields, unsafe.Pointer(C.CFISH_HASH), false) defer C.cfish_decref(hash) C.lucy_Freezer_serialize_hash((*C.cfish_Hash)(hash), outstream) - C.LUCY_OutStream_Write_C32(outstream, C.uint32_t(ivars.doc_id)) + C.LUCY_OutStream_Write_CI32(outstream, ivars.doc_id) } //export GOLUCY_Doc_Deserialize @@ -308,7 +308,7 @@ func GOLUCY_Doc_Deserialize(d *C.lucy_Doc, instream *C.lucy_InStream) *C.lucy_Do fields := clownfish.ToGo(hash) fieldsID := registry.store(fields) ivars.fields = unsafe.Pointer(fieldsID) - ivars.doc_id = C.int32_t(C.LUCY_InStream_Read_C32(instream)) + ivars.doc_id = C.LUCY_InStream_Read_CI32(instream) return d } @@ -473,12 +473,12 @@ func doReadDocData(ddrC *C.lucy_DefaultDocReader, docID int32, doc interface{}) C.LUCY_InStream_Seek(ixInstream, C.int64_t(docID*8)) start := C.LUCY_InStream_Read_U64(ixInstream) C.LUCY_InStream_Seek(datInstream, C.int64_t(start)) - numFields := uint32(C.LUCY_InStream_Read_C32(datInstream)) + numFields := uint32(C.LUCY_InStream_Read_CU32(datInstream)) // Decode stored data and build up the doc field by field. for i := uint32(0); i < numFields; i++ { // Read field name. - fieldNameLen := C.size_t(C.LUCY_InStream_Read_C32(datInstream)) + fieldNameLen := C.size_t(C.LUCY_InStream_Read_CU32(datInstream)) if fieldNameLen > fieldNameCap { fieldNameCap = fieldNameLen fieldName = ((*C.char)(C.realloc(unsafe.Pointer(fieldName), fieldNameCap+1))) @@ -497,7 +497,7 @@ func doReadDocData(ddrC *C.lucy_DefaultDocReader, docID int32, doc interface{}) // Read the field value. switch C.LUCY_FType_Primitive_ID(fieldType) & C.lucy_FType_PRIMITIVE_ID_MASK { case C.lucy_FType_TEXT: - valueLen := C.size_t(C.LUCY_InStream_Read_C32(datInstream)) + valueLen := C.size_t(C.LUCY_InStream_Read_CU32(datInstream)) buf := ((*C.char)(C.malloc(valueLen + 1))) C.LUCY_InStream_Read_Bytes(datInstream, buf, valueLen) val := C.GoStringN(buf, C.int(valueLen)) @@ -506,7 +506,7 @@ func doReadDocData(ddrC *C.lucy_DefaultDocReader, docID int32, doc interface{}) return err } case C.lucy_FType_BLOB: - valueLen := C.size_t(C.LUCY_InStream_Read_C32(datInstream)) + valueLen := C.size_t(C.LUCY_InStream_Read_CU32(datInstream)) buf := ((*C.char)(C.malloc(valueLen))) C.LUCY_InStream_Read_Bytes(datInstream, buf, valueLen) val := C.GoBytes(unsafe.Pointer(buf), C.int(valueLen)) @@ -525,12 +525,12 @@ func doReadDocData(ddrC *C.lucy_DefaultDocReader, docID int32, doc interface{}) return err } case C.lucy_FType_INT32: - err := setField(fields, fieldNameGo, int32(C.LUCY_InStream_Read_C32(datInstream))) + err := setField(fields, fieldNameGo, int32(C.LUCY_InStream_Read_CI32(datInstream))) if err != nil { return err } case C.lucy_FType_INT64: - err := setField(fields, fieldNameGo, int64(C.LUCY_InStream_Read_C64(datInstream))) + err := setField(fields, fieldNameGo, int64(C.LUCY_InStream_Read_CI64(datInstream))) if err != nil { return err } http://git-wip-us.apache.org/repos/asf/lucy/blob/795626b6/go/lucy/store.go ---------------------------------------------------------------------- diff --git a/go/lucy/store.go b/go/lucy/store.go index 7af8229..0b11a2f 100644 --- a/go/lucy/store.go +++ b/go/lucy/store.go @@ -95,7 +95,7 @@ func (in *InStreamIMP) ReadString() (string, error) { var retval string err := clownfish.TrapErr(func() { self := (*C.lucy_InStream)(clownfish.Unwrap(in, "in")) - size := C.size_t(C.LUCY_InStream_Read_C32(self)) + size := C.size_t(C.LUCY_InStream_Read_CU32(self)) buf := (*C.char)(C.malloc(size)) defer C.free(unsafe.Pointer(buf)) C.LUCY_InStream_Read_Bytes(self, buf, size) @@ -180,6 +180,24 @@ func (in *InStreamIMP) ReadC32() (uint32, error) { return retval, err } +func (in *InStreamIMP) ReadCI32() (int32, error) { + var retval int32 + err := clownfish.TrapErr(func() { + self := (*C.lucy_InStream)(clownfish.Unwrap(in, "in")) + retval = int32(C.LUCY_InStream_Read_CI32(self)) + }) + return retval, err +} + +func (in *InStreamIMP) ReadCU32() (uint32, error) { + var retval uint32 + err := clownfish.TrapErr(func() { + self := (*C.lucy_InStream)(clownfish.Unwrap(in, "in")) + retval = uint32(C.LUCY_InStream_Read_CU32(self)) + }) + return retval, err +} + func (in *InStreamIMP) ReadC64() (uint64, error) { var retval uint64 err := clownfish.TrapErr(func() { @@ -189,6 +207,24 @@ func (in *InStreamIMP) ReadC64() (uint64, error) { return retval, err } +func (in *InStreamIMP) ReadCI64() (int64, error) { + var retval int64 + err := clownfish.TrapErr(func() { + self := (*C.lucy_InStream)(clownfish.Unwrap(in, "in")) + retval = int64(C.LUCY_InStream_Read_CI64(self)) + }) + return retval, err +} + +func (in *InStreamIMP) ReadCU64() (uint64, error) { + var retval uint64 + err := clownfish.TrapErr(func() { + self := (*C.lucy_InStream)(clownfish.Unwrap(in, "in")) + retval = uint64(C.LUCY_InStream_Read_CU64(self)) + }) + return retval, err +} + func (in *InStreamIMP) ReadF32() (float32, error) { var retval float32 err := clownfish.TrapErr(func() { @@ -314,6 +350,20 @@ func (out *OutStreamIMP) WriteC32(value uint32) error { }) } +func (out *OutStreamIMP) WriteCI32(value int32) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) + C.LUCY_OutStream_Write_CI32(self, C.int32_t(value)) + }) +} + +func (out *OutStreamIMP) WriteCU32(value uint32) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) + C.LUCY_OutStream_Write_CU32(self, C.uint32_t(value)) + }) +} + func (out *OutStreamIMP) WriteC64(value uint64) error { return clownfish.TrapErr(func() { self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) @@ -321,6 +371,20 @@ func (out *OutStreamIMP) WriteC64(value uint64) error { }) } +func (out *OutStreamIMP) WriteCI64(value int64) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) + C.LUCY_OutStream_Write_CI64(self, C.int64_t(value)) + }) +} + +func (out *OutStreamIMP) WriteCU64(value uint64) error { + return clownfish.TrapErr(func() { + self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) + C.LUCY_OutStream_Write_CU64(self, C.uint64_t(value)) + }) +} + func (out *OutStreamIMP) WriteF32(value float32) error { return clownfish.TrapErr(func() { self := (*C.lucy_OutStream)(clownfish.Unwrap(out, "out")) http://git-wip-us.apache.org/repos/asf/lucy/blob/795626b6/go/lucy/store_test.go ---------------------------------------------------------------------- diff --git a/go/lucy/store_test.go b/go/lucy/store_test.go index c422525..d87d539 100644 --- a/go/lucy/store_test.go +++ b/go/lucy/store_test.go @@ -215,11 +215,17 @@ func TestIOStreamReadWrite(t *testing.T) { if err = outStream.WriteU64(42); err != nil { t.Errorf("WriteU64: %s", err) } - if err = outStream.WriteC32(42); err != nil { - t.Errorf("WriteC32: %s", err) + if err = outStream.WriteCI32(42); err != nil { + t.Errorf("WriteCI32: %s", err) } - if err = outStream.WriteC64(42); err != nil { - t.Errorf("WriteC64: %s", err) + if err = outStream.WriteCU32(42); err != nil { + t.Errorf("WriteCU32: %s", err) + } + if err = outStream.WriteCI64(42); err != nil { + t.Errorf("WriteCI64: %s", err) + } + if err = outStream.WriteCU64(42); err != nil { + t.Errorf("WriteCU64: %s", err) } if err = outStream.WriteF32(1.5); err != nil { t.Errorf("WriteF32: %s", err) @@ -265,11 +271,17 @@ func TestIOStreamReadWrite(t *testing.T) { if got, err := inStream.ReadU64(); got != 42 || err != nil { t.Errorf("ReadU64: %d, %s", got, err) } - if got, err := inStream.ReadC32(); got != 42 || err != nil { - t.Errorf("ReadC32: %d, %s", got, err) + if got, err := inStream.ReadCI32(); got != 42 || err != nil { + t.Errorf("ReadCI32: %d, %s", got, err) + } + if got, err := inStream.ReadCU32(); got != 42 || err != nil { + t.Errorf("ReadCU32: %d, %s", got, err) + } + if got, err := inStream.ReadCI64(); got != 42 || err != nil { + t.Errorf("ReadCI64: %d, %s", got, err) } - if got, err := inStream.ReadC64(); got != 42 || err != nil { - t.Errorf("ReadC64: %d, %s", got, err) + if got, err := inStream.ReadCU64(); got != 42 || err != nil { + t.Errorf("ReadCU64: %d, %s", got, err) } if got, err := inStream.ReadF32(); got != 1.5 || err != nil { t.Errorf("ReadF32: %d, %s", got, err)
