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 intgetZeroLengthBoundary()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.booleanisTypeAlignmentEnabled()Control whether the alignment of bit-field types is respected when laying out structures.voidsetTypeAlignmentEnabled(boolean typeAlignmentEnabled)Control whether the alignment of bit-field types is respected when laying out structures.voidsetUseMSConvention(boolean useMSConvention)Control if the alignment and packing of bit-fields follows MSVC conventions.voidsetZeroLengthBoundary(int zeroLengthBoundary)Indicate a fixed alignment size in bytes which should be used for zero-length bit-fields.booleanuseMSConvention()Control if the alignment and packing of bit-fields follows MSVC conventions.
-
-
-
Method Detail
-
useMSConvention
public boolean useMSConvention()
Description copied from interface:BitFieldPackingControl 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:
useMSConventionin interfaceBitFieldPacking- Returns:
- true if MSVC packing conventions are used, else false (e.g., GNU conventions apply).
-
isTypeAlignmentEnabled
public boolean isTypeAlignmentEnabled()
Description copied from interface:BitFieldPackingControl whether the alignment of bit-field types is respected when laying out structures. Corresponds to PCC_BITFIELD_TYPE_MATTERS in GCC.- Specified by:
isTypeAlignmentEnabledin 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:BitFieldPackingA 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:
getZeroLengthBoundaryin 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.
-
-