bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 7/7] c++: privatize variant blind copies


From: Theophile Ranquet
Subject: [PATCH 7/7] c++: privatize variant blind copies
Date: Fri, 11 Jan 2013 13:28:15 +0100

* data/variant.hh (variant, operator=): Make private.
* data/c++.m4 (operator=): New, to avoid needing a definition of that operator
for each class member (such as a possible variant).
* data/glr.cc, data/lalr.cc: Add the necessary include for the abort.
---
 data/c++.m4     | 11 +++++++++++
 data/glr.cc     |  1 +
 data/lalr1.cc   |  1 +
 data/variant.hh |  2 +-
 4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/data/c++.m4 b/data/c++.m4
index 020160c..4fb2805 100644
--- a/data/c++.m4
+++ b/data/c++.m4
@@ -186,6 +186,9 @@ m4_define([b4_public_types_declare],
         [const semantic_type& v],
         b4_locations_if([const location_type& l]))[);
 
+      /// Assignment operator.
+      inline basic_symbol& operator= (const basic_symbol& other);
+
       /// Destructive move, \a s is emptied.
       inline void move (basic_symbol& s);
 
@@ -252,6 +255,14 @@ m4_define([b4_public_types_define],
 
   template <typename Base>
   inline
+  ]b4_parser_class_name[::basic_symbol<Base>&
+  ]b4_parser_class_name[::basic_symbol<Base>::operator= (const basic_symbol& 
other)
+  {
+    abort ();
+  }
+
+  template <typename Base>
+  inline
   ]b4_parser_class_name[::basic_symbol<Base>::basic_symbol (const 
basic_symbol& other)
     : Base (other)
     , value ()]b4_locations_if([
diff --git a/data/glr.cc b/data/glr.cc
index 5d8e481..7c03606 100644
--- a/data/glr.cc
+++ b/data/glr.cc
@@ -263,6 +263,7 @@ m4_define([b4_shared_declarations],
 [m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
 b4_percent_code_get([[requires]])[
 
+#include <cstdlib>  // abort
 #include <stdexcept>
 #include <string>
 #include <iostream>]b4_defines_if([
diff --git a/data/lalr1.cc b/data/lalr1.cc
index 40446b7..178b8fa 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -146,6 +146,7 @@ b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])])
 m4_define([b4_shared_declarations],
 [b4_percent_code_get([[requires]])[
 ]b4_parse_assert_if([# include <cassert>])[
+# include <cstdlib>  // abort
 # include <vector>
 # include <iostream>
 # include <stdexcept>
diff --git a/data/variant.hh b/data/variant.hh
index 184485c..4317aba 100644
--- a/data/variant.hh
+++ b/data/variant.hh
@@ -203,7 +203,7 @@ m4_define([b4_variant_define],
     }
 
     /// Prohibit blind copies.
-    //  private:
+    private:
     self_type& operator=(const self_type&)
     {
       abort ();
-- 
1.8.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]