package edu.ucsd.arcum.interpreter.fragments; import org.eclipse.jdt.core.dom.AST; import org.eclipse.jdt.core.dom.Modifier; import org.eclipse.jdt.core.dom.Modifier.ModifierKeyword; public enum ModifierElement implements ISynthesizedEntity { MOD_STATIC(Modifier.ModifierKeyword.STATIC_KEYWORD), MOD_ABSTRACT(Modifier.ModifierKeyword.ABSTRACT_KEYWORD), MOD_FINAL(Modifier.ModifierKeyword.FINAL_KEYWORD), MOD_NATIVE(Modifier.ModifierKeyword.NATIVE_KEYWORD), MOD_SYNCHRONIZED(Modifier.ModifierKeyword.SYNCHRONIZED_KEYWORD), MOD_TRANSIENT(Modifier.ModifierKeyword.TRANSIENT_KEYWORD), MOD_VOLATILE(Modifier.ModifierKeyword.VOLATILE_KEYWORD), MOD_STRICTFP(Modifier.ModifierKeyword.STRICTFP_KEYWORD), MOD_PUBLIC(Modifier.ModifierKeyword.PUBLIC_KEYWORD, true), MOD_PROTECTED(Modifier.ModifierKeyword.PROTECTED_KEYWORD, true), MOD_PRIVATE(Modifier.ModifierKeyword.PRIVATE_KEYWORD, true), MOD_PACKAGE(null, true)/*special default-access specifier*/, ; private ModifierKeyword keyword; private boolean isAccessSpecifier; private ModifierElement(ModifierKeyword keyword) { this.keyword = keyword; this.isAccessSpecifier = false; } private ModifierElement(ModifierKeyword keyword, boolean isAccessSpecifier) { this.keyword = keyword; this.isAccessSpecifier = isAccessSpecifier; } protected void buildString(StringBuilder buff, String indent) { if (keyword == null) { buff.append("package"); } else { buff.append(keyword.toString()); } buff.append(" (ModifierElement)"); } public ModifierKeyword getKeyword() { return keyword; } public boolean isAccessSpecifier() { return isAccessSpecifier; } public boolean isSameModifier(Modifier modifier) { if (keyword == null) return false; return keyword.toString().equals(modifier.getKeyword().toString()); } public static ModifierElement lookup(Modifier modifier) { for (ModifierElement element : values()) { if (element.isSameModifier(modifier)) return element; } return null; } public Modifier asModifierASTNode(AST ast) { return ast.newModifier(this.keyword); } }