mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-10-26 21:53:51 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			289 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| /*
 | |
| Copyright 2015 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 resource
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"io"
 | |
| 	"math/bits"
 | |
| 
 | |
| 	"github.com/gogo/protobuf/proto"
 | |
| )
 | |
| 
 | |
| var _ proto.Sizer = &Quantity{}
 | |
| 
 | |
| func (m *Quantity) Marshal() (data []byte, err error) {
 | |
| 	size := m.Size()
 | |
| 	data = make([]byte, size)
 | |
| 	n, err := m.MarshalToSizedBuffer(data[:size])
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return data[:n], nil
 | |
| }
 | |
| 
 | |
| // MarshalTo is a customized version of the generated Protobuf unmarshaler for a struct
 | |
| // with a single string field.
 | |
| func (m *Quantity) MarshalTo(data []byte) (int, error) {
 | |
| 	size := m.Size()
 | |
| 	return m.MarshalToSizedBuffer(data[:size])
 | |
| }
 | |
| 
 | |
| // MarshalToSizedBuffer is a customized version of the generated
 | |
| // Protobuf unmarshaler for a struct with a single string field.
 | |
| func (m *Quantity) MarshalToSizedBuffer(data []byte) (int, error) {
 | |
| 	i := len(data)
 | |
| 	_ = i
 | |
| 	var l int
 | |
| 	_ = l
 | |
| 
 | |
| 	// BEGIN CUSTOM MARSHAL
 | |
| 	out := m.String()
 | |
| 	i -= len(out)
 | |
| 	copy(data[i:], out)
 | |
| 	i = encodeVarintGenerated(data, i, uint64(len(out)))
 | |
| 	// END CUSTOM MARSHAL
 | |
| 	i--
 | |
| 	data[i] = 0xa
 | |
| 
 | |
| 	return len(data) - i, nil
 | |
| }
 | |
| 
 | |
| func encodeVarintGenerated(data []byte, offset int, v uint64) int {
 | |
| 	offset -= sovGenerated(v)
 | |
| 	base := offset
 | |
| 	for v >= 1<<7 {
 | |
| 		data[offset] = uint8(v&0x7f | 0x80)
 | |
| 		v >>= 7
 | |
| 		offset++
 | |
| 	}
 | |
| 	data[offset] = uint8(v)
 | |
| 	return base
 | |
| }
 | |
| 
 | |
| func (m *Quantity) Size() (n int) {
 | |
| 	var l int
 | |
| 	_ = l
 | |
| 
 | |
| 	// BEGIN CUSTOM SIZE
 | |
| 	l = len(m.String())
 | |
| 	// END CUSTOM SIZE
 | |
| 
 | |
| 	n += 1 + l + sovGenerated(uint64(l))
 | |
| 	return n
 | |
| }
 | |
| 
 | |
| func sovGenerated(x uint64) (n int) {
 | |
| 	return (bits.Len64(x|1) + 6) / 7
 | |
| }
 | |
| 
 | |
| // Unmarshal is a customized version of the generated Protobuf unmarshaler for a struct
 | |
| // with a single string field.
 | |
| func (m *Quantity) Unmarshal(data []byte) error {
 | |
| 	l := len(data)
 | |
| 	iNdEx := 0
 | |
| 	for iNdEx < l {
 | |
| 		preIndex := iNdEx
 | |
| 		var wire uint64
 | |
| 		for shift := uint(0); ; shift += 7 {
 | |
| 			if shift >= 64 {
 | |
| 				return ErrIntOverflowGenerated
 | |
| 			}
 | |
| 			if iNdEx >= l {
 | |
| 				return io.ErrUnexpectedEOF
 | |
| 			}
 | |
| 			b := data[iNdEx]
 | |
| 			iNdEx++
 | |
| 			wire |= (uint64(b) & 0x7F) << shift
 | |
| 			if b < 0x80 {
 | |
| 				break
 | |
| 			}
 | |
| 		}
 | |
| 		fieldNum := int32(wire >> 3)
 | |
| 		wireType := int(wire & 0x7)
 | |
| 		if wireType == 4 {
 | |
| 			return fmt.Errorf("proto: Quantity: wiretype end group for non-group")
 | |
| 		}
 | |
| 		if fieldNum <= 0 {
 | |
| 			return fmt.Errorf("proto: Quantity: illegal tag %d (wire type %d)", fieldNum, wire)
 | |
| 		}
 | |
| 		switch fieldNum {
 | |
| 		case 1:
 | |
| 			if wireType != 2 {
 | |
| 				return fmt.Errorf("proto: wrong wireType = %d for field String_", wireType)
 | |
| 			}
 | |
| 			var stringLen uint64
 | |
| 			for shift := uint(0); ; shift += 7 {
 | |
| 				if shift >= 64 {
 | |
| 					return ErrIntOverflowGenerated
 | |
| 				}
 | |
| 				if iNdEx >= l {
 | |
| 					return io.ErrUnexpectedEOF
 | |
| 				}
 | |
| 				b := data[iNdEx]
 | |
| 				iNdEx++
 | |
| 				stringLen |= (uint64(b) & 0x7F) << shift
 | |
| 				if b < 0x80 {
 | |
| 					break
 | |
| 				}
 | |
| 			}
 | |
| 			intStringLen := int(stringLen)
 | |
| 			if intStringLen < 0 {
 | |
| 				return ErrInvalidLengthGenerated
 | |
| 			}
 | |
| 			postIndex := iNdEx + intStringLen
 | |
| 			if postIndex > l {
 | |
| 				return io.ErrUnexpectedEOF
 | |
| 			}
 | |
| 			s := string(data[iNdEx:postIndex])
 | |
| 
 | |
| 			// BEGIN CUSTOM DECODE
 | |
| 			p, err := ParseQuantity(s)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			*m = p
 | |
| 			// END CUSTOM DECODE
 | |
| 
 | |
| 			iNdEx = postIndex
 | |
| 		default:
 | |
| 			iNdEx = preIndex
 | |
| 			skippy, err := skipGenerated(data[iNdEx:])
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			if (skippy < 0) || (iNdEx+skippy) < 0 {
 | |
| 				return ErrInvalidLengthGenerated
 | |
| 			}
 | |
| 			if (iNdEx + skippy) > l {
 | |
| 				return io.ErrUnexpectedEOF
 | |
| 			}
 | |
| 			iNdEx += skippy
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	if iNdEx > l {
 | |
| 		return io.ErrUnexpectedEOF
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func skipGenerated(data []byte) (n int, err error) {
 | |
| 	l := len(data)
 | |
| 	iNdEx := 0
 | |
| 	for iNdEx < l {
 | |
| 		var wire uint64
 | |
| 		for shift := uint(0); ; shift += 7 {
 | |
| 			if shift >= 64 {
 | |
| 				return 0, ErrIntOverflowGenerated
 | |
| 			}
 | |
| 			if iNdEx >= l {
 | |
| 				return 0, io.ErrUnexpectedEOF
 | |
| 			}
 | |
| 			b := data[iNdEx]
 | |
| 			iNdEx++
 | |
| 			wire |= (uint64(b) & 0x7F) << shift
 | |
| 			if b < 0x80 {
 | |
| 				break
 | |
| 			}
 | |
| 		}
 | |
| 		wireType := int(wire & 0x7)
 | |
| 		switch wireType {
 | |
| 		case 0:
 | |
| 			for shift := uint(0); ; shift += 7 {
 | |
| 				if shift >= 64 {
 | |
| 					return 0, ErrIntOverflowGenerated
 | |
| 				}
 | |
| 				if iNdEx >= l {
 | |
| 					return 0, io.ErrUnexpectedEOF
 | |
| 				}
 | |
| 				iNdEx++
 | |
| 				if data[iNdEx-1] < 0x80 {
 | |
| 					break
 | |
| 				}
 | |
| 			}
 | |
| 			return iNdEx, nil
 | |
| 		case 1:
 | |
| 			iNdEx += 8
 | |
| 			return iNdEx, nil
 | |
| 		case 2:
 | |
| 			var length int
 | |
| 			for shift := uint(0); ; shift += 7 {
 | |
| 				if shift >= 64 {
 | |
| 					return 0, ErrIntOverflowGenerated
 | |
| 				}
 | |
| 				if iNdEx >= l {
 | |
| 					return 0, io.ErrUnexpectedEOF
 | |
| 				}
 | |
| 				b := data[iNdEx]
 | |
| 				iNdEx++
 | |
| 				length |= (int(b) & 0x7F) << shift
 | |
| 				if b < 0x80 {
 | |
| 					break
 | |
| 				}
 | |
| 			}
 | |
| 			iNdEx += length
 | |
| 			if length < 0 {
 | |
| 				return 0, ErrInvalidLengthGenerated
 | |
| 			}
 | |
| 			return iNdEx, nil
 | |
| 		case 3:
 | |
| 			for {
 | |
| 				var innerWire uint64
 | |
| 				var start int = iNdEx
 | |
| 				for shift := uint(0); ; shift += 7 {
 | |
| 					if shift >= 64 {
 | |
| 						return 0, ErrIntOverflowGenerated
 | |
| 					}
 | |
| 					if iNdEx >= l {
 | |
| 						return 0, io.ErrUnexpectedEOF
 | |
| 					}
 | |
| 					b := data[iNdEx]
 | |
| 					iNdEx++
 | |
| 					innerWire |= (uint64(b) & 0x7F) << shift
 | |
| 					if b < 0x80 {
 | |
| 						break
 | |
| 					}
 | |
| 				}
 | |
| 				innerWireType := int(innerWire & 0x7)
 | |
| 				if innerWireType == 4 {
 | |
| 					break
 | |
| 				}
 | |
| 				next, err := skipGenerated(data[start:])
 | |
| 				if err != nil {
 | |
| 					return 0, err
 | |
| 				}
 | |
| 				iNdEx = start + next
 | |
| 			}
 | |
| 			return iNdEx, nil
 | |
| 		case 4:
 | |
| 			return iNdEx, nil
 | |
| 		case 5:
 | |
| 			iNdEx += 4
 | |
| 			return iNdEx, nil
 | |
| 		default:
 | |
| 			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
 | |
| 		}
 | |
| 	}
 | |
| 	panic("unreachable")
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling")
 | |
| 	ErrIntOverflowGenerated   = fmt.Errorf("proto: integer overflow")
 | |
| )
 | 
