cleanup + misc. fixes
[mir.git] / source / mir / misc / Location.java
1 /*
2  * Copyright (C) 2001, 2002 The Mir-coders group
3  *
4  * This file is part of Mir.
5  *
6  * Mir is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * Mir is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Mir; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  * In addition, as a special exception, The Mir-coders gives permission to link
21  * the code of this program with  any library licensed under the Apache Software License, 
22  * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library 
23  * (or with modified versions of the above that use the same license as the above), 
24  * and distribute linked combinations including the two.  You must obey the 
25  * GNU General Public License in all respects for all of the code used other than 
26  * the above mentioned libraries.  If you modify this file, you may extend this 
27  * exception to your version of the file, but you are not obligated to do so.  
28  * If you do not wish to do so, delete this exception statement from your version.
29  */
30 package mir.misc;
31
32 /**
33  * Stores the file name and line number in a file.
34  *
35  * @version $Id: Location.java,v 1.3 2003/04/21 12:42:52 idfx Exp $
36  *
37  */
38 public class Location {
39     private String fileName;
40     private int lineNumber;
41     private int columnNumber;
42
43     public static final Location UNKNOWN_LOCATION = new Location();
44
45     /**
46      * Creates an "unknown" location.
47      */
48     private Location() {
49         this(null, 0, 0);
50     }
51
52     /**
53      * Creates a location consisting of a file name but no line number.
54      */
55     public Location(String fileName) {
56         this(fileName, 0, 0);
57     }
58
59     /**
60      * Creates a location consisting of a file name and line number.
61      */
62     public Location(String fileName, int lineNumber, int columnNumber) {
63         this.fileName = fileName;
64         this.lineNumber = lineNumber;
65         this.columnNumber = columnNumber;
66     }
67
68     /**
69      * Returns the file name, line number and a trailing space. An error
70      * message can be appended easily. For unknown locations, returns
71      * an empty string.
72      */
73     public String toString() {
74         StringBuffer buf = new StringBuffer();
75
76         if (fileName != null) {
77             buf.append(fileName);
78
79             if (lineNumber != 0) {
80                 buf.append(":");
81                 buf.append(lineNumber);
82             }
83
84             buf.append(": ");
85         }
86
87         return buf.toString();
88     }
89 }