// This function will add another interface impl void QCALLTYPE COMDynamicWrite::AddInterfaceImpl(QCall::ModuleHandle pModule, INT32 tdType, INT32 tkInterface) { QCALL_CONTRACT; BEGIN_QCALL; RefClassWriter * pRCW = pModule->GetReflectionModule()->GetClassWriter(); _ASSERTE(pRCW); IfFailThrow( pRCW->GetEmitHelper()->AddInterfaceImpl(tdType, tkInterface) ); END_QCALL; }
// This function will reset the parent class in metadata void QCALLTYPE COMDynamicWrite::SetParentType(QCall::ModuleHandle pModule, INT32 tdType, INT32 tkParent) { QCALL_CONTRACT; BEGIN_QCALL; RefClassWriter * pRCW = pModule->GetReflectionModule()->GetClassWriter(); _ASSERTE(pRCW); IfFailThrow( pRCW->GetEmitHelper()->SetTypeParent(tdType, tkParent) ); END_QCALL; }
/*============================SetFieldLayoutOffset============================ **Action: set fieldlayout of a field **Returns: **Arguments: **Exceptions: ==============================================================================*/ void QCALLTYPE COMDynamicWrite::SetFieldLayoutOffset(QCall::ModuleHandle pModule, INT32 tkField, INT32 iOffset) { QCALL_CONTRACT; BEGIN_QCALL; RefClassWriter * pRCW = pModule->GetReflectionModule()->GetClassWriter(); _ASSERTE(pRCW); // Set the field layout IfFailThrow(pRCW->GetEmitHelper()->SetFieldLayoutHelper( tkField, // field iOffset)); // layout offset END_QCALL; }
/*============================DefineMethodSemantics============================ **Action: **Returns: **Arguments: **Exceptions: ==============================================================================*/ void QCALLTYPE COMDynamicWrite::DefineMethodSemantics(QCall::ModuleHandle pModule, INT32 tkAssociation, INT32 attr, INT32 tkMethod) { QCALL_CONTRACT; BEGIN_QCALL; RefClassWriter * pRCW = pModule->GetReflectionModule()->GetClassWriter(); _ASSERTE(pRCW); // Define the MethodSemantics IfFailThrow(pRCW->GetEmitHelper()->DefineMethodSemanticsHelper( tkAssociation, attr, tkMethod)); END_QCALL; }
/*============================DefineEvent============================ **Action: **Returns: **Arguments: **Exceptions: ==============================================================================*/ INT32 QCALLTYPE COMDynamicWrite::DefineEvent(QCall::ModuleHandle pModule, INT32 tkParent, LPCWSTR wszName, INT32 attr, INT32 tkEventType) { QCALL_CONTRACT; mdProperty ev = mdTokenNil; BEGIN_QCALL; RefClassWriter * pRCW = pModule->GetReflectionModule()->GetClassWriter(); _ASSERTE(pRCW); // Define the Event IfFailThrow(pRCW->GetEmitHelper()->DefineEventHelper( tkParent, // ParentTypeDef wszName, // Name of Member attr, // property Attributes (prDefaultProperty, etc); tkEventType, // the event type. Can be TypeDef or TypeRef &ev)); END_QCALL; return (INT32)ev; }