annotate libinterp/parse-tree/filepos.h @ 27919:1891570abac8

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2020.
author John W. Eaton <jwe@octave.org>
date Mon, 06 Jan 2020 22:29:51 -0500
parents b442ec6dda5c
children bd51beb6205e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27766
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 /*
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2
27919
1891570abac8 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 27918
diff changeset
3 Copyright (C) 2019-2020 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
4
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
5 See the file COPYRIGHT.md in the top-level directory of this distribution
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
6 or <https://octave.org/COPYRIGHT.html/>.
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
7
27766
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
8
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
9 This file is part of Octave.
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
10
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11 Octave is free software: you can redistribute it and/or modify it
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
12 under the terms of the GNU General Public License as published by
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
13 the Free Software Foundation, either version 3 of the License, or
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
14 (at your option) any later version.
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
15
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16 Octave is distributed in the hope that it will be useful, but
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 WITHOUT ANY WARRANTY; without even the implied warranty of
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
19 GNU General Public License for more details.
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22 along with Octave; see the file COPYING. If not, see
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
23 <https://www.gnu.org/licenses/>.
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
24
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25 */
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 #if ! defined (octave_filepos_h)
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28 #define octave_filepos_h 1
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
29
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 #include "octave-config.h"
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 namespace octave
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
33 {
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34 class filepos
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 {
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 public:
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38 filepos (int l = 1, int c = 1) : m_line (l), m_column (c) { }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40 filepos (const filepos&) = default;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
41
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
42 filepos& operator = (const filepos&) = default;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
44 ~filepos (void) = default;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
45
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
46 void set (int l, int c)
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 {
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 m_line = l;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49 m_column = c;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
50 }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
52 void line (int l) { m_line = l; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
53 void column (int c) { m_column = c; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
54
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
55 int line (void) const { return m_line; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
56 int column (void) const { return m_column; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
57
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
58 void increment_line (int val = 1) { m_line += val; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
59 void increment_column (int val = 1) { m_column += val; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
61 void decrement_line (int val = 1) { m_line -= val; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
62 void decrement_column (int val = 1) { m_column -= val; }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
63
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64 void next_line (void)
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
65 {
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66 m_line++;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
67 m_column = 1;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
68 }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
69
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
70 private:
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
71
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
72 int m_line;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
73 int m_column;
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
74 };
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75 }
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
76
0ca7f17de041 use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
diff changeset
77 #endif