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
        Returns true if a user-specified length can be used
        Specified by:
        canSpecifyLength in interface Dynamic
      • 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. The last component in the array may be a flexible array component.
        Parameters:
        buf - a memory buffer to be used by dataTypes that change depending on their data context.
        Returns:
        datatype component array or null. Last component may be a flexible array component.
      • getComponentAt

        public final DataTypeComponent getComponentAt​(int offset,
                                                      MemBuffer buf)
        Returns the first component containing the byte at the given offset
        Parameters:
        offset - the offset into the dataType
        buf - the memory buffer containing the bytes.
        Returns:
        the component containing the byte at the given offset or null if no component defined.
      • 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. Last component may be a flexible array component.
      • 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.
      • getLength

        public int getLength()
        Description copied from interface: DataType
        Get the length (number of 8-bit bytes) of this DataType.
        Specified by:
        getLength in interface DataType
        Returns:
        the length of this DataType
      • 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
      • getFlexibleArrayComponent

        public final DataTypeComponent getFlexibleArrayComponent​(MemBuffer buf)
        Get trailing flexible array component.
        Returns:
        flexible array component or null if not applicable or valie.