Index: ChangeLog
-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).
Index: data/location.cc
===================================================================
RCS file: /cvsroot/bison/bison/data/location.cc,v
retrieving revision 1.2
diff -u -r1.2 location.cc
--- data/location.cc 11 Oct 2005 05:06:16 -0000 1.2
+++ data/location.cc 12 Nov 2005 14:10:54 -0000
@@ -29,7 +29,7 @@
 
 /**
  ** \file position.hh
- ** Define the position class.
+ ** Define the yy::position class.
  */
 
 #ifndef BISON_POSITION_HH
@@ -43,18 +43,22 @@
   /// 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
      ** \{ */
@@ -136,7 +140,7 @@
 
 /**
  ** \file location.hh
- ** Define the location class.
+ ** Define the yy::location class.
  */
 
 #ifndef BISON_LOCATION_HH
@@ -152,17 +156,21 @@
   /// 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
      ** \{ */
Index: data/lalr1.cc
===================================================================
RCS file: /cvsroot/bison/bison/data/lalr1.cc,v
retrieving revision 1.110
diff -u -r1.110 lalr1.cc
--- data/lalr1.cc 12 Nov 2005 11:32:46 -0000 1.110
+++ data/lalr1.cc 12 Nov 2005 14:10:55 -0000
@@ -20,6 +20,8 @@
 # 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.
Index: doc/bison.texinfo
===================================================================
RCS file: /cvsroot/bison/bison/doc/bison.texinfo,v
retrieving revision 1.165
diff -u -r1.165 bison.texinfo
--- doc/bison.texinfo 21 Oct 2005 11:36:22 -0000 1.165
+++ doc/bison.texinfo 12 Nov 2005 14:11:17 -0000
@@ -3800,7 +3800,7 @@
 %parse-param @{ char const *file_name @};
 %initial-action
 @{
-  @@$.begin.filename = @@$.end.filename = file_name;
+  @@$.initialize (file_name);
 @};
 @end example
 
