diff ir/irstruct.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 752bed475b75
line wrap: on
line diff
--- a/ir/irstruct.h	Thu Apr 16 11:01:49 2009 +0200
+++ b/ir/irstruct.h	Thu Apr 16 13:18:56 2009 +0200
@@ -84,6 +84,14 @@
     /// Basically: static object.Interface[num_interfaces]
     llvm::GlobalVariable* classInterfacesArray;
 
+    /// std::vector of BaseClass*
+    typedef std::vector<BaseClass*> BaseClassVector;
+
+    /// Array of all interface vtbl implementations - in order - implemented
+    /// by this class.
+    /// Corresponds to the Interface instances needed to be output.
+    BaseClassVector interfacesWithVtbls;
+
     //////////////////////////////////////////////////////////////////////////
 
     /// Create static default initializer for struct.
@@ -93,7 +101,10 @@
     LLConstant* createClassDefaultInitializer();
 
     /// Returns vtbl for interface implementation, creates it if not already built.
-    llvm::GlobalVariable* getInterfaceVtbl(BaseClass* b, bool new_inst);
+    llvm::GlobalVariable* getInterfaceVtbl(
+        BaseClass* b,
+        bool new_inst,
+        size_t interfaces_index);
 
     /// Add base class data to initializer list.
     /// Also creates the IrField instance for each data field.