Class ReferenceManagerTestDouble

    • Constructor Detail

      • ReferenceManagerTestDouble

        public ReferenceManagerTestDouble()
    • Method Detail

      • addStackReference

        public Reference addStackReference​(Address fromAddr,
                                           int opIndex,
                                           int stackOffset,
                                           RefType type,
                                           SourceType source)
        Description copied from interface: ReferenceManager
        Add a reference to a stack location. If a reference already exists for the fromAddr and opIndex, the existing reference is replaced with the new reference.
        Specified by:
        addStackReference in interface ReferenceManager
        Parameters:
        fromAddr - "from" address within a function
        opIndex - operand index
        stackOffset - stack offset of the reference
        type - reference type - how the location is being referenced.
        source - the source of this reference
      • addRegisterReference

        public Reference addRegisterReference​(Address fromAddr,
                                              int opIndex,
                                              Register register,
                                              RefType type,
                                              SourceType source)
        Description copied from interface: ReferenceManager
        Add a reference to a register. If a reference already exists for the fromAddr and opIndex, the existing reference is replaced with the new reference.
        Specified by:
        addRegisterReference in interface ReferenceManager
        Parameters:
        fromAddr - "from" address
        opIndex - operand index
        register - register to add the reference to
        type - reference type - how the location is being referenced.
        source - the source of this reference
      • addMemoryReference

        public Reference addMemoryReference​(Address fromAddr,
                                            Address toAddr,
                                            RefType type,
                                            SourceType source,
                                            int opIndex)
        Description copied from interface: ReferenceManager
        Adds a memory reference.
        Specified by:
        addMemoryReference in interface ReferenceManager
        Parameters:
        fromAddr - address of the codeunit where the reference occurs
        toAddr - address of the location being referenced. Memory, stack, and register addresses are all permitted.
        type - reference type - how the location is being referenced.
        source - the source of this reference
        opIndex - the operand index display of the operand making this reference
      • addOffsetMemReference

        public Reference addOffsetMemReference​(Address fromAddr,
                                               Address toAddr,
                                               long offset,
                                               RefType type,
                                               SourceType source,
                                               int opIndex)
        Description copied from interface: ReferenceManager
        Add an offset memory reference.
        Specified by:
        addOffsetMemReference in interface ReferenceManager
        Parameters:
        fromAddr - address for the "from"
        toAddr - address of the "to"
        offset - value added to a base address to get the toAddr
        type - reference type - how the location is being referenced
        source - the source of this reference
        opIndex - the operand index
      • addShiftedMemReference

        public Reference addShiftedMemReference​(Address fromAddr,
                                                Address toAddr,
                                                int shiftValue,
                                                RefType type,
                                                SourceType source,
                                                int opIndex)
        Description copied from interface: ReferenceManager
        Add a shifted memory reference; the "to" address is computed as the value at the operand at opIndex shifted by some number of bits, specified in the shiftValue parameter.
        Specified by:
        addShiftedMemReference in interface ReferenceManager
        Parameters:
        fromAddr - address for the "from"
        toAddr - computed as the value of the operand at opIndex shifted by the number of bits specified by shiftValue
        type - reference type - how the location is being referenced
        source - the source of this reference
        opIndex - the operand index
      • removeAllReferencesFrom

        public void removeAllReferencesFrom​(Address beginAddr,
                                            Address endAddr)
        Description copied from interface: ReferenceManager
        Removes all references where "From address" is in the given range.
        Specified by:
        removeAllReferencesFrom in interface ReferenceManager
        Parameters:
        beginAddr - the first address in the range.
        endAddr - the last address in the range.
      • removeAllReferencesFrom

        public void removeAllReferencesFrom​(Address fromAddr)
        Description copied from interface: ReferenceManager
        Remove all stack, external, and memory references for the given from address.
        Specified by:
        removeAllReferencesFrom in interface ReferenceManager
        Parameters:
        fromAddr - the address of the codeunit from which to remove all references.
      • getReferencesTo

        public Reference[] getReferencesTo​(Variable var)
        Description copied from interface: ReferenceManager
        Returns all references to the given variable. Only data references to storage are considered.
        Specified by:
        getReferencesTo in interface ReferenceManager
        Parameters:
        var - variable to retrieve references to
        Returns:
        array of variable references, or zero length array if no references exist
      • setPrimary

        public void setPrimary​(Reference ref,
                               boolean isPrimary)
        Description copied from interface: ReferenceManager
        Set the given reference's primary attribute
        Specified by:
        setPrimary in interface ReferenceManager
        Parameters:
        ref - the reference to make primary.
        isPrimary - true to make the reference primary, false to make it non-primary
      • hasFlowReferencesFrom

        public boolean hasFlowReferencesFrom​(Address addr)
        Description copied from interface: ReferenceManager
        Return whether the given address has flow references from this address.
        Specified by:
        hasFlowReferencesFrom in interface ReferenceManager
        Parameters:
        addr - the address to test for flow references.
      • getReferencesTo

        public ReferenceIterator getReferencesTo​(Address addr)
        Description copied from interface: ReferenceManager
        Get an iterator over all references that have the given address as their "To" address.
        Specified by:
        getReferencesTo in interface ReferenceManager
        Parameters:
        addr - the address that all references in the iterator refer to.
      • getReferenceIterator

        public ReferenceIterator getReferenceIterator​(Address startAddr)
        Description copied from interface: ReferenceManager
        Get an iterator over references starting with the specified fromAddr. A forward iterator is returned with references sorted on the from address.
        Specified by:
        getReferenceIterator in interface ReferenceManager
        Parameters:
        startAddr - the first from address to consider.
        Returns:
        a forward memory reference iterator.
      • getReference

        public Reference getReference​(Address fromAddr,
                                      Address toAddr,
                                      int opIndex)
        Description copied from interface: ReferenceManager
        Get the reference that has the given from and to address, and operand index.
        Specified by:
        getReference in interface ReferenceManager
        Parameters:
        fromAddr - the address of the codeunit making the reference.
        toAddr - the address being referred to.
        opIndex - the operand index.
      • getReferencesFrom

        public Reference[] getReferencesFrom​(Address addr)
        Description copied from interface: ReferenceManager
        Get all references "from" the specified addr.
        Specified by:
        getReferencesFrom in interface ReferenceManager
        Parameters:
        addr - address of code-unit making the references.
        Returns:
        array of all references "from" the specified addr.
      • getReferencesFrom

        public Reference[] getReferencesFrom​(Address fromAddr,
                                             int opIndex)
        Description copied from interface: ReferenceManager
        Returns all references "from" the given fromAddr and operand (specified by opIndex).
        Specified by:
        getReferencesFrom in interface ReferenceManager
        Parameters:
        fromAddr - the from which to get references
        opIndex - the operand from which to get references
        Returns:
        all references "from" the given fromAddr and operand.
      • hasReferencesFrom

        public boolean hasReferencesFrom​(Address fromAddr)
        Description copied from interface: ReferenceManager
        Returns true if there are any memory references at the given address.
        Specified by:
        hasReferencesFrom in interface ReferenceManager
        Parameters:
        fromAddr - the address of the codeunit being tested
      • hasReferencesFrom

        public boolean hasReferencesFrom​(Address fromAddr,
                                         int opIndex)
        Description copied from interface: ReferenceManager
        Returns true if there are any memory references at the given address/opIndex. Keep in mind this is a rather inefficient method as it must examine all references from the specified fromAddr.
        Specified by:
        hasReferencesFrom in interface ReferenceManager
        Parameters:
        fromAddr - the address of the codeunit being tested
        opIndex - the index of the operand being tested.
      • getReferenceSourceIterator

        public AddressIterator getReferenceSourceIterator​(Address startAddr,
                                                          boolean forward)
        Description copied from interface: ReferenceManager
        Returns an iterator over addresses that are the "From" address in a reference
        Specified by:
        getReferenceSourceIterator in interface ReferenceManager
        Parameters:
        startAddr - address to position iterator.
        forward - true means to iterate in the forward direction
      • getReferenceSourceIterator

        public AddressIterator getReferenceSourceIterator​(AddressSetView addrSet,
                                                          boolean forward)
        Description copied from interface: ReferenceManager
        Returns an iterator over all addresses that are the "From" address in a reference, restricted by the given address set.
        Specified by:
        getReferenceSourceIterator in interface ReferenceManager
        Parameters:
        addrSet - the set of address to restrict the iterator.
        forward - true means to iterate in the forward direction
      • getReferenceDestinationIterator

        public AddressIterator getReferenceDestinationIterator​(Address startAddr,
                                                               boolean forward)
        Description copied from interface: ReferenceManager
        Returns an iterator over all addresses that are the "To" address in a reference.
        Specified by:
        getReferenceDestinationIterator in interface ReferenceManager
        Parameters:
        startAddr - start of iterator
        forward - true means to iterate in the forward direction
      • getReferenceDestinationIterator

        public AddressIterator getReferenceDestinationIterator​(AddressSetView addrSet,
                                                               boolean forward)
        Description copied from interface: ReferenceManager
        Returns an iterator over all addresses that are the "To" address in a memory reference, restricted by the given address set.
        Specified by:
        getReferenceDestinationIterator in interface ReferenceManager
        Parameters:
        addrSet - the set of address to restrict the iterator.
        forward - true means to iterate in the forward direction
      • getReferenceCountTo

        public int getReferenceCountTo​(Address toAddr)
        Description copied from interface: ReferenceManager
        Returns the number of memory References to the specified toAddr
        Specified by:
        getReferenceCountTo in interface ReferenceManager
        Parameters:
        toAddr - the address being referenced
      • getReferenceCountFrom

        public int getReferenceCountFrom​(Address fromAddr)
        Description copied from interface: ReferenceManager
        Returns the number of memory References from the specified fromAddr
        Specified by:
        getReferenceCountFrom in interface ReferenceManager
        Parameters:
        fromAddr - the address of the codeunit making the reference.
      • hasReferencesTo

        public boolean hasReferencesTo​(Address toAddr)
        Description copied from interface: ReferenceManager
        Return true if a memory reference exists with the given "to" address.
        Specified by:
        hasReferencesTo in interface ReferenceManager
        Parameters:
        toAddr - address being refered to.
      • setAssociation

        public void setAssociation​(Symbol s,
                                   Reference ref)
        Description copied from interface: ReferenceManager
        Associates the given reference with the given symbol.
        Specified by:
        setAssociation in interface ReferenceManager
        Parameters:
        s - the symbol to associate with the given reference.
        ref - the reference to associate with the given symbol
      • removeAssociation

        public void removeAssociation​(Reference ref)
        Description copied from interface: ReferenceManager
        Removes any symbol associations with the given reference.
        Specified by:
        removeAssociation in interface ReferenceManager
        Parameters:
        ref - the reference for which any symbol association is to be removed.
      • delete

        public void delete​(Reference ref)
        Description copied from interface: ReferenceManager
        Deletes the given reference object
        Specified by:
        delete in interface ReferenceManager
        Parameters:
        ref - the reference to be deleted.
      • getReferenceLevel

        public byte getReferenceLevel​(Address toAddr)
        Description copied from interface: ReferenceManager
        Returns the reference level for the references to the given address
        Specified by:
        getReferenceLevel in interface ReferenceManager
        Parameters:
        toAddr - the address at which to find the highest reference level