Class 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.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BitFieldPackingImpl

        public BitFieldPackingImpl()
    • 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 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 and #isZeroLengthAlignmentEnabled() returns true.
        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.