7.1 Encoding of Modifiers
BML modifiers, see Modifiers, are encoded in suitable attributes
using binary JVM access_flags
and BML_flags
fields. The
bit values of BML_flags
and their summary meaning is given in the
following table:
BML_SPEC_PUBLIC = 0x00000001
- a Java feature (method/field etc.) declared as public for
specification purposes; it can only be used when the feature has a
more restrictive visibility in Java; this flag is equal to the 16-bit
ACC_PUBLIC
JVM flag
BML_SPEC_PROTECTED = 0x00000004
- a Java feature (method/field etc.) declared as protected for
specification purposes; it can only be used when the feature has a
more restrictive visibility in Java; this flag is equal to the 16-bit
ACC_PROTECTED
JVM flag
BML_NON_NULL = 0x00000020
- a feature (field, method result, method's parameter, local variable etc.)
which cannot be
null
BML_NULLABLE = 0x00000040
- a feature (field, method result, method's parameter, local variable etc.)
which can be
null
BML_PURE = 0x00000080
- a method (or class or interface) that does not have side effects
BML_HELPER = 0x00000100
- a method which does not have to respect invariants and history
constraints
BML_PEER = 0x00000400
- ownership modifier for peer features (field, method result, method's
parameter, local variable etc.)
BML_REP = 0x00000800
- ownership modifier for rep features (field, method result, method's
parameter, local variable etc.)
BML_READONLY = 0x00001000
- ownership modifier for readonly features (field, method result, method's
parameter, local variable etc.)
BML_ELEM_PEER = 0x00002000
- ownership modifier for features (field, method result, method's
parameter, local variable etc.) with arrays containing peer elements
BML_ELEM_READONLY = 0x00002000
- ownership modifier for features (field, method result, method's
parameter, local variable etc.) with arrays containing readonly elements
Note that for a given feature (field, method result, method's
parameter, local variable etc.)
at most one of SPEC_PUBLIC
, SPEC_PROTECTED
can be set
(when applicable),
at most
one of BML_NON_NULL
and BML_NULLABLE
(when applicable),
at most
one of BML_PEER
, BML_REP
, BML_READONLY
(when applicable),
and at most one of BML_ELEM_PEER
and BML_ELEM_READONLY
(when applicable).