// Copyright (c) 1996-2002 Brian D. Carlstrom

package bdc.scheme.procedure;

import bdc.scheme.GlobalEnvironment;
import bdc.scheme.Scheme;
import bdc.scheme.SchemeException;
import bdc.scheme.Stack;
import bdc.scheme.expression.Procedure2;

/**
    DefineRewriter adds a new macro for given symbol name
*/
public class DefineRewriter extends Procedure2
{
    public Object apply2 (Stack stack) throws SchemeException
    {
        Object o1 = stack.array[stack.inUse-1];
        Object o2 = stack.array[stack.inUse-2];
        stack.scheme.globalEnvironment.define(Scheme.symbol(o1, this),
                                              Scheme.procedure(o2, this),
                                              GlobalEnvironment.Macro);
        return Scheme.Unspecified;
    }
}
