|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.multijava.util.Utils
org.jmlspecs.jmlrac.TransUtils
A utility class for translating JML annotated Java classes into RAC-enabled classes.
| Field Summary | |
private static HashSet |
excludedFromInheritance
The set of types to be excluded, for specification inheritance, from making non-reflective calls to. |
private static HashSet |
includedInInheritance
The set of types to which non-reflective calls are made for specification inheritance. |
private static String[] |
nonReflectiveRefinementTypes
An array of type names to which non-reflective calls would be made for specification inheritance. |
private static String[] |
nonReflectiveTypes
An array of type names to which non-reflective calls would be made for specification inheritance. |
static JTypeDeclarationType |
typeDecl
|
private static Map |
wrapperClasses
Mapping from primitive types to their wrapper classes |
| Fields inherited from class org.multijava.util.Utils |
DBG_LEVEL_HIGH, DBG_LEVEL_LOW, DBG_LEVEL_NO |
| Fields inherited from interface org.jmlspecs.jmlrac.RacConstants |
MN_CHECK_HC, MN_CHECK_INV, MN_CHECK_POST, MN_CHECK_PRE, MN_CHECK_XPOST, MN_EVAL_OLD, MN_GHOST, MN_INIT, MN_INTERNAL, MN_MODEL, MN_MODEL_PUBLIC, MN_RESTORE_FROM, MN_SAVE_TO, MN_SPEC, MN_SPEC_PUBLIC, TN_JMLCHECKABLE, TN_JMLSURROGATE, TN_JMLUNIT_TEST_POSTFIX, TN_JMLUNIT_TESTDATA_POSTFIX, TN_JMLVALUE, TN_SURROGATE, VN_ASSERTION, VN_CATCH_VAR, VN_CLASS_INIT, VN_CONSTRUCTED, VN_DELEGEE, VN_ERROR_SET, VN_EXCEPTION, VN_FREE_VAR, VN_INIT, VN_OLD_VAR, VN_POST_VAR, VN_PRE_VAR, VN_PRECOND, VN_RAC_COMPILED, VN_RAC_LEVEL, VN_RESULT, VN_STACK_VAR, VN_XRESULT |
| Fields inherited from interface org.multijava.mjc.Constants |
ACC_PURE, AMID_JAVA_MATH, AMID_MAX, AMID_SAFE_MATH, CMP_VERSION, JAV_ASSERTION_ERROR, JAV_CLASS, JAV_CLASSLOADER, JAV_CLASSNOTFOUND_EXCEPTION, JAV_CLONE, JAV_CLONEABLE, JAV_CONSTRUCTOR, JAV_ERROR, JAV_EXCEPTION, JAV_INIT, JAV_LENGTH, JAV_NAME_SEPARATOR, JAV_NOCLASSDEFFOUND_ERROR, JAV_OBJECT, JAV_OUTER_THIS, JAV_RMJ_RUNTIME_EXCEPTION, JAV_RUNTIME, JAV_RUNTIME_EXCEPTION, JAV_SERIALIZABLE, JAV_STATIC_INIT, JAV_STRING, JAV_STRINGBUFFER, JAV_SUPER, JAV_THIS, JAV_THROWABLE, MJ_ANCHOR, OPE_BAND, OPE_BNOT, OPE_BOR, OPE_BSR, OPE_BXOR, OPE_EQ, OPE_GE, OPE_GT, OPE_LAND, OPE_LE, OPE_LNOT, OPE_LOR, OPE_LT, OPE_MINUS, OPE_NE, OPE_PERCENT, OPE_PLUS, OPE_POSTDEC, OPE_POSTINC, OPE_PREDEC, OPE_PREINC, OPE_SIMPLE, OPE_SL, OPE_SLASH, OPE_SR, OPE_STAR, TID_ARRAY, TID_BOOLEAN, TID_BYTE, TID_CHAR, TID_CLASS, TID_DOUBLE, TID_FLOAT, TID_INT, TID_LONG, TID_MAX, TID_SHORT, TID_VOID, UNIV_ARRAY_TMP, UNIV_TMP |
| Constructor Summary | |
TransUtils()
|
|
| Method Summary | |
static String[] |
applyBigintBinOperator(String binOp)
Returns a two-item string array which has the two parts in biginteger operation formula mapping the given binary operator binOp |
static String[] |
applyBigintCast(CType typeDest,
CType typeSource,
String strTypeDest)
Returns a two-item string array which has the two parts in biginteger operation formula mapping the given destination type typeDest
and source type typeSource in cast expression. the parm
strTypeDest is needed for in different class, the method "toString"
is difined differently. |
static String[] |
applyBigintToNumber(CType typeSource,
CType typeNumber)
Returns a two-item string array which has the two parts in biginteger operation formula mapping the given source type typeSource
which is a \bigint or numerical type to destination number type
typeNumber which is a numerical type.cast expression. the parm
strTypeDest is needed for in different class, the method "toString"
is difined differently. |
static String |
applyBigintUnOperator(String unaryOp)
Returns a string is the end part in biginteger operation formula mapping the given unary operator unaryOp |
static String |
applyUnaryPromoteExpression(CType typeSelf,
CType typeExpr,
String strExpr)
Returns a string that represents the Java code that casts strExpr
of type typeExpr to typeSelf. |
static boolean |
beingTested(CClass clazz)
Returns true if the class named is a spec file for which a test wrapper is being created. |
static String[] |
createBigintConvertionAssertion(CType typeSource,
CType typeDest)
Returns a two-item string array which has the two parts in out of range assertion code for translating \bigint to number. |
static String |
defaultValue(CType type)
Returns a string representation of the default value of the given type, type. |
static String |
dynamicCallName(CClass clazz)
Returns the name to be used to make dynamic calls to assertion check methods of the given class. |
static String |
evalOldName(String cls,
boolean isStatic)
Returns the name of an old-expression evaluation method for the class named cls. |
static String |
evalOldName(JmlTypeDeclaration tdecl,
boolean isStatic)
Returns the name of an old-expression evaluation method for the type declaration. |
static String |
evalOldName(CClass clazz,
boolean isStatic)
|
static String |
evalOldName(CClassType ctype,
boolean isStatic)
|
static boolean |
excludedFromInheritance(CClass clazz)
Returns true if the given type, clazz, is
excluded from the set of types from which specifications can be
inherited without using reflective method calls. |
static int |
getTypeID(CType type)
|
private static void |
initIncludedInInheritance()
Initializes the set of types to which non-reflective calls are made for specification inheritance. |
static void |
initIncludedInInheritance(CClass cc)
|
static String |
invariantLikeName(String prefix,
CClass clazz,
boolean forStatic)
Returns the name of invariant-like assertion check method. |
static boolean |
isBigintArray(CType type)
To check if the type is "\bigint[]" |
static boolean |
isMain(JmlMethodDeclaration mdecl)
Returns true if the argument is a main method
declaration |
static String |
modelPublicAccessorName(CMethod meth)
Returns the name of the spec_public accessor for the method whose name is ident. |
static String |
numberToBigint(String strVar,
CType type)
Returns a string that represents the Java code that convert the parm strVar to its corresponding value of BigInteger which is
the other parm typ indicate the type of strVar. |
static boolean |
specAccessorNeeded(long modifiers)
Returns true if the modifiers indicate that we need to generate specification-only accessor method. |
static String |
specPublicAccessorName(String ident)
Returns the name of the spec_public accessor for the method whose name is ident. |
static String |
subtypeConstraintName(String prefix,
CClass clazz,
boolean isWeakly)
Returns the name of invariant-like assertion check method. |
static String |
toPrintableString(char c)
Returns a printable string representation for the given char value. |
static String |
toString(double value)
Returns the string representation of the given double value. |
static String |
toString(float value)
Returns the string representation of the given float value. |
static String |
toString(CType value)
Returns the string representation of the given type. |
static String |
typeToClass(CType type)
Returns the string representation of the wrapper class for the given type. |
protected static String |
unwrapObject(CType type,
String var)
Returns a string representation of unwrapped value of var
with respect to type type. |
static boolean |
useReflection()
Returns true if we use reflection for specification inheritance. |
static String |
wrappedValue(CType type,
String ident)
Returns a string representation of a Java expression that denotes a wrapper object for the given variable, ident of type, type. |
static String |
wrapValue(CType type,
String var)
Returns the string representation of wrapping the value of variable var of type type into an
object. |
| Methods inherited from class org.multijava.util.Utils |
assertTrue, assertTrue, combineArrays, escapeString, escapeString, fail, fail, getFilePath, hasFlag, hasOtherFlags, parsePathParts, relativePathTo, splitQualifiedName, splitQualifiedName, stripJavaModifiers, stripNonJavaModifiers, stripPrivateModifier, unescapeString, vectorToArray, vectorToIntArray |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
public static JTypeDeclarationType typeDecl
private static HashSet excludedFromInheritance
private static HashSet includedInInheritance
private static final String[] nonReflectiveTypes
JML2/specs/java.
private static final String[] nonReflectiveRefinementTypes
JML2/specs/java.
private static Map wrapperClasses
| Constructor Detail |
public TransUtils()
| Method Detail |
public static boolean specAccessorNeeded(long modifiers)
ensures \result == (hasFlag(modifiers, ACC_PRIVATE) && (hasFlag(modifiers, ACC_SPEC_PUBLIC) || hasFlag(modifiers, ACC_SPEC_PROTECTED)));
public static String defaultValue(CType type)
type. The defualt value is determined
according to JLS 4.4.5, e.g., "false" for boolean.
public static String wrappedValue(CType type,
String ident)
ident of type, type. E.g., "new
Boolean(x)" if ident is "x"
and type is boolean.
public static boolean isMain(JmlMethodDeclaration mdecl)
true if the argument is a main method
declaration
public static String evalOldName(String cls,
boolean isStatic)
cls.
cls - class nameisStatic - static or instance method?
requires cls != null; ensures \result != null;
public static String evalOldName(JmlTypeDeclaration tdecl,
boolean isStatic)
tdecl - type declarationisStatic - static or instance method?
requires tdecl != null; ensures \result != null;
public static String evalOldName(CClassType ctype,
boolean isStatic)
public static String evalOldName(CClass clazz,
boolean isStatic)
public static String invariantLikeName(String prefix,
CClass clazz,
boolean forStatic)
public static String subtypeConstraintName(String prefix,
CClass clazz,
boolean isWeakly)
public static String dynamicCallName(CClass clazz)
public static boolean beingTested(CClass clazz)
public static String typeToClass(CType type)
int), the standard wrapper class (e.g.,
"java.lang.Integer.TYPE" is returned; otherwise,
the type itself (e.g., type.toString() + ".class")
is returned.
requires type != null; ensures \result != null && \fresh(\result);
wrapValue(CType,String)
protected static String unwrapObject(CType type,
String var)
var
with respect to type type.
E.g., "((Integer)" + var + ").intValue()"
if type is int.
wrapValue(CType,String)
public static String wrapValue(CType type,
String var)
var of type type into an
object. E.g., "new java.lang.Integer(" + var +
")" for type int.
requires type != null && var != null; ensures \result != null && \fresh(\result);
unwrapObject(CType,String)public static String toString(double value)
public static String toString(float value)
public static String toString(CType value)
JmlStdType.TYPE, the result is
"java.lang.Class"; otherwise it is
value.toString().
public static int getTypeID(CType type)
public static String toPrintableString(char c)
public static String specPublicAccessorName(String ident)
ident.
public static String modelPublicAccessorName(CMethod meth)
ident.
public static boolean useReflection()
public static boolean excludedFromInheritance(CClass clazz)
clazz, is
excluded from the set of types from which specifications can be
inherited without using reflective method calls. All types from
JDK except for those listed in
includedInInheritance are excluded. Also excluded
are thise listed in excludedFromInheritance.
excludedFromInheritance,
includedInInheritanceprivate static void initIncludedInInheritance()
assignable includedInInheritance; ensures includedInInheritance != null;
includedInInheritancepublic static void initIncludedInInheritance(CClass cc)
public static String[] applyBigintBinOperator(String binOp)
binOp
TransExpression.applyOperator(String v1, String v2, String binOp, CType type)public static String applyBigintUnOperator(String unaryOp)
unaryOp
TransExpression.applyOperator(String v, String unaryOp, CType type)
public static String[] applyBigintCast(CType typeDest,
CType typeSource,
String strTypeDest)
typeDest
and source type typeSource in cast expression. the parm
strTypeDest is needed for in different class, the method "toString"
is difined differently.
RacPrettyPrinter.toString(org.multijava.mjc.CType),
TransExpression.toString(org.multijava.mjc.CType),
TransExpression.applyCast(String v, CType typeDest, CType typeVar)
public static String applyUnaryPromoteExpression(CType typeSelf,
CType typeExpr,
String strExpr)
strExpr
of type typeExpr to typeSelf.
TransExpression.visitUnaryPromoteExpression(org.multijava.mjc.JUnaryPromote)
public static String numberToBigint(String strVar,
CType type)
strVar to its corresponding value of BigInteger which is
the other parm typ indicate the type of strVar.
public static String[] applyBigintToNumber(CType typeSource,
CType typeNumber)
typeSource
which is a \bigint or numerical type to destination number type
typeNumber which is a numerical type.cast expression. the parm
strTypeDest is needed for in different class, the method "toString"
is difined differently.
TransExpression.applyArrayAccessExpression(java.lang.String, org.multijava.mjc.CType, org.multijava.mjc.CType),
RacPrettyPrinter.visitArrayAccessExpression(org.multijava.mjc.JArrayAccessExpression)
public static String[] createBigintConvertionAssertion(CType typeSource,
CType typeDest)
TransExpression.applyArrayAccessExpression(java.lang.String, org.multijava.mjc.CType, org.multijava.mjc.CType),
RacPrettyPrinter.visitArrayAccessExpression(org.multijava.mjc.JArrayAccessExpression)public static boolean isBigintArray(CType type)
|
JML | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||