summaryrefslogtreecommitdiff
path: root/vendor/google.golang.org/protobuf/internal/order
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/protobuf/internal/order')
-rw-r--r--vendor/google.golang.org/protobuf/internal/order/order.go89
-rw-r--r--vendor/google.golang.org/protobuf/internal/order/range.go115
2 files changed, 0 insertions, 204 deletions
diff --git a/vendor/google.golang.org/protobuf/internal/order/order.go b/vendor/google.golang.org/protobuf/internal/order/order.go
deleted file mode 100644
index 2a24953f6..000000000
--- a/vendor/google.golang.org/protobuf/internal/order/order.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2020 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 order
-
-import (
- pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// FieldOrder specifies the ordering to visit message fields.
-// It is a function that reports whether x is ordered before y.
-type FieldOrder func(x, y pref.FieldDescriptor) bool
-
-var (
- // AnyFieldOrder specifies no specific field ordering.
- AnyFieldOrder FieldOrder = nil
-
- // LegacyFieldOrder sorts fields in the same ordering as emitted by
- // wire serialization in the github.com/golang/protobuf implementation.
- LegacyFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
- ox, oy := x.ContainingOneof(), y.ContainingOneof()
- inOneof := func(od pref.OneofDescriptor) bool {
- return od != nil && !od.IsSynthetic()
- }
-
- // Extension fields sort before non-extension fields.
- if x.IsExtension() != y.IsExtension() {
- return x.IsExtension() && !y.IsExtension()
- }
- // Fields not within a oneof sort before those within a oneof.
- if inOneof(ox) != inOneof(oy) {
- return !inOneof(ox) && inOneof(oy)
- }
- // Fields in disjoint oneof sets are sorted by declaration index.
- if ox != nil && oy != nil && ox != oy {
- return ox.Index() < oy.Index()
- }
- // Fields sorted by field number.
- return x.Number() < y.Number()
- }
-
- // NumberFieldOrder sorts fields by their field number.
- NumberFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
- return x.Number() < y.Number()
- }
-
- // IndexNameFieldOrder sorts non-extension fields before extension fields.
- // Non-extensions are sorted according to their declaration index.
- // Extensions are sorted according to their full name.
- IndexNameFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
- // Non-extension fields sort before extension fields.
- if x.IsExtension() != y.IsExtension() {
- return !x.IsExtension() && y.IsExtension()
- }
- // Extensions sorted by fullname.
- if x.IsExtension() && y.IsExtension() {
- return x.FullName() < y.FullName()
- }
- // Non-extensions sorted by declaration index.
- return x.Index() < y.Index()
- }
-)
-
-// KeyOrder specifies the ordering to visit map entries.
-// It is a function that reports whether x is ordered before y.
-type KeyOrder func(x, y pref.MapKey) bool
-
-var (
- // AnyKeyOrder specifies no specific key ordering.
- AnyKeyOrder KeyOrder = nil
-
- // GenericKeyOrder sorts false before true, numeric keys in ascending order,
- // and strings in lexicographical ordering according to UTF-8 codepoints.
- GenericKeyOrder KeyOrder = func(x, y pref.MapKey) bool {
- switch x.Interface().(type) {
- case bool:
- return !x.Bool() && y.Bool()
- case int32, int64:
- return x.Int() < y.Int()
- case uint32, uint64:
- return x.Uint() < y.Uint()
- case string:
- return x.String() < y.String()
- default:
- panic("invalid map key type")
- }
- }
-)
diff --git a/vendor/google.golang.org/protobuf/internal/order/range.go b/vendor/google.golang.org/protobuf/internal/order/range.go
deleted file mode 100644
index c8090e0c5..000000000
--- a/vendor/google.golang.org/protobuf/internal/order/range.go
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2020 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 order provides ordered access to messages and maps.
-package order
-
-import (
- "sort"
- "sync"
-
- pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type messageField struct {
- fd pref.FieldDescriptor
- v pref.Value
-}
-
-var messageFieldPool = sync.Pool{
- New: func() interface{} { return new([]messageField) },
-}
-
-type (
- // FieldRnger is an interface for visiting all fields in a message.
- // The protoreflect.Message type implements this interface.
- FieldRanger interface{ Range(VisitField) }
- // VisitField is called everytime a message field is visited.
- VisitField = func(pref.FieldDescriptor, pref.Value) bool
-)
-
-// RangeFields iterates over the fields of fs according to the specified order.
-func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {
- if less == nil {
- fs.Range(fn)
- return
- }
-
- // Obtain a pre-allocated scratch buffer.
- p := messageFieldPool.Get().(*[]messageField)
- fields := (*p)[:0]
- defer func() {
- if cap(fields) < 1024 {
- *p = fields
- messageFieldPool.Put(p)
- }
- }()
-
- // Collect all fields in the message and sort them.
- fs.Range(func(fd pref.FieldDescriptor, v pref.Value) bool {
- fields = append(fields, messageField{fd, v})
- return true
- })
- sort.Slice(fields, func(i, j int) bool {
- return less(fields[i].fd, fields[j].fd)
- })
-
- // Visit the fields in the specified ordering.
- for _, f := range fields {
- if !fn(f.fd, f.v) {
- return
- }
- }
-}
-
-type mapEntry struct {
- k pref.MapKey
- v pref.Value
-}
-
-var mapEntryPool = sync.Pool{
- New: func() interface{} { return new([]mapEntry) },
-}
-
-type (
- // EntryRanger is an interface for visiting all fields in a message.
- // The protoreflect.Map type implements this interface.
- EntryRanger interface{ Range(VisitEntry) }
- // VisitEntry is called everytime a map entry is visited.
- VisitEntry = func(pref.MapKey, pref.Value) bool
-)
-
-// RangeEntries iterates over the entries of es according to the specified order.
-func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {
- if less == nil {
- es.Range(fn)
- return
- }
-
- // Obtain a pre-allocated scratch buffer.
- p := mapEntryPool.Get().(*[]mapEntry)
- entries := (*p)[:0]
- defer func() {
- if cap(entries) < 1024 {
- *p = entries
- mapEntryPool.Put(p)
- }
- }()
-
- // Collect all entries in the map and sort them.
- es.Range(func(k pref.MapKey, v pref.Value) bool {
- entries = append(entries, mapEntry{k, v})
- return true
- })
- sort.Slice(entries, func(i, j int) bool {
- return less(entries[i].k, entries[j].k)
- })
-
- // Visit the entries in the specified ordering.
- for _, e := range entries {
- if !fn(e.k, e.v) {
- return
- }
- }
-}