github.com/balzaczyy/golucene@v0.0.0-20151210033525-d0be9ee89713/core/util/packed/direct8.go (about) 1 // This file has been automatically generated, DO NOT EDIT 2 3 package packed 4 5 import ( 6 "github.com/balzaczyy/golucene/core/util" 7 ) 8 9 // Direct wrapping of 8-bits values to a backing array. 10 type Direct8 struct { 11 *MutableImpl 12 values []byte 13 } 14 15 func newDirect8(valueCount int) *Direct8 { 16 ans := &Direct8{ 17 values: make([]byte, valueCount), 18 } 19 ans.MutableImpl = newMutableImpl(ans, valueCount, 8) 20 return ans 21 } 22 23 func newDirect8FromInput(version int32, in DataInput, valueCount int) (r PackedIntsReader, err error) { 24 ans := newDirect8(valueCount) 25 if err = in.ReadBytes(ans.values[:valueCount]); err == nil { 26 // because packed ints have not always been byte-aligned 27 remaining := PackedFormat(PACKED).ByteCount(version, int32(valueCount), 8) - 1*int64(valueCount) 28 for i := int64(0); i < remaining; i++ { 29 if _, err = in.ReadByte(); err != nil { 30 break 31 } 32 } 33 } 34 return ans, err 35 } 36 37 func (d *Direct8) Get(index int) int64 { 38 return int64(d.values[index]) & 0xFF 39 } 40 41 func (d *Direct8) Set(index int, value int64) { 42 d.values[index] = byte(value) 43 } 44 45 func (d *Direct8) RamBytesUsed() int64 { 46 return util.AlignObjectSize( 47 util.NUM_BYTES_OBJECT_HEADER + 48 2*util.NUM_BYTES_INT + 49 util.NUM_BYTES_OBJECT_REF + 50 util.SizeOf(d.values)) 51 } 52 53 func (d *Direct8) Clear() { 54 for i, _ := range d.values { 55 d.values[i] = 0 56 } 57 } 58 59 func (d *Direct8) getBulk(index int, arr []int64) int { 60 assert2(len(arr) > 0, "len must be > 0 (got %v)", len(arr)) 61 assert(index >= 0 && index < d.valueCount) 62 63 gets := d.valueCount - index 64 if len(arr) < gets { 65 gets = len(arr) 66 } 67 for i, _ := range arr[:gets] { 68 arr[i] = int64(d.values[index+i]) & 0xFF 69 } 70 return gets 71 } 72 73 func (d *Direct8) setBulk(index int, arr []int64) int { 74 assert2(len(arr) > 0, "len must be > 0 (got %v)", len(arr)) 75 assert(index >= 0 && index < d.valueCount) 76 77 sets := d.valueCount - index 78 if len(arr) < sets { 79 sets = len(arr) 80 } 81 for i, _ := range arr { 82 d.values[index+i] = byte(arr[i]) 83 } 84 return sets 85 } 86 87 func (d *Direct8) fill(from, to int, val int64) { 88 assert(val == val & 0xFF) 89 for i := from; i < to; i ++ { 90 d.values[i] = byte(val) 91 } 92 } 93