From c10a3b13fec850effc68c8b4f8861158f7fa7fed Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 4 May 2021 15:26:58 -0600 Subject: libcc1: delete copy constructor and assignment operators Change libcc1 to use "= delete" for the copy constructor and assignment operator, rather than the old approach of private methods that are nowhere defined. libcc1 * rpc.hh (argument_wrapper): Use delete for copy constructor. * connection.hh (class connection): Use delete for copy constructor. * callbacks.hh (class callbacks): Use delete for copy constructor. --- libcc1/callbacks.hh | 7 +++---- libcc1/connection.hh | 7 +++---- libcc1/rpc.hh | 42 ++++++++++++++++++------------------------ 3 files changed, 24 insertions(+), 32 deletions(-) (limited to 'libcc1') diff --git a/libcc1/callbacks.hh b/libcc1/callbacks.hh index b1f3e98d917..dc470c62c48 100644 --- a/libcc1/callbacks.hh +++ b/libcc1/callbacks.hh @@ -42,6 +42,9 @@ namespace cc1_plugin callbacks (); ~callbacks (); + callbacks (const callbacks &) = delete; + callbacks &operator= (const callbacks &) = delete; + // Add a callback named NAME. FUNC is the function to call when // this method is invoked. void add_callback (const char *name, callback_ftype *func); @@ -52,10 +55,6 @@ namespace cc1_plugin private: - // Declared but not defined to avoid use. - callbacks (const callbacks &); - callbacks &operator= (const callbacks &); - // The mapping. htab_t m_registry; }; diff --git a/libcc1/connection.hh b/libcc1/connection.hh index a0e99bdbd98..15ad1716a29 100644 --- a/libcc1/connection.hh +++ b/libcc1/connection.hh @@ -48,6 +48,9 @@ namespace cc1_plugin virtual ~connection () = default; + connection (const connection &) = delete; + connection &operator= (const connection &) = delete; + // Send a single character. This is used to introduce various // higher-level protocol elements. status send (char c); @@ -95,10 +98,6 @@ namespace cc1_plugin private: - // Declared but not defined, to prevent use. - connection (const connection &); - connection &operator= (const connection &); - // Helper function for the wait_* methods. status do_wait (bool); diff --git a/libcc1/rpc.hh b/libcc1/rpc.hh index a8e33577ea1..429aeb3c127 100644 --- a/libcc1/rpc.hh +++ b/libcc1/rpc.hh @@ -39,6 +39,9 @@ namespace cc1_plugin argument_wrapper () { } ~argument_wrapper () { } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator T () const { return m_object; } status unmarshall (connection *conn) @@ -49,10 +52,6 @@ namespace cc1_plugin private: T m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; // Specialization for any kind of pointer. This is declared but not @@ -72,6 +71,9 @@ namespace cc1_plugin delete[] m_object; } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator const char * () const { return m_object; @@ -85,10 +87,6 @@ namespace cc1_plugin private: char *m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; // Specialization for gcc_type_array. @@ -106,6 +104,9 @@ namespace cc1_plugin delete m_object; } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator const gcc_type_array * () const { return m_object; @@ -119,10 +120,6 @@ namespace cc1_plugin private: gcc_type_array *m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; #ifdef GCC_CP_INTERFACE_H @@ -144,6 +141,9 @@ namespace cc1_plugin delete m_object; } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator const gcc_vbase_array * () const { return m_object; @@ -157,10 +157,6 @@ namespace cc1_plugin private: gcc_vbase_array *m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; // Specialization for gcc_cp_template_args. @@ -181,6 +177,9 @@ namespace cc1_plugin delete m_object; } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator const gcc_cp_template_args * () const { return m_object; @@ -194,10 +193,6 @@ namespace cc1_plugin private: gcc_cp_template_args *m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; // Specialization for gcc_cp_function_args. @@ -217,6 +212,9 @@ namespace cc1_plugin delete m_object; } + argument_wrapper (const argument_wrapper &) = delete; + argument_wrapper &operator= (const argument_wrapper &) = delete; + operator const gcc_cp_function_args * () const { return m_object; @@ -230,10 +228,6 @@ namespace cc1_plugin private: gcc_cp_function_args *m_object; - - // No copying or assignment allowed. - argument_wrapper (const argument_wrapper &); - argument_wrapper &operator= (const argument_wrapper &); }; #endif /* GCC_CP_INTERFACE_H */ -- cgit v1.2.3