]> git.saurik.com Git - bison.git/commitdiff
Let position and location be PODs.
authorAkim Demaille <akim@epita.fr>
Sat, 12 Nov 2005 14:13:03 +0000 (14:13 +0000)
committerAkim Demaille <akim@epita.fr>
Sat, 12 Nov 2005 14:13:03 +0000 (14:13 +0000)
* 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.

ChangeLog
data/lalr1.cc
data/location.cc
doc/bison.texinfo

index 35744ce32097ae3c9d7fb1e63c2a8a26898e5131..6c56d947d9245576dfb6a3b0c083511ecad184d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,14 @@
-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 887671d16d5c444aa7df3c715ccd3d50053205e1..1073e8d2f2d3ab38f886ed91a5f2cec18995394b 100644 (file)
@@ -20,6 +20,8 @@ m4_divert(-1)
 # 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 bb701b3ea028aa3acf279b678f6302f9a122b0e8..a134bfa8e52465e6b5545e4c6d559c5905c9b57d 100644 (file)
@@ -29,7 +29,7 @@ b4_copyright([Position class for Bison C++ parsers], [2002, 2003, 2004, 2005])[
 
 /**
  ** \file position.hh
- ** Define the position class.
+ ** Define the yy::position class.
  */
 
 #ifndef BISON_POSITION_HH
@@ -43,18 +43,22 @@ namespace yy
   /// 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 @@ b4_copyright([Location class for Bison C++ parsers], [2002, 2003, 2004, 2005])[
 
 /**
  ** \file location.hh
- ** Define the location class.
+ ** Define the yy::location class.
  */
 
 #ifndef BISON_LOCATION_HH
@@ -152,17 +156,21 @@ namespace yy
   /// 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 01dccb418bcea8ca898ef758154f4c9234e39512..47b6720ec93e7a6e438934e0dec09573756823a1 100644 (file)
@@ -3800,7 +3800,7 @@ For instance, if your locations use a file name, you may use
 %parse-param @{ char const *file_name @};
 %initial-action
 @{
-  @@$.begin.filename = @@$.end.filename = file_name;
+  @@$.initialize (file_name);
 @};
 @end example