Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: bison/src/bison/2.4.1/bison-2.4.1-src/examples/calc++/position.hh

Issue 10807020: Add native Windows binary for bison. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1
2 /* A Bison parser, made by GNU Bison 2.4.1. */
3
4 /* Positions for Bison parsers in C++
5
6 Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /**
35 ** \file position.hh
36 ** Define the yy::position class.
37 */
38
39 #ifndef BISON_POSITION_HH
40 # define BISON_POSITION_HH
41
42 # include <iostream>
43 # include <string>
44 # include <algorithm>
45
46
47 /* Line 38 of location.cc */
48 #line 1 "[Bison:b4_percent_define_default]"
49
50 namespace yy {
51
52 /* Line 38 of location.cc */
53 #line 54 "./position.hh"
54 /// Abstract a position.
55 class position
56 {
57 public:
58
59 /// Construct a position.
60 position ()
61 : filename (0), line (1), column (1)
62 {
63 }
64
65
66 /// Initialization.
67 inline void initialize (std::string* fn)
68 {
69 filename = fn;
70 line = 1;
71 column = 1;
72 }
73
74 /** \name Line and Column related manipulators
75 ** \{ */
76 public:
77 /// (line related) Advance to the COUNT next lines.
78 inline void lines (int count = 1)
79 {
80 column = 1;
81 line += count;
82 }
83
84 /// (column related) Advance to the COUNT next columns.
85 inline void columns (int count = 1)
86 {
87 column = std::max (1u, column + count);
88 }
89 /** \} */
90
91 public:
92 /// File name to which this position refers.
93 std::string* filename;
94 /// Current line number.
95 unsigned int line;
96 /// Current column number.
97 unsigned int column;
98 };
99
100 /// Add and assign a position.
101 inline const position&
102 operator+= (position& res, const int width)
103 {
104 res.columns (width);
105 return res;
106 }
107
108 /// Add two position objects.
109 inline const position
110 operator+ (const position& begin, const int width)
111 {
112 position res = begin;
113 return res += width;
114 }
115
116 /// Add and assign a position.
117 inline const position&
118 operator-= (position& res, const int width)
119 {
120 return res += -width;
121 }
122
123 /// Add two position objects.
124 inline const position
125 operator- (const position& begin, const int width)
126 {
127 return begin + -width;
128 }
129
130 /// Compare two position objects.
131 inline bool
132 operator== (const position& pos1, const position& pos2)
133 {
134 return
135 (pos1.filename == pos2.filename
136 || pos1.filename && pos2.filename && *pos1.filename == *pos2.filename)
137 && pos1.line == pos2.line && pos1.column == pos2.column;
138 }
139
140 /// Compare two position objects.
141 inline bool
142 operator!= (const position& pos1, const position& pos2)
143 {
144 return !(pos1 == pos2);
145 }
146
147 /** \brief Intercept output stream redirection.
148 ** \param ostr the destination output stream
149 ** \param pos a reference to the position to redirect
150 */
151 inline std::ostream&
152 operator<< (std::ostream& ostr, const position& pos)
153 {
154 if (pos.filename)
155 ostr << *pos.filename << ':';
156 return ostr << pos.line << '.' << pos.column;
157 }
158
159
160 /* Line 144 of location.cc */
161 #line 1 "[Bison:b4_percent_define_default]"
162
163 } // yy
164
165 /* Line 144 of location.cc */
166 #line 167 "./position.hh"
167 #endif // not BISON_POSITION_HH
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698