Move the vtable builder to CGVtable.cpp, general cleanup.

llvm-svn: 83798
diff --git a/clang/lib/CodeGen/CGVtable.h b/clang/lib/CodeGen/CGVtable.h
new file mode 100644
index 0000000..6adc6e6
--- /dev/null
+++ b/clang/lib/CodeGen/CGVtable.h
@@ -0,0 +1,59 @@
+//===--- CGVtable.h - Emit LLVM Code for C++ vtables ----------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This contains code dealing with C++ code generation of virtual tables.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef CLANG_CODEGEN_CGVTABLE_H
+#define CLANG_CODEGEN_CGVTABLE_H
+
+#include "llvm/ADT/DenseMap.h"
+
+namespace clang {
+  class CXXMethodDecl;
+  class CXXRecordDecl;
+  
+namespace CodeGen {
+  class CodeGenModule;
+  
+class CGVtableInfo {
+  CodeGenModule &CGM;
+  
+  /// MethodVtableIndices - Contains the index (relative to the vtable address
+  /// point) where the function pointer for a virtual function is stored.
+  typedef llvm::DenseMap<const CXXMethodDecl *, int64_t> MethodVtableIndicesTy;
+  MethodVtableIndicesTy MethodVtableIndices;
+  
+  typedef std::pair<const CXXRecordDecl *,
+                    const CXXRecordDecl *> ClassPairTy;
+  
+  /// VirtualBaseClassIndicies - Contains the index into the vtable where the
+  /// offsets for virtual bases of a class are stored.
+  typedef llvm::DenseMap<ClassPairTy, int64_t> VirtualBaseClassIndiciesTy;
+  VirtualBaseClassIndiciesTy VirtualBaseClassIndicies;
+public:
+  CGVtableInfo(CodeGenModule &CGM) 
+    : CGM(CGM) { }
+
+  /// getMethodVtableIndex - Return the index (relative to the vtable address
+  /// point) where the function pointer for the given virtual function is 
+  /// stored.
+  int64_t getMethodVtableIndex(const CXXMethodDecl *MD);
+  
+  /// getVirtualBaseOffsetIndex - Return the index (relative to the vtable address 
+  /// point) where the offset of the  given virtual base of the given class is 
+  // stored.
+  int64_t getVirtualBaseOffsetIndex(const CXXRecordDecl *RD, 
+                                    const CXXRecordDecl *VBase);
+};
+  
+}
+}
+#endif