package org.reasm.m68k.assembly.internal; import javax.annotation.Nonnull; import javax.annotation.concurrent.Immutable; import org.reasm.messages.DirectiveRequiresLabelErrorMessage; /** * The <code>NAMESPACE</code> directive. * * @author Francis Gagné */ @Immutable class NamespaceDirective extends Mnemonic { @Nonnull static final NamespaceDirective NAMESPACE = new NamespaceDirective(); private NamespaceDirective() { } @Override void assemble(M68KAssemblyContext context) { context.sizeNotAllowed(); context.requireNumberOfOperands(0); final ScopedEffectBlockEvents blockEvents = getScopedEffectBlockEvents(context); if (context.numberOfLabels < 1) { context.addMessage(new DirectiveRequiresLabelErrorMessage(Mnemonics.NAMESPACE)); } else { context.builder.enterNamespace(context.getLabelText(context.numberOfLabels - 1)); blockEvents.effectApplied(); } } @Override void defineLabels(M68KAssemblyContext context) { context.defineExtraLabels(); } }