diff ir/irtypeclass.h @ 1230:e67c85d6e680

Completed interface implementation. Hopefully that's it for now..
author Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
date Thu, 16 Apr 2009 13:18:56 +0200
parents 79758fd2f48a
children 465a77c904d4
line wrap: on
line diff
--- a/ir/irtypeclass.h	Thu Apr 16 11:01:49 2009 +0200
+++ b/ir/irtypeclass.h	Thu Apr 16 13:18:56 2009 +0200
@@ -17,10 +17,10 @@
     const llvm::Type* buildType();
 
     ///
-    const llvm::Type* getVtbl()         { return vtbl_pa.get(); }
+    const llvm::Type* get();
 
-    ///
-    const llvm::Type* get();
+    /// Returns the vtable type for this class.
+    const llvm::Type* getVtbl()         { return vtbl_pa.get(); }
 
     /// Get index to interface implementation.
     /// Returns the index of a specific interface implementation in this
@@ -30,28 +30,36 @@
     /// Returns the total number of pointers in the vtable.
     unsigned getVtblSize()              { return vtbl_size; }
 
+    /// Returns the number of interface implementations (vtables) in this
+    /// class.
+    unsigned getNumInterfaceVtbls()     { return num_interface_vtbls; }
+
 protected:
     ///
     ClassDeclaration* cd;
     ///
     TypeClass* tc;
 
-    ///
+    /// Type holder for the vtable type.
     llvm::PATypeHolder vtbl_pa;
 
     /// Number of pointers in vtable.
     unsigned vtbl_size;
 
+    /// Number of interface implementations (vtables) in this class.
+    unsigned num_interface_vtbls;
+
     /// std::map type mapping ClassDeclaration* to size_t.
     typedef std::map<ClassDeclaration*, size_t> ClassIndexMap;
 
     /// Map for mapping the index of a specific interface implementation
-    /// in this class to it's ClassDeclaration*.
+    /// in this class to its ClassDeclaration.
     ClassIndexMap interfaceMap;
 
     //////////////////////////////////////////////////////////////////////////
 
-    ///
+    /// Builds a vtable type given the type of the first entry and an array
+    /// of all entries.
     const llvm::Type* buildVtblType(Type* first, Array* vtbl_array);
 
     ///