/*******************************************************************************
* Copyright (c) 2013 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 melnorme.lang.tooling.ast.CommonASTNode;
import melnorme.lang.tooling.ast.IASTVisitor;
import melnorme.lang.tooling.ast.util.ASTCodePrinter;
import melnorme.lang.tooling.ast_actual.ASTNodeTypes;
import dtool.parser.common.IToken;
/**
* Align declaration
*
* Technicaly DMD doesn't accept this declaration as a statement, but structurally we allow it,
* even though a syntax or semantic error may still be issued.
*
*/
public class AttribAlign extends Attribute {
public final IToken alignNum;
public AttribAlign(IToken alignNum) {
this.alignNum = alignNum;
}
@Override
public ASTNodeTypes getNodeType() {
return ASTNodeTypes.ATTRIB_ALIGN;
}
@Override
public void visitChildren(IASTVisitor visitor) {
}
@Override
public CommonASTNode doCloneTree() {
return new AttribAlign(alignNum);
}
@Override
public void toStringAsCode(ASTCodePrinter cp) {
cp.append("align");
if(alignNum != null) {
cp.appendStrings("(", alignNum.getSourceValue(), ")");
}
}
}