org.eclipse.viatra.query.runtime.base.comprehension

## Class EMFModelComprehension

- java.lang.Object
- - org.eclipse.viatra.query.runtime.base.comprehension.EMFModelComprehension

-     public class EMFModelComprehension
      extends java.lang.Object

  No Extend:
    This class is not intended to be subclassed by clients.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected BaseIndexOptions` | `options`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EMFModelComprehension(BaseIndexOptions options)` Creates a model comprehension with the specified options.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `emulateUntraversableFeature(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature emulated, java.lang.Object target)` Emulates a derived edge, if it is not visited otherwise
    `boolean` | `isLoading(org.eclipse.emf.ecore.resource.Resource resource)` Finds out whether the Resource is currently loading
    `boolean` | `onlySamplingFeature(org.eclipse.emf.ecore.EStructuralFeature feature)` Decides whether a feature can only be sampled as there is no guarantee that proper notifications will be delivered by their implementation.
    `boolean` | `representable(org.eclipse.emf.ecore.EStructuralFeature feature)` This feature can be represented in IQBase.
    `void` | `traverseFeature(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.Object target, java.lang.Integer position)`
    `protected void` | `traverseFeatureInternal(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.Object target, boolean visitorPrunes, java.lang.Integer position)`
    `protected void` | `traverseFeatureInternalSimple(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, java.lang.Object target, java.lang.Integer position)`
    `protected void` | `traverseFeatureTargets(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature, boolean visitorPrunes)`
    `void` | `traverseModel(EMFVisitor visitor, org.eclipse.emf.common.notify.Notifier source)` Resource filters not consulted here (for performance), because model roots are assumed to be pre-filtered.
    `void` | `traverseObject(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source)`
    `void` | `traverseObjectIfUnfiltered(EMFVisitor visitor, org.eclipse.emf.ecore.EObject targetObject)`
    `void` | `traverseResource(EMFVisitor visitor, org.eclipse.emf.ecore.resource.Resource source)`
    `void` | `traverseResourceIfUnfiltered(EMFVisitor visitor, org.eclipse.emf.ecore.resource.Resource resource)`
    `void` | `traverseResourceSet(EMFVisitor visitor, org.eclipse.emf.ecore.resource.ResourceSet source)`
    `void` | `tryResolveReference(org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EReference reference)` Can be called to attempt to resolve a reference pointing to one or more proxies, using eGet().
    `protected boolean` | `unprunableFeature(EMFVisitor visitor, org.eclipse.emf.ecore.EObject source, org.eclipse.emf.ecore.EStructuralFeature feature)`
    `boolean` | `untraversableDirectly(org.eclipse.emf.ecore.EStructuralFeature feature)` Should not traverse this feature directly.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### options

          protected BaseIndexOptions options

      Since:
        2.3

  - ### Constructor Detail

    - #### EMFModelComprehension

          public EMFModelComprehension(BaseIndexOptions options)

      Creates a model comprehension with the specified options. The options are copied, therefore subsequent changes will not affect the comprehension.

  - ### Method Detail

    - #### untraversableDirectly

          public boolean untraversableDirectly(org.eclipse.emf.ecore.EStructuralFeature feature)

      Should not traverse this feature directly. It is still possible that it can be represented in IQBase if `representable(EStructuralFeature)` is true.

    - #### onlySamplingFeature

          public boolean onlySamplingFeature(org.eclipse.emf.ecore.EStructuralFeature feature)

      Decides whether a feature can only be sampled as there is no guarantee that proper notifications will be delivered by their implementation.

      Such features are derived (and/or volatile) features that are not well-behaving.

    - #### representable

          public boolean representable(org.eclipse.emf.ecore.EStructuralFeature feature)

      This feature can be represented in IQBase.

    - #### traverseModel

          public void traverseModel(EMFVisitor visitor,
                                    org.eclipse.emf.common.notify.Notifier source)

      Resource filters not consulted here (for performance), because model roots are assumed to be pre-filtered.

    - #### traverseResourceSet

          public void traverseResourceSet(EMFVisitor visitor,
                                          org.eclipse.emf.ecore.resource.ResourceSet source)

    - #### traverseResourceIfUnfiltered

          public void traverseResourceIfUnfiltered(EMFVisitor visitor,
                                                   org.eclipse.emf.ecore.resource.Resource resource)

    - #### traverseResource

          public void traverseResource(EMFVisitor visitor,
                                       org.eclipse.emf.ecore.resource.Resource source)

    - #### traverseObjectIfUnfiltered

          public void traverseObjectIfUnfiltered(EMFVisitor visitor,
                                                 org.eclipse.emf.ecore.EObject targetObject)

    - #### traverseObject

          public void traverseObject(EMFVisitor visitor,
                                     org.eclipse.emf.ecore.EObject source)

    - #### traverseFeatureTargets

          protected void traverseFeatureTargets(EMFVisitor visitor,
                                                org.eclipse.emf.ecore.EObject source,
                                                org.eclipse.emf.ecore.EStructuralFeature feature,
                                                boolean visitorPrunes)

    - #### unprunableFeature

          protected boolean unprunableFeature(EMFVisitor visitor,
                                              org.eclipse.emf.ecore.EObject source,
                                              org.eclipse.emf.ecore.EStructuralFeature feature)

      Since:
        2.3

    - #### traverseFeature

          public void traverseFeature(EMFVisitor visitor,
                                      org.eclipse.emf.ecore.EObject source,
                                      org.eclipse.emf.ecore.EStructuralFeature feature,
                                      java.lang.Object target,
                                      java.lang.Integer position)

      Parameters:
        `position` - optional: known position in multivalued collection (for more efficient proxy resolution)

    - #### traverseFeatureInternalSimple

          protected void traverseFeatureInternalSimple(EMFVisitor visitor,
                                                       org.eclipse.emf.ecore.EObject source,
                                                       org.eclipse.emf.ecore.EStructuralFeature feature,
                                                       java.lang.Object target,
                                                       java.lang.Integer position)

      Parameters:
        `position` - optional: known position in multivalued collection (for more efficient proxy resolution)
      Since:
        2.3

    - #### traverseFeatureInternal

          protected void traverseFeatureInternal(EMFVisitor visitor,
                                                 org.eclipse.emf.ecore.EObject source,
                                                 org.eclipse.emf.ecore.EStructuralFeature feature,
                                                 java.lang.Object target,
                                                 boolean visitorPrunes,
                                                 java.lang.Integer position)

      Parameters:
        `position` - optional: known position in multivalued collection (for more efficient proxy resolution)
      Since:
        2.3

    - #### emulateUntraversableFeature

          protected void emulateUntraversableFeature(EMFVisitor visitor,
                                                     org.eclipse.emf.ecore.EObject source,
                                                     org.eclipse.emf.ecore.EStructuralFeature emulated,
                                                     java.lang.Object target)

      Emulates a derived edge, if it is not visited otherwise
      Since:
        2.3

    - #### tryResolveReference

          public void tryResolveReference(org.eclipse.emf.ecore.EObject source,
                                          org.eclipse.emf.ecore.EReference reference)

      Can be called to attempt to resolve a reference pointing to one or more proxies, using eGet().

    - #### isLoading

          public boolean isLoading(org.eclipse.emf.ecore.resource.Resource resource)

      Finds out whether the Resource is currently loading