Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Location.cs « src « nant « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 3a51279d3713de6f19ef101a071672c7d50e457d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// NAnt - A .NET build tool
// Copyright (C) 2001 Gerry Shaw
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// Ian MacLean (ian_maclean@another.com)
// Gerry Shaw (gerry_shaw@yahoo.com)

namespace SourceForge.NAnt {
    using System;
    using System.IO;

    /// <summary>
    /// Stores the file name and line number in a file.
    /// </summary>
    public class Location {
        string _fileName;
        int _lineNumber;
        int _columnNumber;

        public static readonly Location UnknownLocation = new Location();

        /// <summary>
        /// Creates a location consisting of a file name and line number.
        ///</summary>
        public Location(string fileName, int lineNumber, int columnNumber) {
            Uri uri = new Uri(fileName);
            string strfileName = uri.LocalPath;  // convert from URI syntax to local path
            Init(strfileName, lineNumber, columnNumber);
        }

        /// <summary>
        /// Creates a location consisting of a file name but no line number.
        ///</summary>
        public Location(string fileName) {
            Init(fileName, 0, 0);
        }

        /// <summary>
        /// Creates an "unknown" location.
        ///</summary>
        private Location() {
            Init(null, 0, 0);
        }

        /// <summary>
        /// Private Init function.
        ///</summary>
        private void Init(string fileName, int lineNumber, int columnNumber) {
            _fileName = fileName;
            _lineNumber = lineNumber;
            _columnNumber = columnNumber;
        }

        /// <summary>
        /// Returns the file name, line number and a trailing space. An error
        /// message can be appended easily. For unknown locations, returns
        /// an empty string.
        ///</summary>
        public override string ToString() {
            string message = "";

            if (_fileName != null) {
                message += _fileName;

                if (_lineNumber != 0) {
                    message += ":";
                    message += _lineNumber.ToString();
                }

                message += ":";
            }

            return message;
        }
    }
}