This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch][gold] Add some typedefs


The internal::Incremental_* types are a bit long to type and I was
getting some funny indentations on a patch I am writing. The attached
patch is just a bit of refactoring. It adds a data_type type to each
reader and writer. That makes rest of the class a bit simpler.

I considered using inheritance to factor the common code a bit more.
The problem is that, if understand c++ correctly, I would have to add
using declarations to make data_type, data_size and p_ visible.

2009-11-24  Rafael Avila de Espindola  <espindola@google.com>

	* incremental.cc (Incremental_inputs_header,
	Incremental_inputs_header_write, Incremental_inputs_entry,
	Incremental_inputs_entry_write): Add a typedef with the data type.

Cheers,
-- 
Rafael Ãvila de EspÃndola
diff --git a/gold/incremental.cc b/gold/incremental.cc
index 2ef7c85..f542a43 100644
--- a/gold/incremental.cc
+++ b/gold/incremental.cc
@@ -90,12 +90,16 @@ struct Incremental_inputs_entry_data
 template<int size, bool big_endian>
 class Incremental_inputs_header
 {
+ private:
+  typedef internal::Incremental_inputs_header_data data_type;
+  const data_type* p_;
+
  public:
   Incremental_inputs_header(const unsigned char *p)
-    : p_(reinterpret_cast<const internal::Incremental_inputs_header_data*>(p))
+    : p_(reinterpret_cast<const data_type*>(p))
   { }
 
-  static const int data_size = sizeof(internal::Incremental_inputs_header_data);
+  static const int data_size = sizeof(data_type);
 
   elfcpp::Elf_Word
   get_version() const
@@ -112,9 +116,6 @@ class Incremental_inputs_header
   elfcpp::Elf_Word
   get_reserved() const
   { return Convert<32, big_endian>::convert_host(this->p_->reserved); }
-
- private:
-  const internal::Incremental_inputs_header_data* p_;
 };
 
 // Writer class for .gnu_incremental_inputs header. See
@@ -123,12 +124,16 @@ class Incremental_inputs_header
 template<int size, bool big_endian>
 class Incremental_inputs_header_write
 {
+ private:
+  typedef internal::Incremental_inputs_header_data data_type;
+  data_type* p_;
+
  public:
   Incremental_inputs_header_write(unsigned char *p)
-    : p_(reinterpret_cast<internal::Incremental_inputs_header_data*>(p))
+    : p_(reinterpret_cast<data_type*>(p))
   { }
 
-  static const int data_size = sizeof(internal::Incremental_inputs_header_data);
+  static const int data_size = sizeof(data_type);
 
   void
   put_version(elfcpp::Elf_Word v)
@@ -145,9 +150,6 @@ class Incremental_inputs_header_write
   void
   put_reserved(elfcpp::Elf_Word v)
   { this->p_->reserved = Convert<32, big_endian>::convert_host(v); }
-
- private:
-  internal::Incremental_inputs_header_data* p_;
 };
 
 // Reader class for an .gnu_incremental_inputs entry. See
@@ -155,12 +157,16 @@ class Incremental_inputs_header_write
 template<int size, bool big_endian>
 class Incremental_inputs_entry
 {
+ private:
+  typedef internal::Incremental_inputs_entry_data data_type;
+  const data_type* p_;
+
  public:
   Incremental_inputs_entry(const unsigned char *p)
-    : p_(reinterpret_cast<const internal::Incremental_inputs_entry_data*>(p))
+    : p_(reinterpret_cast<const data_type*>(p))
   { }
 
-  static const int data_size = sizeof(internal::Incremental_inputs_entry_data);
+  static const int data_size = sizeof(data_type);
 
   elfcpp::Elf_Word
   get_filename_offset(elfcpp::Elf_Word v)
@@ -185,9 +191,6 @@ class Incremental_inputs_entry
   elfcpp::Elf_Word
   get_reserved(elfcpp::Elf_Word v)
   { return Convert<32, big_endian>::convert_host(this->p_->reserved); }
-
- private:
-  const internal::Incremental_inputs_entry_data* p_;
 };
 
 // Writer class for an .gnu_incremental_inputs entry. See
@@ -195,12 +198,16 @@ class Incremental_inputs_entry
 template<int size, bool big_endian>
 class Incremental_inputs_entry_write
 {
+ private:
+  typedef internal::Incremental_inputs_entry_data data_type;
+  data_type* p_;
+
  public:
   Incremental_inputs_entry_write(unsigned char *p)
-    : p_(reinterpret_cast<internal::Incremental_inputs_entry_data*>(p))
+    : p_(reinterpret_cast<data_type*>(p))
   { }
 
-  static const int data_size = sizeof(internal::Incremental_inputs_entry_data);
+  static const int data_size = sizeof(data_type);
 
   void
   put_filename_offset(elfcpp::Elf_Word v)
@@ -225,9 +232,6 @@ class Incremental_inputs_entry_write
   void
   put_reserved(elfcpp::Elf_Word v)
   { this->p_->reserved = Convert<32, big_endian>::convert_host(v); }
-
- private:
-  internal::Incremental_inputs_entry_data* p_;
 };
 
 // Inform the user why we don't do an incremental link.  Not called in

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]