Package dev.cel.expr

Class Expr.Comprehension

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, Expr.ComprehensionOrBuilder, java.io.Serializable
    Enclosing class:
    Expr

    public static final class Expr.Comprehension
    extends com.google.protobuf.GeneratedMessage
    implements Expr.ComprehensionOrBuilder
     A comprehension expression applied to a list or map.
    
     Comprehensions are not part of the core syntax, but enabled with macros.
     A macro matches a specific call signature within a parsed AST and replaces
     the call with an alternate AST block. Macro expansion happens at parse
     time.
    
     The following macros are supported within CEL:
    
     Aggregate type macros may be applied to all elements in a list or all keys
     in a map:
    
     *  `all`, `exists`, `exists_one` -  test a predicate expression against
     the inputs and return `true` if the predicate is satisfied for all,
     any, or only one value `list.all(x, x < 10)`.
     *  `filter` - test a predicate expression against the inputs and return
     the subset of elements which satisfy the predicate:
     `payments.filter(p, p > 1000)`.
     *  `map` - apply an expression to all elements in the input and return the
     output aggregate type: `[1, 2, 3].map(i, i * i)`.
    
     The `has(m.x)` macro tests whether the property `x` is present in struct
     `m`. The semantics of this macro depend on the type of `m`. For proto2
     messages `has(m.x)` is defined as 'defined, but not set`. For proto3, the
     macro tests whether the property is set to its default. For map and struct
     types, the macro tests whether the property `x` is defined on `m`.
    
     Comprehension evaluation can be best visualized as the following
     pseudocode:
    
     ```
     let `accu_var` = `accu_init`
     for (let `iter_var` in `iter_range`) {
     if (!`loop_condition`) {
     break
     }
     `accu_var` = `loop_step`
     }
     return `result`
     ```
     
    Protobuf type cel.expr.Expr.Comprehension
    See Also:
    Serialized Form
    • Field Detail

      • bitField0_

        private int bitField0_
      • iterVar_

        private volatile java.lang.Object iterVar_
      • ITER_RANGE_FIELD_NUMBER

        public static final int ITER_RANGE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • iterRange_

        private Expr iterRange_
      • accuVar_

        private volatile java.lang.Object accuVar_
      • accuInit_

        private Expr accuInit_
      • LOOP_CONDITION_FIELD_NUMBER

        public static final int LOOP_CONDITION_FIELD_NUMBER
        See Also:
        Constant Field Values
      • loopCondition_

        private Expr loopCondition_
      • loopStep_

        private Expr loopStep_
      • result_

        private Expr result_
      • memoizedIsInitialized

        private byte memoizedIsInitialized
    • Constructor Detail

      • Comprehension

        private Comprehension​(com.google.protobuf.GeneratedMessage.Builder<?> builder)
      • Comprehension

        private Comprehension()
    • Method Detail

      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage
      • getIterVar

        public java.lang.String getIterVar()
         The name of the iteration variable.
         
        string iter_var = 1;
        Specified by:
        getIterVar in interface Expr.ComprehensionOrBuilder
        Returns:
        The iterVar.
      • getIterVarBytes

        public com.google.protobuf.ByteString getIterVarBytes()
         The name of the iteration variable.
         
        string iter_var = 1;
        Specified by:
        getIterVarBytes in interface Expr.ComprehensionOrBuilder
        Returns:
        The bytes for iterVar.
      • hasIterRange

        public boolean hasIterRange()
         The range over which var iterates.
         
        .cel.expr.Expr iter_range = 2;
        Specified by:
        hasIterRange in interface Expr.ComprehensionOrBuilder
        Returns:
        Whether the iterRange field is set.
      • getAccuVar

        public java.lang.String getAccuVar()
         The name of the variable used for accumulation of the result.
         
        string accu_var = 3;
        Specified by:
        getAccuVar in interface Expr.ComprehensionOrBuilder
        Returns:
        The accuVar.
      • getAccuVarBytes

        public com.google.protobuf.ByteString getAccuVarBytes()
         The name of the variable used for accumulation of the result.
         
        string accu_var = 3;
        Specified by:
        getAccuVarBytes in interface Expr.ComprehensionOrBuilder
        Returns:
        The bytes for accuVar.
      • hasAccuInit

        public boolean hasAccuInit()
         The initial value of the accumulator.
         
        .cel.expr.Expr accu_init = 4;
        Specified by:
        hasAccuInit in interface Expr.ComprehensionOrBuilder
        Returns:
        Whether the accuInit field is set.
      • hasLoopCondition

        public boolean hasLoopCondition()
         An expression which can contain iter_var and accu_var.
        
         Returns false when the result has been computed and may be used as
         a hint to short-circuit the remainder of the comprehension.
         
        .cel.expr.Expr loop_condition = 5;
        Specified by:
        hasLoopCondition in interface Expr.ComprehensionOrBuilder
        Returns:
        Whether the loopCondition field is set.
      • getLoopCondition

        public Expr getLoopCondition()
         An expression which can contain iter_var and accu_var.
        
         Returns false when the result has been computed and may be used as
         a hint to short-circuit the remainder of the comprehension.
         
        .cel.expr.Expr loop_condition = 5;
        Specified by:
        getLoopCondition in interface Expr.ComprehensionOrBuilder
        Returns:
        The loopCondition.
      • getLoopConditionOrBuilder

        public ExprOrBuilder getLoopConditionOrBuilder()
         An expression which can contain iter_var and accu_var.
        
         Returns false when the result has been computed and may be used as
         a hint to short-circuit the remainder of the comprehension.
         
        .cel.expr.Expr loop_condition = 5;
        Specified by:
        getLoopConditionOrBuilder in interface Expr.ComprehensionOrBuilder
      • hasLoopStep

        public boolean hasLoopStep()
         An expression which can contain iter_var and accu_var.
        
         Computes the next value of accu_var.
         
        .cel.expr.Expr loop_step = 6;
        Specified by:
        hasLoopStep in interface Expr.ComprehensionOrBuilder
        Returns:
        Whether the loopStep field is set.
      • getLoopStep

        public Expr getLoopStep()
         An expression which can contain iter_var and accu_var.
        
         Computes the next value of accu_var.
         
        .cel.expr.Expr loop_step = 6;
        Specified by:
        getLoopStep in interface Expr.ComprehensionOrBuilder
        Returns:
        The loopStep.
      • hasResult

        public boolean hasResult()
         An expression which can contain accu_var.
        
         Computes the result.
         
        .cel.expr.Expr result = 7;
        Specified by:
        hasResult in interface Expr.ComprehensionOrBuilder
        Returns:
        Whether the result field is set.
      • getResult

        public Expr getResult()
         An expression which can contain accu_var.
        
         Computes the result.
         
        .cel.expr.Expr result = 7;
        Specified by:
        getResult in interface Expr.ComprehensionOrBuilder
        Returns:
        The result.
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessage
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws java.io.IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessage
        Throws:
        java.io.IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessage
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static Expr.Comprehension parseFrom​(java.nio.ByteBuffer data)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(java.nio.ByteBuffer data,
                                                   com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(com.google.protobuf.ByteString data)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(com.google.protobuf.ByteString data,
                                                   com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(byte[] data)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(byte[] data,
                                                   com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                            throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Expr.Comprehension parseFrom​(java.io.InputStream input)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Expr.Comprehension parseFrom​(java.io.InputStream input,
                                                   com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static Expr.Comprehension parseDelimitedFrom​(java.io.InputStream input)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static Expr.Comprehension parseDelimitedFrom​(java.io.InputStream input,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Expr.Comprehension parseFrom​(com.google.protobuf.CodedInputStream input)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Expr.Comprehension parseFrom​(com.google.protobuf.CodedInputStream input,
                                                   com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • newBuilderForType

        public Expr.Comprehension.Builder newBuilderForType()
        Specified by:
        newBuilderForType in interface com.google.protobuf.Message
        Specified by:
        newBuilderForType in interface com.google.protobuf.MessageLite
      • toBuilder

        public Expr.Comprehension.Builder toBuilder()
        Specified by:
        toBuilder in interface com.google.protobuf.Message
        Specified by:
        toBuilder in interface com.google.protobuf.MessageLite
      • newBuilderForType

        protected Expr.Comprehension.Builder newBuilderForType​(com.google.protobuf.AbstractMessage.BuilderParent parent)
        Overrides:
        newBuilderForType in class com.google.protobuf.AbstractMessage
      • getParserForType

        public com.google.protobuf.Parser<Expr.Comprehension> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessage
      • getDefaultInstanceForType

        public Expr.Comprehension getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder