OLD | NEW |
1 // Copyright 2016 The LUCI Authors. All rights reserved. | 1 // Copyright 2016 The LUCI Authors. All rights reserved. |
2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
4 | 4 |
5 package flagpb | 5 package flagpb |
6 | 6 |
7 import "github.com/luci/luci-go/common/proto/google/descriptor" | 7 import ( |
| 8 » "github.com/luci/luci-go/common/proto/google/descutil" |
| 9 |
| 10 » "google.golang.org/genproto/protobuf" |
| 11 ) |
8 | 12 |
9 // Resolver resolves type names. | 13 // Resolver resolves type names. |
10 type Resolver interface { | 14 type Resolver interface { |
11 // Resolve resolves a type name to | 15 // Resolve resolves a type name to |
12 // *descriptor.DescriptorProto or *descriptor.EnumDescriptorProto. | 16 // *descriptor.DescriptorProto or *descriptor.EnumDescriptorProto. |
13 Resolve(name string) interface{} | 17 Resolve(name string) interface{} |
14 } | 18 } |
15 | 19 |
16 // NewResolver creates a resolver for all types in a file descriptor set. | 20 // NewResolver creates a resolver for all types in a file descriptor set. |
17 // Resolving time complexity is linear. | 21 // Resolving time complexity is linear. |
18 func NewResolver(set *descriptor.FileDescriptorSet) Resolver { | 22 func NewResolver(set *descriptor.FileDescriptorSet) Resolver { |
19 return &descriptorSetResolver{set} | 23 return &descriptorSetResolver{set} |
20 } | 24 } |
21 | 25 |
22 type descriptorSetResolver struct { | 26 type descriptorSetResolver struct { |
23 set *descriptor.FileDescriptorSet | 27 set *descriptor.FileDescriptorSet |
24 } | 28 } |
25 | 29 |
26 func (r *descriptorSetResolver) Resolve(name string) interface{} { | 30 func (r *descriptorSetResolver) Resolve(name string) interface{} { |
27 » _, o, _ := r.set.Resolve(name) | 31 » _, o, _ := descutil.Resolve(r.set, name) |
28 switch o := o.(type) { | 32 switch o := o.(type) { |
29 case *descriptor.DescriptorProto, *descriptor.EnumDescriptorProto: | 33 case *descriptor.DescriptorProto, *descriptor.EnumDescriptorProto: |
30 return o | 34 return o |
31 default: | 35 default: |
32 return nil | 36 return nil |
33 } | 37 } |
34 } | 38 } |
OLD | NEW |