Class PointerDataType

    • Field Detail

      • POINTER_LABEL_PREFIX

        public static final java.lang.String POINTER_LABEL_PREFIX
        See Also:
        Constant Field Values
      • POINTER_LOOP_LABEL_PREFIX

        public static final java.lang.String POINTER_LOOP_LABEL_PREFIX
        See Also:
        Constant Field Values
      • referencedDataType

        protected DataType referencedDataType
      • length

        protected int length
    • Constructor Detail

      • PointerDataType

        public PointerDataType()
        Creates a dynamically-sized default pointer data type. A dynamic pointer size of 4-bytes will be in used, but will adapt to a data type manager's data organization when resolved.
      • PointerDataType

        public PointerDataType​(DataTypeManager dtm)
        Creates a dynamically-sized default pointer data type. The pointer size is established dynamically based upon the data organization associated with the specified dtm but can adapt to another data type manager's data organization when resolved.
        Parameters:
        dtm - data-type manager whose data organization should be used
      • PointerDataType

        public PointerDataType​(DataType referencedDataType)
        Construct a dynamically-sized pointer to a referencedDataType A dynamic pointer size of 4-bytes will be in used, but will adapt to a data type manager's data organization when resolved.
        Parameters:
        referencedDataType - data type this pointer points to
      • PointerDataType

        public PointerDataType​(DataType referencedDataType,
                               int length)
        Construct a pointer of a specified length to a referencedDataType. Note: It is preferred to use default sized pointers when possible (i.e., length=-1, see PointerDataType(DataType)) instead of explicitly specifying the pointer length value.
        Parameters:
        referencedDataType - data type this pointer points to
        length - pointer length (values <= 0 will result in dynamically-sized pointer)
      • PointerDataType

        public PointerDataType​(DataType referencedDataType,
                               DataTypeManager dtm)
        Construct a dynamically-sized pointer to the given data type. The pointer size is established dynamically based upon the data organization associated with the specified dtm but can adapt to another data type manager's data organization when resolved.
        Parameters:
        referencedDataType - data type this pointer points to
        dtm - data-type manager whose data organization should be used
      • PointerDataType

        public PointerDataType​(DataType referencedDataType,
                               int length,
                               DataTypeManager dtm)
        Construct a pointer of a specified length to a referencedDataType. Note: It is preferred to use default sized pointers when possible (i.e., length=-1, see PointerDataType(DataType, DataTypeManager)) instead of explicitly specifying the pointer length value.
        Parameters:
        referencedDataType - data type this pointer points to
        length - pointer length (-1 will result in dynamically-sized pointer)
        dtm - associated data type manager whose data organization will be used
    • Method Detail

      • clone

        public final Pointer clone​(DataTypeManager dtm)
        Description copied from interface: DataType
        Returns an instance of this DataType with its universalID and SourceArchive identity retained.

        The current instanceof will be returned if this datatype's DataTypeManager matches the specified dtm. The recursion depth of a clone will stop on any datatype whose DataTypeManager matches the specified dtm and simply use the existing datatype instance.

        Specified by:
        clone in interface DataType
        Parameters:
        dtm - the data-type manager instance whose data-organization should apply.
        Returns:
        cloned instance which may be the same as this instance
      • getDataType

        public DataType getDataType()
        Description copied from interface: Pointer
        Returns the "pointed to" dataType
        Specified by:
        getDataType in interface Pointer
      • getDefaultLabelPrefix

        public java.lang.String getDefaultLabelPrefix()
        Description copied from interface: DataType
        Returns the appropriate string to use as the default label prefix in the absence of any data.
        Specified by:
        getDefaultLabelPrefix in interface DataType
        Overrides:
        getDefaultLabelPrefix in class AbstractDataType
        Returns:
        the default label prefix or null if none specified.
      • getDefaultLabelPrefix

        public java.lang.String getDefaultLabelPrefix​(MemBuffer buf,
                                                      Settings settings,
                                                      int len,
                                                      DataTypeDisplayOptions options)
        Description copied from interface: DataType
        Returns the appropriate string to use as the default label prefix.
        Specified by:
        getDefaultLabelPrefix in interface DataType
        Overrides:
        getDefaultLabelPrefix in class AbstractDataType
        Parameters:
        buf - memory buffer containing the bytes.
        settings - the Settings object
        len - the length of the data.
        options - options for how to format the default label prefix.
        Returns:
        the default label prefix or null if none specified.
      • getDisplayName

        public java.lang.String getDisplayName()
        Description copied from interface: DataType
        Gets the name for referring to this datatype.
        Specified by:
        getDisplayName in interface DataType
        Overrides:
        getDisplayName in class AbstractDataType
        Returns:
        generic name for this Data Type (i.e.: Word)
      • getDescription

        public java.lang.String getDescription()
        Description copied from interface: DataType
        Get a String briefly describing this DataType.
        Specified by:
        getDescription in interface DataType
        Returns:
        a one-liner describing this DataType.
      • getMnemonic

        public java.lang.String getMnemonic​(Settings settings)
        Description copied from interface: DataType
        Get the mnemonic for this DataType.
        Specified by:
        getMnemonic in interface DataType
        Overrides:
        getMnemonic in class AbstractDataType
        Parameters:
        settings - settings which may influence the result or null
        Returns:
        the mnemonic for this DataType.
      • getValue

        public java.lang.Object getValue​(MemBuffer buf,
                                         Settings settings,
                                         int len)
        Description copied from interface: DataType
        Get the data in the form of the appropriate Object for this DataType.

        For instance if the datatype is an AddressDT, return an Address object. a Byte, return a Scalar* (maybe this should be a Byte) a Float, return a Float

        Specified by:
        getValue in interface DataType
        Parameters:
        buf - the data buffer.
        settings - the settings to use.
        len - the number of bytes to get the value from.
        Returns:
        the data Object.
      • getValueClass

        public java.lang.Class<?> getValueClass​(Settings settings)
        Description copied from interface: DataType
        Get the Class of the value to be returned by this datatype.
        Specified by:
        getValueClass in interface DataType
        Overrides:
        getValueClass in class DataTypeImpl
        Parameters:
        settings - the relevant settings to use or null for default.
        Returns:
        Class of the value to be returned by this datatype or null if it can vary or is unspecified. Types which correspond to a string or char array will return the String class.
      • getAddressValue

        public static Address getAddressValue​(MemBuffer buf,
                                              int size,
                                              AddressSpace targetSpace)
        Generate an address value based upon bytes stored at the specified buf location
        Parameters:
        buf - memory buffer and stored pointer location
        size - pointer size in bytes
        targetSpace - address space for returned pointer
        Returns:
        pointer value or null if unusable buf or data
      • getRepresentation

        public java.lang.String getRepresentation​(MemBuffer buf,
                                                  Settings settings,
                                                  int len)
        Description copied from interface: DataType
        Get bytes from memory in a printable format for this type.
        Specified by:
        getRepresentation in interface DataType
        Parameters:
        buf - the data.
        settings - the settings to use for the representation.
        len - the number of bytes to represent.
        Returns:
        the representation of the data in this format, never null.
      • isEquivalent

        public boolean isEquivalent​(DataType dt)
        Description copied from interface: DataType
        Check if the given datatype is equivalent to this datatype.

        The precise meaning of "equivalent" is datatype dependent.
        NOTE: if invoked by a DB object or manager it should be invoked on the DataTypeDB object passing the other datatype as the argument.

        Specified by:
        isEquivalent in interface DataType
        Overrides:
        isEquivalent in class BuiltIn
        Parameters:
        dt - the datatype being tested for equivalence.
        Returns:
        true if the if the given datatype is equivalent to this datatype.
      • dataTypeDeleted

        public void dataTypeDeleted​(DataType dt)
        Description copied from interface: DataType
        Informs this datatype that the given datatype has been deleted.

        TODO: This method is reserved for internal DB use.

        Specified by:
        dataTypeDeleted in interface DataType
        Overrides:
        dataTypeDeleted in class BuiltIn
        Parameters:
        dt - the datatype that has been deleted.
      • isDeleted

        public boolean isDeleted()
        Description copied from interface: DataType
        Returns true if this datatype has been deleted and is no longer valid
        Specified by:
        isDeleted in interface DataType
        Overrides:
        isDeleted in class AbstractDataType
        Returns:
        true if this datatype has been deleted and is no longer valid.
      • dataTypeReplaced

        public void dataTypeReplaced​(DataType oldDt,
                                     DataType newDt)
        Description copied from interface: DataType
        Informs this datatype that the given oldDT has been replaced with newDT

        TODO: This method is reserved for internal DB use.

        Specified by:
        dataTypeReplaced in interface DataType
        Overrides:
        dataTypeReplaced in class BuiltIn
        Parameters:
        oldDt - old datatype
        newDt - new datatype
      • dataTypeNameChanged

        public void dataTypeNameChanged​(DataType dt,
                                        java.lang.String oldName)
        Description copied from interface: DataType
        Informs this datatype that its name has changed from the indicated old name.

        TODO: This method is reserved for internal DB use.

        Specified by:
        dataTypeNameChanged in interface DataType
        Overrides:
        dataTypeNameChanged in class BuiltIn
        Parameters:
        dt - the datatype whose name changed
        oldName - the datatype's old name
      • dependsOn

        public boolean dependsOn​(DataType dt)
        Description copied from interface: DataType
        Check if this datatype depends on the existence of the given datatype.

        For example byte[] depends on byte. If byte were deleted, then byte[] would also be deleted.

        Specified by:
        dependsOn in interface DataType
        Overrides:
        dependsOn in class BuiltIn
        Parameters:
        dt - the datatype to test that this datatype depends on.
        Returns:
        true if the existence of this datatype relies on the existence of the specified datatype dt.
      • getPointer

        public static Pointer getPointer​(DataType dt,
                                         DataTypeManager dtm)
        Get a pointer data-type instance with a default size
        Parameters:
        dt - data-type referenced by pointer
        dtm - program data-type manager (required) a generic data-type will be returned if possible.
        Returns:
        signed integer data type
      • getPointer

        public static Pointer getPointer​(DataType dt,
                                         int pointerSize)
        Get a pointer data-type instance of the requested size. NOTE: The returned data-type will not be associated with any particular data-type-manager and may therefore not utilize dynamically-sized-pointers when a valid pointerSize is specified. If an invalid pointerSize is specified, a dynamically-size pointer will be returned whose length is based upon the default-data-organization.
        Parameters:
        dt - data-type referenced by pointer
        pointerSize - pointer size
        Returns:
        signed integer data type
      • newPointer

        public Pointer newPointer​(DataType dt)
        Description copied from interface: Pointer
        Creates a pointer to the indicated data type.
        Specified by:
        newPointer in interface Pointer
        Parameters:
        dt - the data type to point to.
        Returns:
        the newly created pointer.
      • getName

        public java.lang.String getName()
        Description copied from interface: DataType
        Get the name of this datatype.
        Specified by:
        getName in interface DataType
        Overrides:
        getName in class AbstractDataType
        Returns:
        the name