View Javadoc

1   ////////////////////////////////////////////////////////////////////////////////
2   // MillScript: an Open Spice interpreter and batch website creation tool
3   // Copyright (C) 2001-2004 Open World Ltd
4   //
5   // This file is part of MillScript.
6   //
7   // MillScript is free software; you can redistribute it and/or modify it under
8   // the terms of the GNU General Public License as published by the Free
9   // Software Foundation; either version 2 of the License, or (at your option)
10  // any later version.
11  //
12  // MillScript is distributed in the hope that it will be useful, but WITHOUT
13  // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
15  // more details.
16  //
17  // You should have received a copy of the GNU General Public License along with
18  // MillScript; if not, write to the Free Software Foundation, Inc., 59 Temple
19  // Place, Suite 330, Boston, MA  02111-1307  USA
20  ////////////////////////////////////////////////////////////////////////////////
21  package org.millscript.millscript.action;
22  
23  import org.millscript.millscript.vm.Machine;
24  
25  /**
26   * This class is the base of all unary actions, i.e. those that operate on a
27   * single value.
28   */
29  public abstract class UnaryOpAction extends Action {
30  
31      /**
32       * The action for this unary operation.
33       */
34      private final Action action;
35  
36      /**
37       * Constructs a new unary action, for the specified action.
38       *
39       * @param a the single action
40       */
41      protected UnaryOpAction( final Action a ) {
42          this.action = a;
43      }
44  
45      /**
46       * Performs this binary action on the specified value.
47       *
48       * @param x the unary value
49       * @return  the result of this unary action
50       */
51      public abstract Object perform( final Object x );
52  
53      /**
54       * @see org.millscript.millscript.action.Action#action(org.millscript.millscript.vm.Machine)
55       */
56      @Override
57      public final void action( final Machine mc ) {
58          mc.pushObject( perform( action.act1( mc ) ) );
59      }
60  
61  }