KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > jga > parser > FunctorRef


1 // ============================================================================
2
// $Id: FunctorRef.java,v 1.6 2005/12/17 04:16:18 davidahall Exp $
3
// Copyright (c) 2004-2005 David A. Hall
4
// ============================================================================
5
// The contents of this file are subject to the Common Development and
6
// Distribution License (CDDL), Version 1.0 (the License); you may not use this
7
// file except in compliance with the License. You should have received a copy
8
// of the the License along with this file: if not, a copy of the License is
9
// available from Sun Microsystems, Inc.
10
//
11
// http://www.sun.com/cddl/cddl.html
12
//
13
// From time to time, the license steward (initially Sun Microsystems, Inc.) may
14
// publish revised and/or new versions of the License. You may not use,
15
// distribute, or otherwise make this file available under subsequent versions
16
// of the License.
17
//
18
// Alternatively, the contents of this file may be used under the terms of the
19
// GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which
20
// case the provisions of the LGPL are applicable instead of those above. If you
21
// wish to allow use of your version of this file only under the terms of the
22
// LGPL, and not to allow others to use your version of this file under the
23
// terms of the CDDL, indicate your decision by deleting the provisions above
24
// and replace them with the notice and other provisions required by the LGPL.
25
// If you do not delete the provisions above, a recipient may use your version
26
// of this file under the terms of either the CDDL or the LGPL.
27
//
28
// This library is distributed in the hope that it will be useful,
29
// but WITHOUT ANY WARRANTY; without even the implied warranty of
30
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
31
// ============================================================================
32

33 package net.sf.jga.parser;
34
35 /**
36  * Contains and describes a functor being built by the functor parser. Many of the
37  * parsing methods return and/or accept instances of this interface that describe a
38  * functor, describe its broad type, the number, names, and types of its arguments,
39  * and the type returned.
40  * <p>
41  * Copyright &copy; 2004-2005 David A. Hall
42  * @author <a HREF="mailto:davidahall@users.sf.net">David A. Hall</a>
43  */

44
45 public interface FunctorRef<T> {
46
47     /**
48      * Returns the functor to which this refers.
49      */

50     public T getFunctor();
51
52     /**
53      * value returned by <tt>getReferenceType()</tt> for constants. A constant is
54      * by definition a Generator, and many constant expressions can be evaluated at
55      * parse time.
56      */

57     
58     static public final int CONSTANT = -2;
59     
60     /**
61      * value returned by <tt>getReferenceType()</tt> when it refers to an Identity.
62      * An Identity is by definition a UnaryFunctor, and in many cases, binding an
63      * Identity is unnecessary. Singling out this special case reduces the complexity
64      * of many functors that are produced.
65      */

66     
67     static public final int IDENTITY = -1;
68     
69     /**
70      * value returned by <tt>getReferenceType()</tt> when it refers to a generator.
71      */

72     
73     static public final int GENERATOR = 0;
74     
75     /**
76      * value returned by <tt>getReferenceType()</tt> when it refers to a unary functor.
77      */

78     
79     static public final int UNARY_FN = 1;
80     
81     /**
82      * value returned by <tt>getReferenceType()</tt> when it refers to a binary functor.
83      */

84     
85     static public final int BINARY_FN = 2;
86
87     /**
88      * returns the type of objects that the current functor returns.
89      */

90     public Class JavaDoc getReturnType();
91
92     /**
93      * returns the number of arguments that the current functor requires. Currently,
94      * the implementations tend to be hard coded.
95      */

96     public int getNumberArgs();
97
98     /**
99      * returns the type of the i'th argument to the current functor.
100      * @throws IllegalArgumentException if the current functor takes fewer than i
101      * arguments (or if i is < 0)
102      */

103     public Class JavaDoc getArgType(int i);
104     
105     /**
106      * returns the name of the i'th argument to the current functor, as described
107      * in the expression being parsed.
108      * @throws IllegalArgumentException if the current functor takes fewer than i
109      * arguments (or if i is < 0)
110      */

111     public String JavaDoc getArgName(int i);
112     
113     /**
114      * returns a value that classifies the functor by the number of arguments that
115      * it requires.
116      */

117     public int getReferenceType();
118
119 }
120
121
Popular Tags