MCPcopy Create free account
hub / github.com/google/go-cloud / encode

Function encode

docstore/driver/codec.go:118–208  ·  view source on GitHub ↗
(v reflect.Value, enc Encoder)

Source from the content-addressed store, hash-verified

116}
117
118func encode(v reflect.Value, enc Encoder) error {
119 if !v.IsValid() {
120 enc.EncodeNil()
121 return nil
122 }
123 done, err := enc.EncodeSpecial(v)
124 if done {
125 return err
126 }
127 if v.Type().Implements(binaryMarshalerType) {
128 bytes, err := v.Interface().(encoding.BinaryMarshaler).MarshalBinary()
129 if err != nil {
130 return err
131 }
132 enc.EncodeBytes(bytes)
133 return nil
134 }
135 if v.Type().Implements(protoMessageType) {
136 if v.IsNil() {
137 enc.EncodeNil()
138 } else {
139 bytes, err := proto.Marshal(v.Interface().(proto.Message))
140 if err != nil {
141 return err
142 }
143 enc.EncodeBytes(bytes)
144 }
145 return nil
146 }
147 if reflect.PtrTo(v.Type()).Implements(protoMessageType) {
148 bytes, err := proto.Marshal(v.Addr().Interface().(proto.Message))
149 if err != nil {
150 return err
151 }
152 enc.EncodeBytes(bytes)
153 return nil
154 }
155 if v.Type().Implements(textMarshalerType) {
156 bytes, err := v.Interface().(encoding.TextMarshaler).MarshalText()
157 if err != nil {
158 return err
159 }
160 enc.EncodeString(string(bytes))
161 return nil
162 }
163 switch v.Kind() {
164 case reflect.Bool:
165 enc.EncodeBool(v.Bool())
166 case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
167 enc.EncodeInt(v.Int())
168 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
169 enc.EncodeUint(v.Uint())
170 case reflect.Float32, reflect.Float64:
171 enc.EncodeFloat(v.Float())
172 case reflect.String:
173 enc.EncodeString(v.String())
174 case reflect.Slice:
175 if v.IsNil() {

Callers 6

EncodeFunction · 0.85
encodeListFunction · 0.85
encodeMapFunction · 0.85
encodeStructWithFieldsFunction · 0.85
testTypeDrivenDecodeFunction · 0.85
testBlindDecode1Function · 0.85

Calls 15

NewfFunction · 0.92
encodeListFunction · 0.85
encodeMapFunction · 0.85
encodeStructWithFieldsFunction · 0.85
FieldsMethod · 0.80
EncodeNilMethod · 0.65
EncodeSpecialMethod · 0.65
EncodeBytesMethod · 0.65
EncodeStringMethod · 0.65
EncodeBoolMethod · 0.65
EncodeIntMethod · 0.65
EncodeUintMethod · 0.65

Tested by

no test coverage detected