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