Source File
desc_list.go
Belonging Package
google.golang.org/protobuf/internal/filedesc
package filedesc
import (
pref
)
type FileImports []pref.FileImport
func ( *FileImports) () int { return len(*) }
func ( *FileImports) ( int) pref.FileImport { return (*)[] }
func ( *FileImports) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *FileImports) (pragma.DoNotImplement) {}
type Names struct {
List []pref.Name
once sync.Once
has map[pref.Name]int // protected by once
}
func ( *Names) () int { return len(.List) }
func ( *Names) ( int) pref.Name { return .List[] }
func ( *Names) ( pref.Name) bool { return .lazyInit().has[] > 0 }
func ( *Names) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *Names) (pragma.DoNotImplement) {}
func ( *Names) () *Names {
.once.Do(func() {
if len(.List) > 0 {
.has = make(map[pref.Name]int, len(.List))
for , := range .List {
.has[] = .has[] + 1
}
}
})
return
}
return errors.New("invalid name: %q", )
}
}
return nil
}
type EnumRanges struct {
List [][2]pref.EnumNumber // start inclusive; end inclusive
once sync.Once
sorted [][2]pref.EnumNumber // protected by once
}
func ( *EnumRanges) () int { return len(.List) }
func ( *EnumRanges) ( int) [2]pref.EnumNumber { return .List[] }
func ( *EnumRanges) ( pref.EnumNumber) bool {
for := .lazyInit().sorted; len() > 0; {
:= len() / 2
switch := enumRange([]); {
case < .Start():
= [:] // search lower
case > .End():
= [+1:] // search upper
default:
return true
}
}
return false
}
func ( *EnumRanges) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *EnumRanges) (pragma.DoNotImplement) {}
func ( *EnumRanges) () *EnumRanges {
.once.Do(func() {
.sorted = append(.sorted, .List...)
sort.Slice(.sorted, func(, int) bool {
return .sorted[][0] < .sorted[][0]
})
})
return
}
func ( *EnumRanges) () error {
var enumRange
for , := range .lazyInit().sorted {
:= enumRange()
switch {
case !(.Start() <= .End()):
return errors.New("invalid range: %v", )
case !(.End() < .Start()) && > 0:
return errors.New("overlapping ranges: %v with %v", , )
}
=
}
return nil
}
type enumRange [2]protoreflect.EnumNumber
func ( enumRange) () protoreflect.EnumNumber { return [0] } // inclusive
func ( enumRange) () protoreflect.EnumNumber { return [1] } // inclusive
func ( enumRange) () string {
if .Start() == .End() {
return fmt.Sprintf("%d", .Start())
}
return fmt.Sprintf("%d to %d", .Start(), .End())
}
type FieldRanges struct {
List [][2]pref.FieldNumber // start inclusive; end exclusive
once sync.Once
sorted [][2]pref.FieldNumber // protected by once
}
func ( *FieldRanges) () int { return len(.List) }
func ( *FieldRanges) ( int) [2]pref.FieldNumber { return .List[] }
func ( *FieldRanges) ( pref.FieldNumber) bool {
for := .lazyInit().sorted; len() > 0; {
:= len() / 2
switch := fieldRange([]); {
case < .Start():
= [:] // search lower
case > .End():
= [+1:] // search upper
default:
return true
}
}
return false
}
func ( *FieldRanges) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *FieldRanges) (pragma.DoNotImplement) {}
func ( *FieldRanges) () *FieldRanges {
.once.Do(func() {
.sorted = append(.sorted, .List...)
sort.Slice(.sorted, func(, int) bool {
return .sorted[][0] < .sorted[][0]
})
})
return
}
func ( *FieldRanges) ( bool) error {
var fieldRange
for , := range .lazyInit().sorted {
:= fieldRange()
switch {
case !isValidFieldNumber(.Start(), ):
return errors.New("invalid field number: %d", .Start())
case !isValidFieldNumber(.End(), ):
return errors.New("invalid field number: %d", .End())
case !(.Start() <= .End()):
return errors.New("invalid range: %v", )
case !(.End() < .Start()) && > 0:
return errors.New("overlapping ranges: %v with %v", , )
}
=
}
return nil
}
func ( protoreflect.FieldNumber, bool) bool {
return protowire.MinValidNumber <= && ( <= protowire.MaxValidNumber || )
}
func ( *FieldRanges) ( *FieldRanges) error {
:= .lazyInit().sorted
:= .lazyInit().sorted
for , := 0, 0; < len() && < len(); {
:= fieldRange([])
:= fieldRange([])
if !(.End() < .Start() || .End() < .Start()) {
return errors.New("overlapping ranges: %v with %v", , )
}
if .Start() < .Start() {
++
} else {
++
}
}
return nil
}
type fieldRange [2]protoreflect.FieldNumber
func ( fieldRange) () protoreflect.FieldNumber { return [0] } // inclusive
func ( fieldRange) () protoreflect.FieldNumber { return [1] - 1 } // inclusive
func ( fieldRange) () string {
if .Start() == .End() {
return fmt.Sprintf("%d", .Start())
}
return fmt.Sprintf("%d to %d", .Start(), .End())
}
type FieldNumbers struct {
List []pref.FieldNumber
once sync.Once
has map[pref.FieldNumber]struct{} // protected by once
}
func ( *FieldNumbers) () int { return len(.List) }
func ( *FieldNumbers) ( int) pref.FieldNumber { return .List[] }
func ( *FieldNumbers) ( pref.FieldNumber) bool {
.once.Do(func() {
if len(.List) > 0 {
.has = make(map[pref.FieldNumber]struct{}, len(.List))
for , := range .List {
.has[] = struct{}{}
}
}
})
, := .has[]
return
}
func ( *FieldNumbers) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *FieldNumbers) (pragma.DoNotImplement) {}
type OneofFields struct {
List []pref.FieldDescriptor
once sync.Once
byName map[pref.Name]pref.FieldDescriptor // protected by once
byJSON map[string]pref.FieldDescriptor // protected by once
byNum map[pref.FieldNumber]pref.FieldDescriptor // protected by once
}
func ( *OneofFields) () int { return len(.List) }
func ( *OneofFields) ( int) pref.FieldDescriptor { return .List[] }
func ( *OneofFields) ( pref.Name) pref.FieldDescriptor { return .lazyInit().byName[] }
func ( *OneofFields) ( string) pref.FieldDescriptor { return .lazyInit().byJSON[] }
func ( *OneofFields) ( pref.FieldNumber) pref.FieldDescriptor { return .lazyInit().byNum[] }
func ( *OneofFields) ( fmt.State, rune) { descfmt.FormatList(, , ) }
func ( *OneofFields) (pragma.DoNotImplement) {}
func ( *OneofFields) () *OneofFields {
.once.Do(func() {
if len(.List) > 0 {
.byName = make(map[pref.Name]pref.FieldDescriptor, len(.List))
.byJSON = make(map[string]pref.FieldDescriptor, len(.List))
.byNum = make(map[pref.FieldNumber]pref.FieldDescriptor, len(.List))
.byName[.Name()] =
.byJSON[.JSONName()] =
.byNum[.Number()] =
}
}
})
return
}
type SourceLocations struct {
List []pref.SourceLocation
}
func ( *SourceLocations) () int { return len(.List) }
func ( *SourceLocations) ( int) pref.SourceLocation { return .List[] }
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |