c++: support wide strings for file names

Reported by Mark Boyall.
http://lists.gnu.org/archive/html/help-bison/2011-08/msg00002.html

* data/location.cc (operator<<): Be templated on the type of
output stream.
* tests/headers.at (Several parsers): Adjust.
This commit is contained in:
Akim Demaille
2012-12-05 11:21:21 +01:00
parent 7bada5355e
commit 7ae57e2a35
3 changed files with 14 additions and 8 deletions

View File

@@ -136,8 +136,9 @@ b4_copyright([Positions for Bison parsers in C++],
** \param ostr the destination output stream
** \param pos a reference to the position to redirect
*/
inline std::ostream&
operator<< (std::ostream& ostr, const position& pos)
template <typename YYChar>
inline std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
{
if (pos.filename)
ostr << *pos.filename << ':';
@@ -275,7 +276,9 @@ b4_copyright([Locations for Bison parsers in C++],
**
** Avoid duplicate information.
*/
inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
template <typename YYChar>
inline std::basic_ostream<YYChar>&
operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
{
position last = loc.end - 1;
ostr << loc.begin;