| /* |
| 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" |
| |
| "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.MarshalTo(data) |
| 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) { |
| var i int |
| _ = i |
| var l int |
| _ = l |
| |
| data[i] = 0xa |
| i++ |
| // BEGIN CUSTOM MARSHAL |
| out := m.String() |
| i = encodeVarintGenerated(data, i, uint64(len(out))) |
| i += copy(data[i:], out) |
| // END CUSTOM MARSHAL |
| |
| return i, nil |
| } |
| |
| func encodeVarintGenerated(data []byte, offset int, v uint64) int { |
| for v >= 1<<7 { |
| data[offset] = uint8(v&0x7f | 0x80) |
| v >>= 7 |
| offset++ |
| } |
| data[offset] = uint8(v) |
| return offset + 1 |
| } |
| |
| 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) { |
| for { |
| n++ |
| x >>= 7 |
| if x == 0 { |
| break |
| } |
| } |
| return n |
| } |
| |
| // 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 { |
| 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") |
| ) |