You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
394 lines
14 KiB
394 lines
14 KiB
#Region "Microsoft.VisualBasic::c0bba5cb6c08d7a6905a7029cb923c88, Google.Protobuf\WellKnownTypes\FieldMask.vb"
|
|
|
|
' Author:
|
|
'
|
|
' asuka (amethyst.asuka@gcmodeller.org)
|
|
' xie (genetics@smrucc.org)
|
|
' xieguigang (xie.guigang@live.com)
|
|
'
|
|
' Copyright (c) 2018 GPL3 Licensed
|
|
'
|
|
'
|
|
' GNU GENERAL PUBLIC LICENSE (GPL3)
|
|
'
|
|
'
|
|
' This program is free software: you can redistribute it and/or modify
|
|
' it under the terms of the GNU General Public License as published by
|
|
' the Free Software Foundation, either version 3 of the License, or
|
|
' (at your option) any later version.
|
|
'
|
|
' This program is distributed in the hope that it will be useful,
|
|
' but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
' GNU General Public License for more details.
|
|
'
|
|
' You should have received a copy of the GNU General Public License
|
|
' along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
|
|
' /********************************************************************************/
|
|
|
|
' Summaries:
|
|
|
|
' Class FieldMask
|
|
'
|
|
' Properties: Descriptor, DescriptorProp, Parser, Paths
|
|
'
|
|
' Constructor: (+2 Overloads) Sub New
|
|
'
|
|
' Function: CalculateSize, Clone, (+2 Overloads) Equals, GetHashCode, ToString
|
|
'
|
|
' Sub: (+2 Overloads) MergeFrom, OnConstruction, WriteTo
|
|
'
|
|
'
|
|
' /********************************************************************************/
|
|
|
|
#End Region
|
|
|
|
' Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
' source: google/protobuf/field_mask.proto
|
|
#Region "Designer generated code"
|
|
|
|
Imports Microsoft.VisualBasic.Language
|
|
Imports pbc = Google.Protobuf.Collections
|
|
Imports pbr = Google.Protobuf.Reflection
|
|
|
|
Namespace Google.Protobuf.WellKnownTypes
|
|
|
|
#Region "Messages"
|
|
''' <summary>
|
|
''' `FieldMask` represents a set of symbolic field paths, for example:
|
|
'''
|
|
''' paths: "f.a"
|
|
''' paths: "f.b.d"
|
|
'''
|
|
''' Here `f` represents a field in some root message, `a` and `b`
|
|
''' fields in the message found in `f`, and `d` a field found in the
|
|
''' message in `f.b`.
|
|
'''
|
|
''' Field masks are used to specify a subset of fields that should be
|
|
''' returned by a get operation or modified by an update operation.
|
|
''' Field masks also have a custom JSON encoding (see below).
|
|
'''
|
|
''' # Field Masks in Projections
|
|
'''
|
|
''' When used in the context of a projection, a response message or
|
|
''' sub-message is filtered by the API to only contain those fields as
|
|
''' specified in the mask. For example, if the mask in the previous
|
|
''' example is applied to a response message as follows:
|
|
'''
|
|
''' f {
|
|
''' a : 22
|
|
''' b {
|
|
''' d : 1
|
|
''' x : 2
|
|
''' }
|
|
''' y : 13
|
|
''' }
|
|
''' z: 8
|
|
'''
|
|
''' The result will not contain specific values for fields x,y and z
|
|
''' (their value will be set to the default, and omitted in proto text
|
|
''' output):
|
|
'''
|
|
''' f {
|
|
''' a : 22
|
|
''' b {
|
|
''' d : 1
|
|
''' }
|
|
''' }
|
|
'''
|
|
''' A repeated field is not allowed except at the last position of a
|
|
''' field mask.
|
|
'''
|
|
''' If a FieldMask object is not present in a get operation, the
|
|
''' operation applies to all fields (as if a FieldMask of all fields
|
|
''' had been specified).
|
|
'''
|
|
''' Note that a field mask does not necessarily apply to the
|
|
''' top-level response message. In case of a REST get operation, the
|
|
''' field mask applies directly to the response, but in case of a REST
|
|
''' list operation, the mask instead applies to each individual message
|
|
''' in the returned resource list. In case of a REST custom method,
|
|
''' other definitions may be used. Where the mask applies will be
|
|
''' clearly documented together with its declaration in the API. In
|
|
''' any case, the effect on the returned resource/resources is required
|
|
''' behavior for APIs.
|
|
'''
|
|
''' # Field Masks in Update Operations
|
|
'''
|
|
''' A field mask in update operations specifies which fields of the
|
|
''' targeted resource are going to be updated. The API is required
|
|
''' to only change the values of the fields as specified in the mask
|
|
''' and leave the others untouched. If a resource is passed in to
|
|
''' describe the updated values, the API ignores the values of all
|
|
''' fields not covered by the mask.
|
|
'''
|
|
''' If a repeated field is specified for an update operation, the existing
|
|
''' repeated values in the target resource will be overwritten by the new values.
|
|
''' Note that a repeated field is only allowed in the last position of a field
|
|
''' mask.
|
|
'''
|
|
''' If a sub-message is specified in the last position of the field mask for an
|
|
''' update operation, then the existing sub-message in the target resource is
|
|
''' overwritten. Given the target message:
|
|
'''
|
|
''' f {
|
|
''' b {
|
|
''' d : 1
|
|
''' x : 2
|
|
''' }
|
|
''' c : 1
|
|
''' }
|
|
'''
|
|
''' And an update message:
|
|
'''
|
|
''' f {
|
|
''' b {
|
|
''' d : 10
|
|
''' }
|
|
''' }
|
|
'''
|
|
''' then if the field mask is:
|
|
'''
|
|
''' paths: "f.b"
|
|
'''
|
|
''' then the result will be:
|
|
'''
|
|
''' f {
|
|
''' b {
|
|
''' d : 10
|
|
''' }
|
|
''' c : 1
|
|
''' }
|
|
'''
|
|
''' However, if the update mask was:
|
|
'''
|
|
''' paths: "f.b.d"
|
|
'''
|
|
''' then the result would be:
|
|
'''
|
|
''' f {
|
|
''' b {
|
|
''' d : 10
|
|
''' x : 2
|
|
''' }
|
|
''' c : 1
|
|
''' }
|
|
'''
|
|
''' In order to reset a field's value to the default, the field must
|
|
''' be in the mask and set to the default value in the provided resource.
|
|
''' Hence, in order to reset all fields of a resource, provide a default
|
|
''' instance of the resource and set all fields in the mask, or do
|
|
''' not provide a mask as described below.
|
|
'''
|
|
''' If a field mask is not present on update, the operation applies to
|
|
''' all fields (as if a field mask of all fields has been specified).
|
|
''' Note that in the presence of schema evolution, this may mean that
|
|
''' fields the client does not know and has therefore not filled into
|
|
''' the request will be reset to their default. If this is unwanted
|
|
''' behavior, a specific service may require a client to always specify
|
|
''' a field mask, producing an error if not.
|
|
'''
|
|
''' As with get operations, the location of the resource which
|
|
''' describes the updated values in the request message depends on the
|
|
''' operation kind. In any case, the effect of the field mask is
|
|
''' required to be honored by the API.
|
|
'''
|
|
''' ## Considerations for HTTP REST
|
|
'''
|
|
''' The HTTP kind of an update operation which uses a field mask must
|
|
''' be set to PATCH instead of PUT in order to satisfy HTTP semantics
|
|
''' (PUT must only be used for full updates).
|
|
'''
|
|
''' # JSON Encoding of Field Masks
|
|
'''
|
|
''' In JSON, a field mask is encoded as a single string where paths are
|
|
''' separated by a comma. Fields name in each path are converted
|
|
''' to/from lower-camel naming conventions.
|
|
'''
|
|
''' As an example, consider the following message declarations:
|
|
'''
|
|
''' message Profile {
|
|
''' User user = 1;
|
|
''' Photo photo = 2;
|
|
''' }
|
|
''' message User {
|
|
''' string display_name = 1;
|
|
''' string address = 2;
|
|
''' }
|
|
'''
|
|
''' In proto a field mask for `Profile` may look as such:
|
|
'''
|
|
''' mask {
|
|
''' paths: "user.display_name"
|
|
''' paths: "photo"
|
|
''' }
|
|
'''
|
|
''' In JSON, the same mask is represented as below:
|
|
'''
|
|
''' {
|
|
''' mask: "user.displayName,photo"
|
|
''' }
|
|
'''
|
|
''' # Field Masks and Oneof Fields
|
|
'''
|
|
''' Field masks treat fields in oneofs just as regular fields. Consider the
|
|
''' following message:
|
|
'''
|
|
''' message SampleMessage {
|
|
''' oneof test_oneof {
|
|
''' string name = 4;
|
|
''' SubMessage sub_message = 9;
|
|
''' }
|
|
''' }
|
|
'''
|
|
''' The field mask can be:
|
|
'''
|
|
''' mask {
|
|
''' paths: "name"
|
|
''' }
|
|
'''
|
|
''' Or:
|
|
'''
|
|
''' mask {
|
|
''' paths: "sub_message"
|
|
''' }
|
|
'''
|
|
''' Note that oneof type names ("test_oneof" in this case) cannot be used in
|
|
''' paths.
|
|
''' </summary>
|
|
Public NotInheritable Partial Class FieldMask
|
|
Implements IMessageType(Of FieldMask)
|
|
|
|
Private Shared ReadOnly _parser As MessageParserType(Of FieldMask) = New MessageParserType(Of FieldMask)(Function() New FieldMask())
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Shared ReadOnly Property Parser As MessageParserType(Of FieldMask)
|
|
Get
|
|
Return _parser
|
|
End Get
|
|
End Property
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Shared ReadOnly Property DescriptorProp As pbr.MessageDescriptor
|
|
Get
|
|
Return Global.Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor.MessageTypes(0)
|
|
End Get
|
|
End Property
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Private ReadOnly Property Descriptor As pbr.MessageDescriptor Implements IMessage.Descriptor
|
|
Get
|
|
Return DescriptorProp
|
|
End Get
|
|
End Property
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Sub New()
|
|
OnConstruction()
|
|
End Sub
|
|
|
|
Partial Private Sub OnConstruction()
|
|
End Sub
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Sub New(other As FieldMask)
|
|
Me.New()
|
|
paths_ = other.paths_.Clone()
|
|
End Sub
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Function Clone() As FieldMask Implements IDeepCloneable(Of FieldMask).Clone
|
|
Return New FieldMask(Me)
|
|
End Function
|
|
|
|
''' <summary>Field number for the "paths" field.</summary>
|
|
Public Const PathsFieldNumber As Integer = 1
|
|
Private Shared ReadOnly _repeated_paths_codec As FieldCodecType(Of String) = ForString(10)
|
|
Private ReadOnly paths_ As pbc.RepeatedField(Of String) = New pbc.RepeatedField(Of String)()
|
|
''' <summary>
|
|
''' The set of field mask paths.
|
|
''' </summary>
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public ReadOnly Property Paths As pbc.RepeatedField(Of String)
|
|
Get
|
|
Return paths_
|
|
End Get
|
|
End Property
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Overrides Function Equals(other As Object) As Boolean
|
|
Return Equals(TryCast(other, FieldMask))
|
|
End Function
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Overloads Function Equals(other As FieldMask) As Boolean Implements IEquatable(Of FieldMask).Equals
|
|
If ReferenceEquals(other, Nothing) Then
|
|
Return False
|
|
End If
|
|
|
|
If ReferenceEquals(other, Me) Then
|
|
Return True
|
|
End If
|
|
|
|
If Not paths_.Equals(other.paths_) Then Return False
|
|
Return True
|
|
End Function
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Overrides Function GetHashCode() As Integer
|
|
Dim hash = 1
|
|
hash = hash Xor paths_.GetHashCode()
|
|
Return hash
|
|
End Function
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Overrides Function ToString() As String
|
|
Return JsonFormatter.ToDiagnosticString(Me)
|
|
End Function
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Sub WriteTo(output As CodedOutputStream) Implements IMessage.WriteTo
|
|
paths_.WriteTo(output, _repeated_paths_codec)
|
|
End Sub
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Function CalculateSize() As Integer Implements IMessage.CalculateSize
|
|
Dim size = 0
|
|
size += paths_.CalculateSize(_repeated_paths_codec)
|
|
Return size
|
|
End Function
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Sub MergeFrom(other As FieldMask) Implements IMessageType(Of FieldMask).MergeFrom
|
|
If other Is Nothing Then
|
|
Return
|
|
End If
|
|
|
|
paths_.Add(other.paths_)
|
|
End Sub
|
|
|
|
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute>
|
|
Public Sub MergeFrom(input As CodedInputStream) Implements IMessage.MergeFrom
|
|
Dim tag As New Value(Of UInteger)
|
|
|
|
While ((tag = input.ReadTag())) <> 0
|
|
|
|
Select Case tag.Value
|
|
Case 10
|
|
paths_.AddEntriesFrom(input, _repeated_paths_codec)
|
|
|
|
Case Else
|
|
input.SkipLastField()
|
|
End Select
|
|
End While
|
|
End Sub
|
|
End Class
|
|
|
|
#End Region
|
|
|
|
End Namespace
|
|
#End Region
|