/******************************************************************************* * Copyright (c) 2012 Bruno Medeiros and other Contributors. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Bruno Medeiros - initial API and implementation *******************************************************************************/ package dtool.ast.declarations; import dtool.parser.DeeTokens; import melnorme.lang.tooling.ast.CommonASTNode; import melnorme.lang.tooling.ast.IASTVisitor; import melnorme.lang.tooling.ast.ISourceRepresentation; import melnorme.lang.tooling.ast.util.ASTCodePrinter; import melnorme.lang.tooling.ast_actual.ASTNodeTypes; public class AttribBasic extends Attribute { public final AttributeKinds attribKind; public AttribBasic(AttributeKinds declAttrib) { this.attribKind = declAttrib; } @Override public ASTNodeTypes getNodeType() { return ASTNodeTypes.ATTRIB_BASIC; } @Override public void visitChildren(IASTVisitor visitor) { } @Override protected CommonASTNode doCloneTree() { return new AttribBasic(attribKind); } @Override public void toStringAsCode(ASTCodePrinter cp) { cp.appendToken(attribKind); } public static enum AttributeKinds implements ISourceRepresentation { ABSTRACT, AUTO, CONST, IMMUTABLE, INOUT, SHARED, DEPRECATED, ENUM, EXTERN, FINAL, NOTHROW, OVERRIDE, PURE, __GSHARED, SCOPE, STATIC, SYNCHRONIZED, REF, __THREAD, ; public static AttributeKinds fromToken(DeeTokens token) { switch (token) { case KW_ABSTRACT: return ABSTRACT; case KW_AUTO: return AUTO; case KW_CONST: return CONST; case KW_IMMUTABLE: return IMMUTABLE; case KW_INOUT: return INOUT; case KW_SHARED: return SHARED; case KW_DEPRECATED: return DEPRECATED; case KW_ENUM: return ENUM; case KW_EXTERN: return EXTERN; case KW_FINAL: return FINAL; case KW_NOTHROW: return NOTHROW; case KW_OVERRIDE: return OVERRIDE; case KW_PURE: return PURE; case KW___GSHARED: return __GSHARED; case KW_SCOPE: return SCOPE; case KW_STATIC: return STATIC; case KW_SYNCHRONIZED: return SYNCHRONIZED; case KW_REF: return REF; case KW___THREAD: return __THREAD; default: return null; } } @Override public String getSourceValue() { return toString().toLowerCase(); } } }