Mercurial > projects > ldc
comparison 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 |
comparison
equal
deleted
inserted
replaced
1229:fafe7c8d6734 | 1230:e67c85d6e680 |
---|---|
82 | 82 |
83 /// Interface info array global. | 83 /// Interface info array global. |
84 /// Basically: static object.Interface[num_interfaces] | 84 /// Basically: static object.Interface[num_interfaces] |
85 llvm::GlobalVariable* classInterfacesArray; | 85 llvm::GlobalVariable* classInterfacesArray; |
86 | 86 |
87 /// std::vector of BaseClass* | |
88 typedef std::vector<BaseClass*> BaseClassVector; | |
89 | |
90 /// Array of all interface vtbl implementations - in order - implemented | |
91 /// by this class. | |
92 /// Corresponds to the Interface instances needed to be output. | |
93 BaseClassVector interfacesWithVtbls; | |
94 | |
87 ////////////////////////////////////////////////////////////////////////// | 95 ////////////////////////////////////////////////////////////////////////// |
88 | 96 |
89 /// Create static default initializer for struct. | 97 /// Create static default initializer for struct. |
90 LLConstant* createStructDefaultInitializer(); | 98 LLConstant* createStructDefaultInitializer(); |
91 | 99 |
92 /// Create static default initializer for class. | 100 /// Create static default initializer for class. |
93 LLConstant* createClassDefaultInitializer(); | 101 LLConstant* createClassDefaultInitializer(); |
94 | 102 |
95 /// Returns vtbl for interface implementation, creates it if not already built. | 103 /// Returns vtbl for interface implementation, creates it if not already built. |
96 llvm::GlobalVariable* getInterfaceVtbl(BaseClass* b, bool new_inst); | 104 llvm::GlobalVariable* getInterfaceVtbl( |
105 BaseClass* b, | |
106 bool new_inst, | |
107 size_t interfaces_index); | |
97 | 108 |
98 /// Add base class data to initializer list. | 109 /// Add base class data to initializer list. |
99 /// Also creates the IrField instance for each data field. | 110 /// Also creates the IrField instance for each data field. |
100 void addBaseClassInits( | 111 void addBaseClassInits( |
101 std::vector<llvm::Constant*>& constants, | 112 std::vector<llvm::Constant*>& constants, |