package sharpen.xobotos.generator;
import org.eclipse.jdt.core.dom.EnumDeclaration;
import sharpen.core.CSharpBuilder;
import sharpen.core.csharp.ast.CSEnum;
import sharpen.core.csharp.ast.CSTypeReference;
import sharpen.core.framework.BindingUtils;
import sharpen.core.framework.CSharpDriver.IBuilderDelegate;
import sharpen.xobotos.api.actions.ModifyEnum;
import sharpen.xobotos.api.bindings.EnumBinding;
import sharpen.xobotos.api.templates.EnumTemplate;
import sharpen.xobotos.output.OutputType;
public class EnumBuilder extends MemberBuilder<EnumDeclaration, CSEnum, EnumTemplate> {
protected EnumBuilder(EnumTemplate template, OutputType output, EnumDeclaration node) {
super(template, CSEnum.class, output, node);
}
@Override
public String getNodeName() {
return BindingUtils.qualifiedName(getASTNode().resolveBinding());
}
@Override
protected boolean buildInternal(CSharpBuilder builder, IBuilderDelegate<?> delegate, CSEnum member) {
EnumBinding binding = getTemplate().getBinding();
if (binding != null) {
String baseType = binding.getBaseType();
if ((baseType != null) && !baseType.isEmpty())
member.baseType(new CSTypeReference(baseType));
}
return true;
}
@Override
protected boolean applyActions(CSEnum theEnum) {
ModifyEnum action = getTemplate().getModificationAction();
if (action != null)
action.modify(this, getASTNode(), theEnum);
return true;
}
}