Class DefaultAddressFactory

  • All Implemented Interfaces:
    AddressFactory
    Direct Known Subclasses:
    ProgramAddressFactory

    public class DefaultAddressFactory
    extends java.lang.Object
    implements AddressFactory
    Keeps track of all the Address spaces in the program and provides methods for parsing address strings.
    • Constructor Detail

      • DefaultAddressFactory

        public DefaultAddressFactory​(AddressSpace[] addrSpaces)
        Constructs a new DefaultAddressFactory. The default space is assumed to be the first space in the array.
        Parameters:
        addrSpaces - array of address spaces for the Program
      • DefaultAddressFactory

        public DefaultAddressFactory​(AddressSpace[] addrSpaces,
                                     AddressSpace defaultSpace)
        Constructs a new DefaultAddressFactory with the given spaces and default space.
        Parameters:
        addrSpaces - the set of addressSpaces to manage
        defaultSpace - the space to use as the default space. The default space should be one of the spaces provided in the addrSpaces array.
    • Method Detail

      • getAddress

        public Address getAddress​(java.lang.String addrString)
        Description copied from interface: AddressFactory
        Create an address from String. Attempts to use the "default" address space first. Otherwise loops through each addressSpace, returning the first valid address that any addressSpace creates from the string. Returns an Address if the string is valid, otherwise null.
        Specified by:
        getAddress in interface AddressFactory
        See Also:
        AddressFactory.getAddress(java.lang.String)
      • getAllAddresses

        public Address[] getAllAddresses​(java.lang.String addrString)
        Description copied from interface: AddressFactory
        Generates all reasonable addresses that can be interpreted from the given string. Each Address Space is given a change to parse the string and all the valid results are return in the array.
        Specified by:
        getAllAddresses in interface AddressFactory
        Parameters:
        addrString - the address string to parse.
        Returns:
        Address[] The list of addresses generated from the string.
      • getAllAddresses

        public Address[] getAllAddresses​(java.lang.String addrString,
                                         boolean caseSensitive)
        Description copied from interface: AddressFactory
        Generates all reasonable addresses that can be interpreted from the given string. Each Address Space is given a change to parse the string and all the valid results are return in the array.
        Specified by:
        getAllAddresses in interface AddressFactory
        Parameters:
        addrString - the address string to parse.
        caseSensitive - determines if addressSpace names must be case sensitive to match.
        Returns:
        Address[] The list of addresses generated from the string.
      • isValidAddress

        public boolean isValidAddress​(Address addr)
        Description copied from interface: AddressFactory
        Tests if the given address is valid for at least one of the Address Spaces in this factory
        Specified by:
        isValidAddress in interface AddressFactory
        Parameters:
        addr - The address to test
        Returns:
        boolean true if the address valid, false otherwise
      • equals

        public boolean equals​(java.lang.Object o)
        Specified by:
        equals in interface AddressFactory
        Overrides:
        equals in class java.lang.Object
        See Also:
        Object.equals(Object)
      • getIndex

        public long getIndex​(Address addr)
        Description copied from interface: AddressFactory
        Returns the index (old encoding) for the given address.
        Specified by:
        getIndex in interface AddressFactory
        Parameters:
        addr - the address to encode.
      • getPhysicalSpace

        public AddressSpace getPhysicalSpace​(AddressSpace space)
        Description copied from interface: AddressFactory
        Gets the physical address space associated with the given address space. If the given space is physical, then it will be returned.
        Specified by:
        getPhysicalSpace in interface AddressFactory
        Parameters:
        space - the addressSpace for which the physical space is requested.
        Returns:
        the physical address space associated with the given address space.
      • getAddress

        public Address getAddress​(int spaceID,
                                  long offset)
        Description copied from interface: AddressFactory
        Get an address using the addressSpace with the given id and having the given offset.
        Specified by:
        getAddress in interface AddressFactory
        Parameters:
        spaceID - the id of the address space to use to create the new address.
        offset - the offset of the new address to be created.
        Returns:
        the new address.
      • getConstantAddress

        public Address getConstantAddress​(long offset)
        Description copied from interface: AddressFactory
        Returns an address in "constant" space with the given offset.
        Specified by:
        getConstantAddress in interface AddressFactory
        Parameters:
        offset - the offset in "constant" space for the new address.
        Returns:
        a new address in the "constant" space with the given offset.
      • getAddressSet

        public AddressSet getAddressSet​(Address min,
                                        Address max)
        Description copied from interface: AddressFactory
        Computes an address set from a start and end address that may span address spaces. Although in general, it is not meaningful to compare addresses from multiple spaces, but since there is an absolute ordering of address spaces it can be useful for iterating over all addresses in a program with multiple address spaces.
        Specified by:
        getAddressSet in interface AddressFactory
        Parameters:
        min - the start address
        max - the end address.
        Returns:
        an addressSet containing ranges that don't span address spaces.
      • oldGetAddressFromLong

        public Address oldGetAddressFromLong​(long value)
        Description copied from interface: AddressFactory
        Returns the address using the old encoding format.
        Specified by:
        oldGetAddressFromLong in interface AddressFactory
        Parameters:
        value - to decode into an address.
      • addAddressSpace

        protected void addAddressSpace​(AddressSpace space)
                                throws DuplicateNameException
        Adds an AddressSpace to this factory
        Parameters:
        space - the address space being added.
        Throws:
        DuplicateNameException - if an address space with the given name already exists
      • renameOverlaySpace

        protected java.lang.String renameOverlaySpace​(java.lang.String oldOverlaySpaceName,
                                                      java.lang.String newName)
                                               throws DuplicateNameException
        Rename overlay with newName.
        Parameters:
        oldOverlaySpaceName - the existing overlay address space name
        newName - the new name of the overlay address space.
        Returns:
        new name applied to existing overlay space
        Throws:
        DuplicateNameException - if space with newName already exists
        java.lang.IllegalArgumentException - if specified oldOverlaySpaceName was not found as an existing overlay space
      • removeAddressSpace

        protected void removeAddressSpace​(java.lang.String spaceName)
        Removes the AddressSpace from this factory
        Parameters:
        spaceName - the name of the space to remove.