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