Source File
source.go
Belonging Package
google.golang.org/protobuf/reflect/protoreflect
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package protoreflect
import (
)
// SourceLocations is a list of source locations.
type SourceLocations interface {
// Len reports the number of source locations in the proto file.
Len() int
// Get returns the ith SourceLocation. It panics if out of bounds.
Get(int) SourceLocation
// ByPath returns the SourceLocation for the given path,
// returning the first location if multiple exist for the same path.
// If multiple locations exist for the same path,
// then SourceLocation.Next index can be used to identify the
// index of the next SourceLocation.
// If no location exists for this path, it returns the zero value.
ByPath(path SourcePath) SourceLocation
// ByDescriptor returns the SourceLocation for the given descriptor,
// returning the first location if multiple exist for the same path.
// If no location exists for this descriptor, it returns the zero value.
ByDescriptor(desc Descriptor) SourceLocation
doNotImplement
}
// SourceLocation describes a source location and
// corresponds with the google.protobuf.SourceCodeInfo.Location message.
type SourceLocation struct {
// Path is the path to the declaration from the root file descriptor.
// The contents of this slice must not be mutated.
Path SourcePath
// StartLine and StartColumn are the zero-indexed starting location
// in the source file for the declaration.
StartLine, StartColumn int
// EndLine and EndColumn are the zero-indexed ending location
// in the source file for the declaration.
// In the descriptor.proto, the end line may be omitted if it is identical
// to the start line. Here, it is always populated.
EndLine, EndColumn int
// LeadingDetachedComments are the leading detached comments
// for the declaration. The contents of this slice must not be mutated.
LeadingDetachedComments []string
// LeadingComments is the leading attached comment for the declaration.
LeadingComments string
// TrailingComments is the trailing attached comment for the declaration.
TrailingComments string
// Next is an index into SourceLocations for the next source location that
// has the same Path. It is zero if there is no next location.
Next int
}
// SourcePath identifies part of a file descriptor for a source location.
// The SourcePath is a sequence of either field numbers or indexes into
// a repeated field that form a path starting from the root file descriptor.
//
// See google.protobuf.SourceCodeInfo.Location.path.
type SourcePath []int32
// Equal reports whether p1 equals p2.
func ( SourcePath) ( SourcePath) bool {
if len() != len() {
return false
}
for := range {
if [] != [] {
return false
}
}
return true
}
// String formats the path in a humanly readable manner.
// The output is guaranteed to be deterministic,
// making it suitable for use as a key into a Go map.
// It is not guaranteed to be stable as the exact output could change
// in a future version of this module.
//
// Example output:
//
// .message_type[6].nested_type[15].field[3]
func ( SourcePath) () string {
:= .appendFileDescriptorProto(nil)
for , := range {
= append(, '.')
= strconv.AppendInt(, int64(), 10)
}
return string()
}
type appendFunc func(*SourcePath, []byte) []byte
func ( *SourcePath) ( []byte, string, appendFunc) []byte {
if len(*) == 0 {
return
}
= append(, '.')
= append(, ...)
* = (*)[1:]
if != nil {
= (, )
}
return
}
func ( *SourcePath) ( []byte, string, appendFunc) []byte {
= .appendSingularField(, , nil)
if len(*) == 0 || (*)[0] < 0 {
return
}
= append(, '[')
= strconv.AppendUint(, uint64((*)[0]), 10)
= append(, ']')
* = (*)[1:]
if != nil {
= (, )
}
return
}
The pages are generated with Golds v0.4.9. (GOOS=linux GOARCH=amd64)