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,