Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package v2jsonpb
 
import "google.golang.org/protobuf/reflect/protoreflect"
 
type V2JsonProtobufMapFollower struct {
    protoreflect.Map
    ValueKind protoreflect.FieldDescriptor
}
 
func (v V2JsonProtobufMapFollower) Len() int {
    panic("implement me")
}
 
func (v V2JsonProtobufMapFollower) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {
    v.Map.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool {
        return followMapValue(v.ValueKind, value, key, f)
    })
}
 
func (v V2JsonProtobufMapFollower) Has(key protoreflect.MapKey) bool {
    return v.Map.Has(key)
}
 
func (v V2JsonProtobufMapFollower) Clear(key protoreflect.MapKey) {
    panic("implement me")
}
 
func (v V2JsonProtobufMapFollower) Get(key protoreflect.MapKey) protoreflect.Value {
    panic("implement me")
}
 
func (v V2JsonProtobufMapFollower) Set(key protoreflect.MapKey, value protoreflect.Value) {
    v.Map.Set(key, value)
}
 
func (v V2JsonProtobufMapFollower) Mutable(key protoreflect.MapKey) protoreflect.Value {
    panic("implement me")
}
 
func (v V2JsonProtobufMapFollower) NewValue() protoreflect.Value {
    newelement := v.Map.NewValue()
    return protoreflect.ValueOfMessage(&V2JsonProtobufFollower{newelement.Message()})
}
 
func (v V2JsonProtobufMapFollower) IsValid() bool {
    panic("implement me")
}
 
func followMapValue(descriptor protoreflect.FieldDescriptor, value protoreflect.Value, mapkey protoreflect.MapKey, f func(protoreflect.MapKey, protoreflect.Value) bool) bool {
    if descriptor.Kind() == protoreflect.MessageKind {
        if descriptor.IsList() {
            value2 := protoreflect.ValueOfList(V2JsonProtobufListFollower{value.List()})
            return f(mapkey, value2)
        }
        if descriptor.IsMap() {
            value2 := protoreflect.ValueOfMap(V2JsonProtobufMapFollower{value.Map(), descriptor.MapValue()})
            return f(mapkey, value2)
        }
        value2 := protoreflect.ValueOfMessage(&V2JsonProtobufFollower{value.Message()})
        return f(mapkey, value2)
    }
 
    return f(mapkey, value)
}