//----------------------------------------------------------------------------------------------------------------------------------------------------- protected MethodWriterBase(MethodMember ownerMethod, MethodWriterModes mode, bool attachToOwner) { m_OwnerMethod = ownerMethod; m_Mode = mode; m_ReturnValueLocal = null; m_InnerWriters = null; if (ownerMethod != null) { m_OwnerClass = ownerMethod.OwnerClass; if (attachToOwner) { ownerMethod.AddWriter(this); } } }
//----------------------------------------------------------------------------------------------------------------------------------------------------- internal FunctionMethodWriter(MethodMember ownerMethod, Action <FunctionMethodWriter <TReturn> > script, MethodWriterModes mode, bool attachToOwner) : base(ownerMethod, mode, attachToOwner) { m_Script = script; }
//----------------------------------------------------------------------------------------------------------------------------------------------------- public TemplateMethodWriter(MethodMember ownerMethod, MethodWriterModes mode, Action <TemplateMethodWriter> script) : base(ownerMethod, mode, attachToOwner: true) { m_Script = script; m_ReturnValueLocal = null; }
//----------------------------------------------------------------------------------------------------------------------------------------------------- internal void SetupDecoratorMode(MethodWriterBase[] innerWriters) { m_Mode |= MethodWriterModes.Decorator; m_InnerWriters = innerWriters; }
//----------------------------------------------------------------------------------------------------------------------------------------------------- internal void SetupDecoratedMode(IMutableOperand returnValueLocal, LabelStatement leaveLabel) { m_Mode |= MethodWriterModes.Decorated; m_ReturnValueLocal = returnValueLocal; m_LeaveLabel = leaveLabel; }