Source File
bitmap_generate.go
Belonging Package
github.com/apache/arrow-go/v18/internal/bitutils
// Licensed to the Apache Software Foundation (ASF) under one// or more contributor license agreements. See the NOTICE file// distributed with this work for additional information// regarding copyright ownership. The ASF licenses this file// to you under the Apache License, Version 2.0 (the// "License"); you may not use this file except in compliance// with the License. You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package bitutilsimport// GenerateBits writes sequential bits to a bitmap. Bits preceding the// initial start offset are preserved, bits following the bitmap may// get clobbered.func ( []byte, , int64, func() bool) {if == 0 {return}:= [/8:]:= bitutil.BitMask[%8]:= [0] & bitutil.PrecedingBitmask[%8]for := int64(0); < ; ++ {:= ()if {= |}<<= 1if == 0 {= 1[0] == [1:]= 0}}if != 1 {[0] =}}// GenerateBitsUnrolled is like GenerateBits but unrolls its main loop for// higher performance.//// See the benchmarks for evidence.func ( []byte, , int64, func() bool) {if == 0 {return}var (byte= [/8:]= uint64( % 8)= bitutil.BitMask[]=)if != 0x01 {= [0] & bitutil.PrecedingBitmask[]for != 0 && > 0 {if () {|=}<<= 1--}[0] == [1:]}var [8]bytefor := / 8; > 0; -- {for := 0; < 8; ++ {if () {[] = 1} else {[] = 0}}[0] = ([0] | [1]<<1 | [2]<<2 |[3]<<3 | [4]<<4 | [5]<<5 |[6]<<6 | [7]<<7)= [1:]}:= % 8if > 0 {= 0= 0x01for ; > 0; -- {if () {|=}<<= 1}[0] =}}
![]() |
The pages are generated with Golds v0.8.2. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |