01: /**************************************************************************/
02: /* N I C E */
03: /* A high-level object-oriented research language */
04: /* (c) Daniel Bonniot 2003 */
05: /* */
06: /* This program is free software; you can redistribute it and/or modify */
07: /* it under the terms of the GNU General Public License as published by */
08: /* the Free Software Foundation; either version 2 of the License, or */
09: /* (at your option) any later version. */
10: /* */
11: /**************************************************************************/package bossa.syntax;
12:
13: /**
14: A macro.
15:
16: This interface should be implemented by classes that are used
17: to implement inlined methods, and that need to do some semantic checking
18: on their actual arguments.
19:
20: @version $Date: 2003/04/30 18:55:31 $
21: @author Daniel Bonniot (bonniot@users.sourceforge.net)
22: */
23:
24: public interface Macro extends gnu.expr.Inlineable {
25: /**
26: For each call site, this method is called with the actual arguments
27: of the macro. This can be used to check special requirements on the
28: arguments that could not be expressed in the type of the macro.
29: For instance, it might be necessary to check that a certain argument
30: is assignable if it is modified by the macro.
31: */
32: void checkSpecialRequirements(Expression[] arguments);
33: }
|