Class TypeResolver

java.lang.Object
de.fraunhofer.aisec.cpg.passes.Pass
de.fraunhofer.aisec.cpg.passes.TypeResolver
All Implemented Interfaces:
java.util.function.Consumer<TranslationResult>

public class TypeResolver
extends Pass
  • Field Summary

    Fields inherited from class de.fraunhofer.aisec.cpg.passes.Pass

    lang, log
  • Constructor Summary

    Constructors
    Constructor Description
    TypeResolver()  
  • Method Summary

    Modifier and Type Method Description
    void accept​(TranslationResult translationResult)
    Pass on the TypeSystem: Sets RecordDeclaration Relationship from ObjectType to RecordDeclaration
    void cleanup()  
    void ensureUniqueSecondaryTypeEdge​(de.fraunhofer.aisec.cpg.graph.Node node)
    ensures that the if a nodes contains secondary type edges, those types are also merged and no duplicate is left
    java.util.Set<Type> ensureUniqueSubTypes​(java.util.Set<Type> subTypes)  
    void ensureUniqueType​(de.fraunhofer.aisec.cpg.graph.Node node)  
    void handle​(de.fraunhofer.aisec.cpg.graph.Node node)
    Creates the recordDeclaration relationship between ObjectTypes and RecordDeclaration (from the Type to the Class)
    Type obtainType​(Type type)
    Ensures that two different Types that are created at different Points are still the same object in order to only store one node into the database

    Methods inherited from class de.fraunhofer.aisec.cpg.passes.Pass

    getLang, setLang, supportsLanguageFrontend

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface java.util.function.Consumer

    andThen
  • Constructor Details

    • TypeResolver

      public TypeResolver()
  • Method Details

    • obtainType

      public Type obtainType​(Type type)
      Ensures that two different Types that are created at different Points are still the same object in order to only store one node into the database
      Parameters:
      type - newly created Type
      Returns:
      If the same type was already stored in the typeState Map the stored one is returned. In the other case the parameter type is stored into the map and the parameter type is returned
    • accept

      public void accept​(TranslationResult translationResult)
      Pass on the TypeSystem: Sets RecordDeclaration Relationship from ObjectType to RecordDeclaration
      Parameters:
      translationResult -
    • ensureUniqueSubTypes

      public java.util.Set<Type> ensureUniqueSubTypes​(java.util.Set<Type> subTypes)
    • ensureUniqueType

      public void ensureUniqueType​(de.fraunhofer.aisec.cpg.graph.Node node)
    • ensureUniqueSecondaryTypeEdge

      public void ensureUniqueSecondaryTypeEdge​(de.fraunhofer.aisec.cpg.graph.Node node)
      ensures that the if a nodes contains secondary type edges, those types are also merged and no duplicate is left
      Parameters:
      node - implementing HasType.SecondaryTypeEdge
    • handle

      public void handle​(de.fraunhofer.aisec.cpg.graph.Node node)
      Creates the recordDeclaration relationship between ObjectTypes and RecordDeclaration (from the Type to the Class)
      Parameters:
      node -
    • cleanup

      public void cleanup()
      Specified by:
      cleanup in class Pass