* data/location.cc (position::initialize, location::initialize): New.
(position::position, location::location): Define only if
b4_location_constructors is defined.
* data/lalr1.cc (b4_location_constructors): Define it for backward
compatibility.
* doc/bison.texinfo (Initial Action Decl): Use initialize.
-2005-11-12 Akim <akim@epita.fr>
+2005-11-12 Akim Demaille <akim@epita.fr>
+
+ Let position and location be PODs.
+ * data/location.cc (position::initialize, location::initialize): New.
+ (position::position, location::location): Define only if
+ b4_location_constructors is defined.
+ * data/lalr1.cc (b4_location_constructors): Define it for backward
+ compatibility.
+ * doc/bison.texinfo (Initial Action Decl): Use initialize.
+
+2005-11-12 Akim Demaille <akim@epita.fr>
* data/lalr1.cc: Move the body of the ctor and dtor into the
parser file (instead of the header).
# 02110-1301 USA
m4_include(b4_pkgdatadir/[c++.m4])
+# Backward compatibility.
+m4_define([b4_location_constructors])
m4_include(b4_pkgdatadir/[location.cc])
# We do want M4 expansion after # for CPP macros.
/**
** \file position.hh
- ** Define the position class.
+ ** Define the yy::position class.
*/
#ifndef BISON_POSITION_HH
/// Abstract a position.
class position
{
- /** \name Ctor & dtor.
- ** \{ */
public:
+]m4_ifdef([b4_location_constructors], [
/// Construct a position.
- position () :
- filename (0),
- line (1),
- column (0)
+ position ()
+ : filename (0), line (1), column (0)
{
}
- /** \} */
+])[
+ /// Initialization.
+ inline void initialize (]b4_filename_type[* fn)
+ {
+ filename = fn;
+ line = 1;
+ column = 0;
+ }
/** \name Line and Column related manipulators
** \{ */
/**
** \file location.hh
- ** Define the location class.
+ ** Define the yy::location class.
*/
#ifndef BISON_LOCATION_HH
/// Abstract a location.
class location
{
- /** \name Ctor & dtor.
- ** \{ */
public:
+]m4_ifdef([b4_location_constructors], [
/// Construct a location.
- location () :
- begin (),
- end ()
+ location ()
+ : begin (), end ()
{
}
- /** \} */
+])[
+ /// Initialization.
+ inline void initialize (]b4_filename_type[* fn)
+ {
+ begin.initialize (fn);
+ end = begin;
+ }
/** \name Line and Column related manipulators
** \{ */
%parse-param @{ char const *file_name @};
%initial-action
@{
- @@$.begin.filename = @@$.end.filename = file_name;
+ @@$.initialize (file_name);
@};
@end example