jif.types.label

## Class ProviderLabel_c

- java.lang.Object
- - polyglot.types.TypeObject_c
  - - jif.types.Param_c
    - - jif.types.label.Label_c
      - - jif.types.label.ProviderLabel_c

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, ActsForParam, Label, ProviderLabel, Param, polyglot.types.TypeObject, polyglot.util.Copy<polyglot.types.TypeObject>

      public class ProviderLabel_c
      extends Label_c
      implements ProviderLabel

  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface polyglot.util.Copy

      `polyglot.util.Copy.Util`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected JifClassType` | `classType` The class that this is labelling.
    `protected boolean` | `isTrusted`

    - ### Fields inherited from class jif.types.label.Label_c

      `description, toJava, variables`

    - ### Fields inherited from class polyglot.types.TypeObject_c

      `position, ts`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProviderLabel_c(JifClassType classType, LabelToJavaExpr toJava)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `JifClassType` | `classType()`
    `java.lang.String` | `componentString(java.util.Set<Label> printedLabels)` return a string s such that {s} is a label
    `ConfPolicy` | `confProjection()`
    `boolean` | `equalsImpl(polyglot.types.TypeObject t)`
    `IntegPolicy` | `integProjection()`
    `boolean` | `isBottom()` By default, a label is not Bottom
    `boolean` | `isCanonical()`
    `boolean` | `isComparable()` Is this label comparable to other labels?
    `boolean` | `isCovariant()` Is this label covariant?
    `protected boolean` | `isDisambiguatedImpl()` Check if the label is disambiguated, without recursing into child labels.
    `boolean` | `isEnumerable()` Are the components of this label enumerable?
    `boolean` | `isRuntimeRepresentable()`
    `boolean` | `isTrusted()`
    `boolean` | `leq_(Label L, LabelEnv H, LabelEnv.SearchState state)` Implementation of leq, should only be called by JifTypeSystem
    `ProviderLabel` | `position(polyglot.util.Position pos)`
    `java.lang.String` | `toString(java.util.Set<Label> printedLabels)` return a string representation of the label.

    - ### Methods inherited from class jif.types.label.Label_c

      `componentString, copy, description, hasVariableComponents, hasVariables, hasWritersToReaders, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, simplifyImpl, subst, throwTypes, toJava, toJava, toString, variableComponents, variables`

    - ### Methods inherited from class jif.types.Param_c

      `typeSystem`

    - ### Methods inherited from class polyglot.types.TypeObject_c

      `equals, hashCode, position`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface jif.types.label.Label

      `componentString, copy, description, hasVariableComponents, hasVariables, hasWritersToReaders, isDisambiguated, isInvariant, isTop, labelCheck, normalize, setDescription, simplify, subst, throwTypes, toJava, toString, variableComponents, variables`

    - ### Methods inherited from interface jif.types.ActsForParam

      `toJava`

    - ### Methods inherited from interface jif.types.Param

      `typeSystem`

    - ### Methods inherited from interface polyglot.types.TypeObject

      `position`

- - ### Field Detail

    - #### classType

          protected JifClassType classType

      The class that this is labelling.

    - #### isTrusted

          protected boolean isTrusted

  - ### Constructor Detail

    - #### ProviderLabel_c

          public ProviderLabel_c(JifClassType classType,
                                 LabelToJavaExpr toJava)

  - ### Method Detail

    - #### position

          public ProviderLabel position(polyglot.util.Position pos)

      Specified by:
        `position` in interface `ProviderLabel`

    - #### classType

          public JifClassType classType()

      Specified by:
        `classType` in interface `ProviderLabel`
      Returns:
        the class type labelled by this label.

    - #### confProjection

          public ConfPolicy confProjection()

      Specified by:
        `confProjection` in interface `Label`
      Overrides:
        `confProjection` in class `Label_c`

    - #### integProjection

          public IntegPolicy integProjection()

      Specified by:
        `integProjection` in interface `Label`
      Overrides:
        `integProjection` in class `Label_c`

    - #### isBottom

          public boolean isBottom()

      Description copied from class: `Label_c`
      By default, a label is not Bottom
      Specified by:
        `isBottom` in interface `Label`
      Overrides:
        `isBottom` in class `Label_c`

    - #### isTrusted

          public boolean isTrusted()

      Specified by:
        `isTrusted` in interface `ProviderLabel`
      Returns:
        whether this is a trusted provider.

    - #### isCovariant

          public boolean isCovariant()

      Description copied from interface: `Label`
      Is this label covariant?
      Specified by:
        `isCovariant` in interface `Label`

    - #### isComparable

          public boolean isComparable()

      Description copied from interface: `Label`
      Is this label comparable to other labels?

      For example, an UnknownLabel is not comparable to others, neither is a VarLabel. Most other labels are.

      Specified by:
        `isComparable` in interface `Label`

    - #### isEnumerable

          public boolean isEnumerable()

      Description copied from interface: `Label`
      Are the components of this label enumerable?

      For example, Singletons are enumerable, JoinLabels are enumerable, RuntimeLabel (the label of all runtime representable components) is not enumerable. NOTE: The components of a label are not neccessarily stuck together with a join operation. For example, the MeetLabel uses the meet operation between its components.

      Specified by:
        `isEnumerable` in interface `Label`

    - #### leq_

          public boolean leq_(Label L,
                              LabelEnv H,
                              LabelEnv.SearchState state)

      Description copied from interface: `Label`
      Implementation of leq, should only be called by JifTypeSystem
      Specified by:
        `leq_` in interface `Label`
      Parameters:
        `L` - the label to determine if this label is leq to. This label always satisfies !this.equals(L)
        `H` - the label environment (including principal hierarchy). Will always be non-null.

    - #### isRuntimeRepresentable

          public boolean isRuntimeRepresentable()

      Specified by:
        `isRuntimeRepresentable` in interface `Label`
      Specified by:
        `isRuntimeRepresentable` in interface `Param`

    - #### isCanonical

          public boolean isCanonical()

      Specified by:
        `isCanonical` in interface `Param`
      Specified by:
        `isCanonical` in interface `polyglot.types.TypeObject`

    - #### isDisambiguatedImpl

          protected boolean isDisambiguatedImpl()

      Description copied from class: `Label_c`
      Check if the label is disambiguated, without recursing into child labels.
      Specified by:
        `isDisambiguatedImpl` in class `Label_c`

    - #### toString

          public java.lang.String toString(java.util.Set<Label> printedLabels)

      Description copied from interface: `Label`
      return a string representation of the label.
      Specified by:
        `toString` in interface `Label`
      Overrides:
        `toString` in class `Label_c`
      Parameters:
        `printedLabels` - the set of labels for which auxiliary information should be omitted.

    - #### componentString

          public java.lang.String componentString(java.util.Set<Label> printedLabels)

      Description copied from interface: `Label`
      return a string s such that {s} is a label
      Specified by:
        `componentString` in interface `Label`
      Specified by:
        `componentString` in class `Label_c`
      Parameters:
        `printedLabels` - the set of labels for which auxiliary information should be omitted.

    - #### equalsImpl

          public boolean equalsImpl(polyglot.types.TypeObject t)

      Specified by:
        `equalsImpl` in interface `polyglot.types.TypeObject`
      Specified by:
        `equalsImpl` in class `Label_c`