Class DynamicDataType

    • Constructor Detail

      • DynamicDataType

        protected DynamicDataType​(java.lang.String name)
      • DynamicDataType

        protected DynamicDataType​(java.lang.String name,
                                  DataTypeManager dtm)
      • DynamicDataType

        protected DynamicDataType​(CategoryPath path,
                                  java.lang.String name)
    • Method Detail

      • canSpecifyLength

        public final boolean canSpecifyLength()
        Description copied from interface: Dynamic
        Determine if the length may be specified for an instanceof this datatype (e.g., Data, Array, DataTypeComponent, etc.).
        Specified by:
        canSpecifyLength in interface Dynamic
        Returns:
        true if a user-specified length can be used, else false
      • getNumComponents

        public final int getNumComponents​(MemBuffer buf)
        Gets the number of component data types in this data type.
        Parameters:
        buf - a memory buffer to be used by dataTypes that change depending on their data context.
        Returns:
        the number of components that make up this data prototype - if this is an Array, return the number of elements in the array. - if this datatype is a subcomponent of another datatype and it won't fit in it's defined space, return -1.
      • getComponent

        public final DataTypeComponent getComponent​(int ordinal,
                                                    MemBuffer buf)
        Returns the immediate n'th component of this data type.
        Parameters:
        ordinal - the components ordinal (zero based).
        buf - a memory buffer to be used by dataTypes that change depending on their data context.
        Returns:
        the component data type or null if there is no component at the indicated index.
        Throws:
        java.lang.ArrayIndexOutOfBoundsException - if index is out of bounds
      • getComponents

        public final DataTypeComponent[] getComponents​(MemBuffer buf)
        Returns an array of components that make up this data type. Could return null if there are no subcomponents.
        Parameters:
        buf - a memory buffer to be used by dataTypes that change depending on their data context.
        Returns:
        datatype component array or null.
      • getComponentAt

        public final DataTypeComponent getComponentAt​(int offset,
                                                      MemBuffer buf)
        Returns the first component containing the byte at the given offset. It is possible with zero-length components (see DataTypeComponent#isZeroLength()) and bitfields (see @DataTypeComponent#isBitFieldComponent()} for multiple components to share the same offset.
        Parameters:
        offset - the offset into the dataType
        buf - the memory buffer containing the bytes.
        Returns:
        the first component containing the byte at the given offset or null if no component defined. A zero-length component may be returned.
      • getAllComponents

        protected abstract DataTypeComponent[] getAllComponents​(MemBuffer buf)
        Get all dynamic components associated with the specified MemBuffer
        Parameters:
        buf - memory buffer positioned at start of data type instance
        Returns:
        all components or null if memory data is not valid for this data type.
      • getLength

        public final int getLength​(MemBuffer buf,
                                   int maxLength)
        Description copied from interface: Dynamic
        Compute the length for this data-type which corresponds to the specified memory location.
        Specified by:
        getLength in interface Dynamic
        Parameters:
        buf - memory location
        maxLength - maximum number of bytes to consume in computing length, or -1 for unspecified.
        Returns:
        data length or -1 if it could not be determined. Returned length may exceed maxLength if data-type does not supported constrained lengths.
      • invalidateCache

        public void invalidateCache()
      • getReplacementBaseType

        public DataType getReplacementBaseType()
        Description copied from interface: Dynamic
        Returns a suitable replacement base data-type for pointers and arrays when exporting to C code
        Specified by:
        getReplacementBaseType in interface Dynamic
        Returns:
        suitable base data-type for this Dynamic data-type