mirror of
https://github.com/v2fly/v2ray-core.git
synced 2024-11-19 10:56:06 -05:00
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
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)
|
|
}
|