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