Package ghidra.program.model.data
Class BitFieldPackingImpl
- java.lang.Object
-
- ghidra.program.model.data.BitFieldPackingImpl
-
- All Implemented Interfaces:
BitFieldPacking
public class BitFieldPackingImpl extends java.lang.Object implements BitFieldPacking
-
-
Constructor Summary
Constructors Constructor Description BitFieldPackingImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getZeroLengthBoundary()
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
isTypeAlignmentEnabled()
Control whether the alignment of bit-field types is respected when laying out structures.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
useMSConvention()
Control if the alignment and packing of bit-fields follows MSVC conventions.
-
-
-
Method Detail
-
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 interfaceBitFieldPacking
- 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 interfaceBitFieldPacking
- 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 whenBitFieldPacking.isTypeAlignmentEnabled()
returns false and#isZeroLengthAlignmentEnabled()
returns true.- Specified by:
getZeroLengthBoundary
in interfaceBitFieldPacking
- 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.
-
-