KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > percederberg > grammatica > code > CodeElement


1 /*
2  * CodeElement.java
3  *
4  * This work is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published
6  * by the Free Software Foundation; either version 2 of the License,
7  * or (at your option) any later version.
8  *
9  * This work is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
17  * USA
18  *
19  * As a special exception, the copyright holders of this library give
20  * you permission to link this library with independent modules to
21  * produce an executable, regardless of the license terms of these
22  * independent modules, and to copy and distribute the resulting
23  * executable under terms of your choice, provided that you also meet,
24  * for each linked independent module, the terms and conditions of the
25  * license of that module. An independent module is a module which is
26  * not derived from or based on this library. If you modify this
27  * library, you may extend this exception to your version of the
28  * library, but you are not obligated to do so. If you do not wish to
29  * do so, delete this exception statement from your version.
30  *
31  * Copyright (c) 2003 Per Cederberg. All rights reserved.
32  */

33
34 package net.percederberg.grammatica.code;
35
36 import java.io.PrintWriter JavaDoc;
37
38 /**
39  * The abstract base class for all code elements. The code element
40  * classes handles some source code construct and allows printing and
41  * comparing it to other constructs.
42  *
43  * @author Per Cederberg, <per at percederberg dot net>
44  * @version 1.0
45  */

46 public abstract class CodeElement implements Comparable JavaDoc {
47
48     /**
49      * Compares this object to another one. The comparison is based
50      * on the code element category, reporting equality between
51      * elements within the same category. Objects not being code
52      * elements will cause zero (0) to be returned.
53      *
54      * @param obj the object to compare to
55      *
56      * @return negative if this object preceeds the other one,
57      * zero (0) if the objects are equal, or
58      * positive if this object succeeds the other one
59      */

60     public int compareTo(Object JavaDoc obj) {
61         if (obj instanceof CodeElement) {
62             return category() - ((CodeElement) obj).category();
63         } else {
64             return 0;
65         }
66     }
67
68     /**
69      * Returns a numeric category number for the code element. A lower
70      * category number implies that the code element should be placed
71      * before code elements with a higher category number within a
72      * declaration.
73      *
74      * @return the category number
75      */

76     public abstract int category();
77
78     /**
79      * Prints the code element to the specified output stream.
80      *
81      * @param out the output stream
82      * @param style the code style to use
83      * @param indent the indentation level
84      */

85     public abstract void print(PrintWriter JavaDoc out,
86                                CodeStyle style,
87                                int indent);
88 }
89
Popular Tags