mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-29 21:01:02 +00:00 
			
		
		
		
	Update Structured Merge Diff to V3
This commit is contained in:
		
				
					committed by
					
						 Jennifer Buckley
						Jennifer Buckley
					
				
			
			
				
	
			
			
			
						parent
						
							c9b4cf3d25
						
					
				
				
					commit
					b33fbc84d9
				
			
							
								
								
									
										80
									
								
								vendor/sigs.k8s.io/structured-merge-diff/v3/value/list.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								vendor/sigs.k8s.io/structured-merge-diff/v3/value/list.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| /* | ||||
| Copyright 2019 The Kubernetes Authors. | ||||
|  | ||||
| Licensed 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 value | ||||
|  | ||||
| // List represents a list object. | ||||
| type List interface { | ||||
| 	// Length returns how many items can be found in the map. | ||||
| 	Length() int | ||||
| 	// At returns the item at the given position in the map. It will | ||||
| 	// panic if the index is out of range. | ||||
| 	At(int) Value | ||||
| } | ||||
|  | ||||
| // ListEquals compares two lists lexically. | ||||
| func ListEquals(lhs, rhs List) bool { | ||||
| 	if lhs.Length() != rhs.Length() { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	for i := 0; i < lhs.Length(); i++ { | ||||
| 		lv := lhs.At(i) | ||||
| 		rv := rhs.At(i) | ||||
| 		if !Equals(lv, rv) { | ||||
| 			lv.Recycle() | ||||
| 			rv.Recycle() | ||||
| 			return false | ||||
| 		} | ||||
| 		lv.Recycle() | ||||
| 		rv.Recycle() | ||||
| 	} | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| // ListLess compares two lists lexically. | ||||
| func ListLess(lhs, rhs List) bool { | ||||
| 	return ListCompare(lhs, rhs) == -1 | ||||
| } | ||||
|  | ||||
| // ListCompare compares two lists lexically. The result will be 0 if l==rhs, -1 | ||||
| // if l < rhs, and +1 if l > rhs. | ||||
| func ListCompare(lhs, rhs List) int { | ||||
| 	i := 0 | ||||
| 	for { | ||||
| 		if i >= lhs.Length() && i >= rhs.Length() { | ||||
| 			// Lists are the same length and all items are equal. | ||||
| 			return 0 | ||||
| 		} | ||||
| 		if i >= lhs.Length() { | ||||
| 			// LHS is shorter. | ||||
| 			return -1 | ||||
| 		} | ||||
| 		if i >= rhs.Length() { | ||||
| 			// RHS is shorter. | ||||
| 			return 1 | ||||
| 		} | ||||
| 		lv := lhs.At(i) | ||||
| 		rv := rhs.At(i) | ||||
| 		if c := Compare(lv, rv); c != 0 { | ||||
| 			return c | ||||
| 		} | ||||
| 		lv.Recycle() | ||||
| 		rv.Recycle() | ||||
| 		// The items are equal; continue. | ||||
| 		i++ | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user