mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Update to last common bleve (#3986)
This commit is contained in:
		
				
					committed by
					
						 Lunny Xiao
						Lunny Xiao
					
				
			
			
				
	
			
			
			
						parent
						
							1b7cd3d0b0
						
					
				
				
					commit
					917b9641ec
				
			
							
								
								
									
										163
									
								
								vendor/github.com/RoaringBitmap/roaring/rlecommon.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								vendor/github.com/RoaringBitmap/roaring/rlecommon.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,163 @@ | ||||
| package roaring | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| // common to rle32.go and rle16.go | ||||
|  | ||||
| // rleVerbose controls whether p() prints show up. | ||||
| // The testing package sets this based on | ||||
| // testing.Verbose(). | ||||
| var rleVerbose bool | ||||
|  | ||||
| // p is a shorthand for fmt.Printf with beginning and | ||||
| // trailing newlines. p() makes it easy | ||||
| // to add diagnostic print statements. | ||||
| func p(format string, args ...interface{}) { | ||||
| 	if rleVerbose { | ||||
| 		fmt.Printf("\n"+format+"\n", args...) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // MaxUint32 is the largest uint32 value. | ||||
| const MaxUint32 = 4294967295 | ||||
|  | ||||
| // MaxUint16 is the largest 16 bit unsigned int. | ||||
| // This is the largest value an interval16 can store. | ||||
| const MaxUint16 = 65535 | ||||
|  | ||||
| // searchOptions allows us to accelerate runContainer32.search with | ||||
| // prior knowledge of (mostly lower) bounds. This is used by Union | ||||
| // and Intersect. | ||||
| type searchOptions struct { | ||||
| 	// start here instead of at 0 | ||||
| 	startIndex int64 | ||||
|  | ||||
| 	// upper bound instead of len(rc.iv); | ||||
| 	// endxIndex == 0 means ignore the bound and use | ||||
| 	// endxIndex == n ==len(rc.iv) which is also | ||||
| 	// naturally the default for search() | ||||
| 	// when opt = nil. | ||||
| 	endxIndex int64 | ||||
| } | ||||
|  | ||||
| // And finds the intersection of rc and b. | ||||
| func (rc *runContainer32) And(b *Bitmap) *Bitmap { | ||||
| 	out := NewBitmap() | ||||
| 	for _, p := range rc.iv { | ||||
| 		for i := p.start; i <= p.last; i++ { | ||||
| 			if b.Contains(i) { | ||||
| 				out.Add(i) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // Xor returns the exclusive-or of rc and b. | ||||
| func (rc *runContainer32) Xor(b *Bitmap) *Bitmap { | ||||
| 	out := b.Clone() | ||||
| 	for _, p := range rc.iv { | ||||
| 		for v := p.start; v <= p.last; v++ { | ||||
| 			if out.Contains(v) { | ||||
| 				out.RemoveRange(uint64(v), uint64(v+1)) | ||||
| 			} else { | ||||
| 				out.Add(v) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // Or returns the union of rc and b. | ||||
| func (rc *runContainer32) Or(b *Bitmap) *Bitmap { | ||||
| 	out := b.Clone() | ||||
| 	for _, p := range rc.iv { | ||||
| 		for v := p.start; v <= p.last; v++ { | ||||
| 			out.Add(v) | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // trial is used in the randomized testing of runContainers | ||||
| type trial struct { | ||||
| 	n           int | ||||
| 	percentFill float64 | ||||
| 	ntrial      int | ||||
|  | ||||
| 	// only in the union test | ||||
| 	// only subtract test | ||||
| 	percentDelete float64 | ||||
|  | ||||
| 	// only in 067 randomized operations | ||||
| 	// we do this + 1 passes | ||||
| 	numRandomOpsPass int | ||||
|  | ||||
| 	// allow sampling range control | ||||
| 	// only recent tests respect this. | ||||
| 	srang *interval16 | ||||
| } | ||||
|  | ||||
| // And finds the intersection of rc and b. | ||||
| func (rc *runContainer16) And(b *Bitmap) *Bitmap { | ||||
| 	out := NewBitmap() | ||||
| 	for _, p := range rc.iv { | ||||
| 		plast := p.last() | ||||
| 		for i := p.start; i <= plast; i++ { | ||||
| 			if b.Contains(uint32(i)) { | ||||
| 				out.Add(uint32(i)) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // Xor returns the exclusive-or of rc and b. | ||||
| func (rc *runContainer16) Xor(b *Bitmap) *Bitmap { | ||||
| 	out := b.Clone() | ||||
| 	for _, p := range rc.iv { | ||||
| 		plast := p.last() | ||||
| 		for v := p.start; v <= plast; v++ { | ||||
| 			w := uint32(v) | ||||
| 			if out.Contains(w) { | ||||
| 				out.RemoveRange(uint64(w), uint64(w+1)) | ||||
| 			} else { | ||||
| 				out.Add(w) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // Or returns the union of rc and b. | ||||
| func (rc *runContainer16) Or(b *Bitmap) *Bitmap { | ||||
| 	out := b.Clone() | ||||
| 	for _, p := range rc.iv { | ||||
| 		plast := p.last() | ||||
| 		for v := p.start; v <= plast; v++ { | ||||
| 			out.Add(uint32(v)) | ||||
| 		} | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| //func (rc *runContainer32) and(container) container { | ||||
| //	panic("TODO. not yet implemented") | ||||
| //} | ||||
|  | ||||
| // serializedSizeInBytes returns the number of bytes of memory | ||||
| // required by this runContainer16. This is for the | ||||
| // Roaring format, as specified https://github.com/RoaringBitmap/RoaringFormatSpec/ | ||||
| func (rc *runContainer16) serializedSizeInBytes() int { | ||||
| 	// number of runs in one uint16, then each run | ||||
| 	// needs two more uint16 | ||||
| 	return 2 + len(rc.iv)*4 | ||||
| } | ||||
|  | ||||
| // serializedSizeInBytes returns the number of bytes of memory | ||||
| // required by this runContainer32. | ||||
| func (rc *runContainer32) serializedSizeInBytes() int { | ||||
| 	return 4 + len(rc.iv)*8 | ||||
| } | ||||
		Reference in New Issue
	
	Block a user