ELF2: Simplify Writer interface.

We are using Writer more like a function instead of a class.
This patch makes it a function to simplify the interface.
All details of Writer class is now hidden from other parts of the linker.

llvm-svn: 244169
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 9964630..ab4fc2e 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -7,8 +7,10 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "Driver.h"
 #include "Config.h"
+#include "Driver.h"
+#include "InputFiles.h"
+#include "SymbolTable.h"
 #include "Writer.h"
 #include "llvm/ADT/STLExtras.h"
 
@@ -116,25 +118,17 @@
   // Write the result.
   ObjectFileBase &FirstObj = *Symtab.ObjectFiles[0];
   switch (FirstObj.kind()) {
-  case InputFile::Object32LEKind: {
-    Writer<object::ELF32LE> Out(&Symtab);
-    Out.write(Config->OutputFile);
+  case InputFile::Object32LEKind:
+    writeResult<object::ELF32LE>(&Symtab, Config->OutputFile);
     return;
-  }
-  case InputFile::Object32BEKind: {
-    Writer<object::ELF32BE> Out(&Symtab);
-    Out.write(Config->OutputFile);
+  case InputFile::Object32BEKind:
+    writeResult<object::ELF32BE>(&Symtab, Config->OutputFile);
     return;
-  }
-  case InputFile::Object64LEKind: {
-    Writer<object::ELF64LE> Out(&Symtab);
-    Out.write(Config->OutputFile);
+  case InputFile::Object64LEKind:
+    writeResult<object::ELF64LE>(&Symtab, Config->OutputFile);
     return;
-  }
-  case InputFile::Object64BEKind: {
-    Writer<object::ELF64BE> Out(&Symtab);
-    Out.write(Config->OutputFile);
+  case InputFile::Object64BEKind:
+    writeResult<object::ELF64BE>(&Symtab, Config->OutputFile);
     return;
   }
-  }
 }