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

Side by Side Diff: bison/src/bison/2.4.1/bison-2.4.1-src/examples/calc++/location.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 /* Locations 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 location.hh
36 ** Define the yy::location class.
37 */
38
39 #ifndef BISON_LOCATION_HH
40 # define BISON_LOCATION_HH
41
42 # include <iostream>
43 # include <string>
44 # include "position.hh"
45
46
47 /* Line 162 of location.cc */
48 #line 1 "[Bison:b4_percent_define_default]"
49
50 namespace yy {
51
52 /* Line 162 of location.cc */
53 #line 54 "./location.hh"
54
55 /// Abstract a location.
56 class location
57 {
58 public:
59
60 /// Construct a location.
61 location ()
62 : begin (), end ()
63 {
64 }
65
66
67 /// Initialization.
68 inline void initialize (std::string* fn)
69 {
70 begin.initialize (fn);
71 end = begin;
72 }
73
74 /** \name Line and Column related manipulators
75 ** \{ */
76 public:
77 /// Reset initial location to final location.
78 inline void step ()
79 {
80 begin = end;
81 }
82
83 /// Extend the current location to the COUNT next columns.
84 inline void columns (unsigned int count = 1)
85 {
86 end += count;
87 }
88
89 /// Extend the current location to the COUNT next lines.
90 inline void lines (unsigned int count = 1)
91 {
92 end.lines (count);
93 }
94 /** \} */
95
96
97 public:
98 /// Beginning of the located region.
99 position begin;
100 /// End of the located region.
101 position end;
102 };
103
104 /// Join two location objects to create a location.
105 inline const location operator+ (const location& begin, const location& end)
106 {
107 location res = begin;
108 res.end = end.end;
109 return res;
110 }
111
112 /// Add two location objects.
113 inline const location operator+ (const location& begin, unsigned int width)
114 {
115 location res = begin;
116 res.columns (width);
117 return res;
118 }
119
120 /// Add and assign a location.
121 inline location& operator+= (location& res, unsigned int width)
122 {
123 res.columns (width);
124 return res;
125 }
126
127 /// Compare two location objects.
128 inline bool
129 operator== (const location& loc1, const location& loc2)
130 {
131 return loc1.begin == loc2.begin && loc1.end == loc2.end;
132 }
133
134 /// Compare two location objects.
135 inline bool
136 operator!= (const location& loc1, const location& loc2)
137 {
138 return !(loc1 == loc2);
139 }
140
141 /** \brief Intercept output stream redirection.
142 ** \param ostr the destination output stream
143 ** \param loc a reference to the location to redirect
144 **
145 ** Avoid duplicate information.
146 */
147 inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
148 {
149 position last = loc.end - 1;
150 ostr << loc.begin;
151 if (last.filename
152 && (!loc.begin.filename
153 || *loc.begin.filename != *last.filename))
154 ostr << '-' << last;
155 else if (loc.begin.line != last.line)
156 ostr << '-' << last.line << '.' << last.column;
157 else if (loc.begin.column != last.column)
158 ostr << '-' << last.column;
159 return ostr;
160 }
161
162
163 /* Line 271 of location.cc */
164 #line 1 "[Bison:b4_percent_define_default]"
165
166 } // yy
167
168 /* Line 271 of location.cc */
169 #line 170 "./location.hh"
170
171 #endif // not BISON_LOCATION_HH
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698