vendor: github.com/willf/bitset v1.1.11
The changes needed by opencontainers/selinux are now in a tagged release. This will make our dependency slightly ahead of what's used by opencontainers/selinux until a v1.6.1 is tagged. full diff: https://github.com/willf/bitset/compare/d5bec3311243...v1.1.11 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
		| @@ -70,7 +70,7 @@ github.com/modern-go/concurrent                     1.0.3 | ||||
| github.com/modern-go/reflect2                       v1.0.1 | ||||
| github.com/opencontainers/selinux                   v1.6.0 | ||||
| github.com/tchap/go-patricia                        v2.2.6 | ||||
| github.com/willf/bitset                             d5bec3311243426a3c6d1b7a795f24b17c686dbb # 1.1.10+ used by selinux pkg | ||||
| github.com/willf/bitset                             v1.1.11 | ||||
| golang.org/x/crypto                                 75b288015ac94e66e3d6715fb68a9b41bf046ec2 | ||||
| golang.org/x/oauth2                                 858c2ad4c8b6c5d10852cb89079f6ca1c7309787 | ||||
| golang.org/x/time                                   555d28b269f0569763d25dbe1a237ae74c6bcc82 | ||||
|   | ||||
							
								
								
									
										20
									
								
								vendor/github.com/willf/bitset/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/willf/bitset/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,10 +2,10 @@ | ||||
|  | ||||
| *Go language library to map between non-negative integers and boolean values* | ||||
|  | ||||
| [](https://travis-ci.org/willf/bitset?branch=master) | ||||
| [](https://github.com/willf/bitset/actions?query=workflow%3ATest) | ||||
| [](https://coveralls.io/github/willf/bitset?branch=master) | ||||
| [](https://goreportcard.com/report/github.com/willf/bitset) | ||||
| [](http://godoc.org/github.com/willf/bitset) | ||||
| [](https://pkg.go.dev/github.com/willf/bitset?tab=doc) | ||||
|  | ||||
|  | ||||
| ## Description | ||||
| @@ -63,8 +63,11 @@ func main() { | ||||
|  | ||||
| As an alternative to BitSets, one should check out the 'big' package, which provides a (less set-theoretical) view of bitsets. | ||||
|  | ||||
| Godoc documentation is at: https://godoc.org/github.com/willf/bitset | ||||
| Package documentation is at: https://pkg.go.dev/github.com/willf/bitset?tab=doc | ||||
|  | ||||
| ## Memory Usage | ||||
|  | ||||
| The memory usage of a bitset using N bits is at least N/8 bytes. The number of bits in a bitset is at least as large as one plus the greatest bit index you have accessed. Thus it is possible to run out of memory while using a bitset. If you have lots of bits, you might prefer compressed bitsets, like the [Roaring bitmaps](http://roaringbitmap.org) and its [Go implementation](https://github.com/RoaringBitmap/roaring). | ||||
|  | ||||
| ## Implementation Note | ||||
|  | ||||
| @@ -82,15 +85,10 @@ go get github.com/willf/bitset | ||||
|  | ||||
| If you wish to contribute to this project, please branch and issue a pull request against master ("[GitHub Flow](https://guides.github.com/introduction/flow/)") | ||||
|  | ||||
| This project include a Makefile that allows you to test and build the project with simple commands. | ||||
| To see all available options: | ||||
| ```bash | ||||
| make help | ||||
| ``` | ||||
|  | ||||
| ## Running all tests | ||||
|  | ||||
| Before committing the code, please check if it passes all tests using (note: this will install some dependencies): | ||||
| Before committing the code, please check if it passes tests, has adequate coverage, etc. | ||||
| ```bash | ||||
| make qa | ||||
| go test | ||||
| go test -cover | ||||
| ``` | ||||
|   | ||||
							
								
								
									
										72
									
								
								vendor/github.com/willf/bitset/bitset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										72
									
								
								vendor/github.com/willf/bitset/bitset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -138,6 +138,9 @@ func (b *BitSet) Len() uint { | ||||
| // extendSetMaybe adds additional words to incorporate new bits if needed | ||||
| func (b *BitSet) extendSetMaybe(i uint) { | ||||
| 	if i >= b.length { // if we need more bits, make 'em | ||||
| 		if i >= Cap() { | ||||
| 			panic("You are exceeding the capacity") | ||||
| 		} | ||||
| 		nsize := wordsNeeded(i + 1) | ||||
| 		if b.set == nil { | ||||
| 			b.set = make([]uint64, nsize) | ||||
| @@ -160,7 +163,12 @@ func (b *BitSet) Test(i uint) bool { | ||||
| 	return b.set[i>>log2WordSize]&(1<<(i&(wordSize-1))) != 0 | ||||
| } | ||||
|  | ||||
| // Set bit i to 1 | ||||
| // Set bit i to 1, the capacity of the bitset is automatically | ||||
| // increased accordingly. | ||||
| // If i>= Cap(), this function will panic. | ||||
| // Warning: using a very large value for 'i' | ||||
| // may lead to a memory shortage and a panic: the caller is responsible | ||||
| // for providing sensible parameters in line with their memory capacity. | ||||
| func (b *BitSet) Set(i uint) *BitSet { | ||||
| 	b.extendSetMaybe(i) | ||||
| 	b.set[i>>log2WordSize] |= 1 << (i & (wordSize - 1)) | ||||
| @@ -176,7 +184,11 @@ func (b *BitSet) Clear(i uint) *BitSet { | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // SetTo sets bit i to value | ||||
| // SetTo sets bit i to value. | ||||
| // If i>= Cap(), this function will panic. | ||||
| // Warning: using a very large value for 'i' | ||||
| // may lead to a memory shortage and a panic: the caller is responsible | ||||
| // for providing sensible parameters in line with their memory capacity. | ||||
| func (b *BitSet) SetTo(i uint, value bool) *BitSet { | ||||
| 	if value { | ||||
| 		return b.Set(i) | ||||
| @@ -184,7 +196,11 @@ func (b *BitSet) SetTo(i uint, value bool) *BitSet { | ||||
| 	return b.Clear(i) | ||||
| } | ||||
|  | ||||
| // Flip bit at i | ||||
| // Flip bit at i. | ||||
| // If i>= Cap(), this function will panic. | ||||
| // Warning: using a very large value for 'i' | ||||
| // may lead to a memory shortage and a panic: the caller is responsible | ||||
| // for providing sensible parameters in line with their memory capacity. | ||||
| func (b *BitSet) Flip(i uint) *BitSet { | ||||
| 	if i >= b.length { | ||||
| 		return b.Set(i) | ||||
| @@ -193,26 +209,51 @@ func (b *BitSet) Flip(i uint) *BitSet { | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // Shrink shrinks BitSet to desired length in bits. It clears all bits > length | ||||
| // and reduces the size and length of the set. | ||||
| // Shrink shrinks BitSet so that the provided value is the last possible | ||||
| // set value. It clears all bits > the provided index and reduces the size | ||||
| // and length of the set. | ||||
| // | ||||
| // Note that the parameter value is not the new length in bits: it is the | ||||
| // maximal value that can be stored in the bitset after the function call. | ||||
| // The new length in bits is the parameter value + 1. Thus it is not possible | ||||
| // to use this function to set the length to 0, the minimal value of the length | ||||
| // after this function call is 1. | ||||
| // | ||||
| // A new slice is allocated to store the new bits, so you may see an increase in | ||||
| // memory usage until the GC runs. Normally this should not be a problem, but if you | ||||
| // have an extremely large BitSet its important to understand that the old BitSet will | ||||
| // remain in memory until the GC frees it. | ||||
| func (b *BitSet) Shrink(length uint) *BitSet { | ||||
| 	idx := wordsNeeded(length + 1) | ||||
| func (b *BitSet) Shrink(lastbitindex uint) *BitSet { | ||||
| 	length := lastbitindex + 1 | ||||
| 	idx := wordsNeeded(length) | ||||
| 	if idx > len(b.set) { | ||||
| 		return b | ||||
| 	} | ||||
| 	shrunk := make([]uint64, idx) | ||||
| 	copy(shrunk, b.set[:idx]) | ||||
| 	b.set = shrunk | ||||
| 	b.length = length + 1 | ||||
| 	b.set[idx-1] &= (allBits >> (uint64(64) - uint64(length&(wordSize-1)) - 1)) | ||||
| 	b.length = length | ||||
| 	b.set[idx-1] &= (allBits >> (uint64(64) - uint64(length&(wordSize-1)))) | ||||
| 	return b | ||||
| } | ||||
|  | ||||
| // Compact shrinks BitSet to so that we preserve all set bits, while minimizing | ||||
| // memory usage. Compact calls Shrink. | ||||
| func (b *BitSet) Compact() *BitSet { | ||||
| 	idx := len(b.set) - 1 | ||||
| 	for ; idx >= 0 && b.set[idx] == 0; idx-- { | ||||
| 	} | ||||
| 	newlength := uint((idx + 1) << log2WordSize) | ||||
| 	if newlength >= b.length { | ||||
| 		return b // nothing to do | ||||
| 	} | ||||
| 	if newlength > 0 { | ||||
| 		return b.Shrink(newlength - 1) | ||||
| 	} | ||||
| 	// We preserve one word | ||||
| 	return b.Shrink(63) | ||||
| } | ||||
|  | ||||
| // InsertAt takes an index which indicates where a bit should be | ||||
| // inserted. Then it shifts all the bits in the set to the left by 1, starting | ||||
| // from the given index position, and sets the index position to 0. | ||||
| @@ -323,6 +364,9 @@ func (b *BitSet) DeleteAt(i uint) *BitSet { | ||||
| // including possibly the current index | ||||
| // along with an error code (true = valid, false = no set bit found) | ||||
| // for i,e := v.NextSet(0); e; i,e = v.NextSet(i + 1) {...} | ||||
| // | ||||
| // Users concerned with performance may want to use NextSetMany to | ||||
| // retrieve several values at once. | ||||
| func (b *BitSet) NextSet(i uint) (uint, bool) { | ||||
| 	x := int(i >> log2WordSize) | ||||
| 	if x >= len(b.set) { | ||||
| @@ -358,6 +402,14 @@ func (b *BitSet) NextSet(i uint) (uint, bool) { | ||||
| //     j += 1 | ||||
| //    } | ||||
| // | ||||
| // | ||||
| // It is possible to retrieve all set bits as follow: | ||||
| // | ||||
| //    indices := make([]uint, bitmap.Count()) | ||||
| //    bitmap.NextSetMany(0, indices) | ||||
| // | ||||
| // However if bitmap.Count() is large, it might be preferable to | ||||
| // use several calls to NextSetMany, for performance reasons. | ||||
| func (b *BitSet) NextSetMany(i uint, buffer []uint) (uint, []uint) { | ||||
| 	myanswer := buffer | ||||
| 	capacity := cap(buffer) | ||||
| @@ -809,7 +861,7 @@ func (b *BitSet) ReadFrom(stream io.Reader) (int64, error) { | ||||
| 	newset := New(uint(length)) | ||||
|  | ||||
| 	if uint64(newset.length) != length { | ||||
| 		return 0, errors.New("Unmarshalling error: type mismatch") | ||||
| 		return 0, errors.New("unmarshalling error: type mismatch") | ||||
| 	} | ||||
|  | ||||
| 	// Read remaining bytes as set | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/willf/bitset/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/willf/bitset/go.mod
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| module github.com/willf/bitset | ||||
|  | ||||
| go 1.14 | ||||
		Reference in New Issue
	
	Block a user
	 Sebastiaan van Stijn
					Sebastiaan van Stijn