Class BitFieldPackingImpl

java.lang.Object
ghidra.program.model.data.BitFieldPackingImpl
All Implemented Interfaces:
BitFieldPacking

public class BitFieldPackingImpl extends Object implements BitFieldPacking
  • Constructor Summary

    Constructors
    Change
    Constructor
    Description
     
  • Method Summary

    Change
    Modifier and Type
    Method
    Description
    NEW
    void
    encode(Encoder encoder)
    Write configuration to a stream as a \ element
    int
    A non-zero value indicates the fixed alignment size for bit-fields which follow a zero-length bitfield if greater than a bitfields base type normal alignment.
    boolean
    Control whether the alignment of bit-field types is respected when laying out structures.
    protected void
    Restore settings from a \ tag in an XML stream.
    void
    setTypeAlignmentEnabled(boolean typeAlignmentEnabled)
    Control whether the alignment of bit-field types is respected when laying out structures.
    void
    setUseMSConvention(boolean useMSConvention)
    Control if the alignment and packing of bit-fields follows MSVC conventions.
    void
    setZeroLengthBoundary(int zeroLengthBoundary)
    Indicate a fixed alignment size in bytes which should be used for zero-length bit-fields.
    boolean
    Control if the alignment and packing of bit-fields follows MSVC conventions.
    REMOVED
    void
    saveXml(StringBuilder buffer)
    Removed
    REMOVED
    boolean
    equals(Object obj)
    Removed
    REMOVED
    int
    Removed

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface ghidra.program.model.data.BitFieldPacking

    isEquivalent
  • Constructor Details

    • BitFieldPackingImpl

      public BitFieldPackingImpl()
  • Method Details

    • useMSConvention

      public boolean useMSConvention()
      Description copied from interface: BitFieldPacking
      Control if the alignment and packing of bit-fields follows MSVC conventions. When this is enabled it takes precedence over all other bitfield packing controls.
      Specified by:
      useMSConvention in interface BitFieldPacking
      Returns:
      true if MSVC packing conventions are used, else false (e.g., GNU conventions apply).
    • isTypeAlignmentEnabled

      public boolean isTypeAlignmentEnabled()
      Description copied from interface: BitFieldPacking
      Control whether the alignment of bit-field types is respected when laying out structures. Corresponds to PCC_BITFIELD_TYPE_MATTERS in GCC.
      Specified by:
      isTypeAlignmentEnabled in interface BitFieldPacking
      Returns:
      true when the alignment of the bit-field type should be used to impact the alignment of the containing structure, and ensure that individual bit-fields will not straddle an alignment boundary.
    • getZeroLengthBoundary

      public int getZeroLengthBoundary()
      Description copied from interface: BitFieldPacking
      A non-zero value indicates the fixed alignment size for bit-fields which follow a zero-length bitfield if greater than a bitfields base type normal alignment. Corresponds to EMPTY_FIELD_BOUNDARY in GCC. This value is only used when BitFieldPacking.isTypeAlignmentEnabled() returns false.
      Specified by:
      getZeroLengthBoundary in interface BitFieldPacking
      Returns:
      fixed alignment size as number of bytes for a bit-field which follows a zero-length bit-field
    • setUseMSConvention

      public void setUseMSConvention(boolean useMSConvention)
      Control if the alignment and packing of bit-fields follows MSVC conventions. When this is enabled it takes precedence over all other bitfield packing controls.
      Parameters:
      useMSConvention - true if MSVC packing conventions are used, else false (e.g., GNU conventions apply).
    • setTypeAlignmentEnabled

      public void setTypeAlignmentEnabled(boolean typeAlignmentEnabled)
      Control whether the alignment of bit-field types is respected when laying out structures. Corresponds to PCC_BITFIELD_TYPE_MATTERS in gcc.
      Parameters:
      typeAlignmentEnabled - true if the alignment of the bit-field type should be used to impact the alignment of the containing structure, and ensure that individual bit-fields will not straddle an alignment boundary.
    • setZeroLengthBoundary

      public void setZeroLengthBoundary(int zeroLengthBoundary)
      Indicate a fixed alignment size in bytes which should be used for zero-length bit-fields.
      Parameters:
      zeroLengthBoundary - fixed alignment size as number of bytes for a bit-field which follows a zero-length bit-field. A value of 0 causes zero-length type size to be used.
    • encode NEW

      public void encode(Encoder encoder) throws IOException
      Write configuration to a stream as a \ element
      Parameters:
      encoder - is the stream encoder
      Throws:
      IOException - for errors writing to the underlying stream
    • restoreXml

      protected void restoreXml(XmlPullParser parser)
      Restore settings from a \ tag in an XML stream. The XML is designed to override existing settings from the default constructor
      Parameters:
      parser - is the XML stream