public void Load( MethodEmitter method ) { if ( m_Field != null ) { method.LoadArgument( 0 ); method.LoadField( m_Field ); } else if ( m_Value == null ) { method.LoadNull( m_Type ); } else { if ( m_Value is int ) method.Load( (int) m_Value ); else if ( m_Value is long ) method.Load( (long) m_Value ); else if ( m_Value is float ) method.Load( (float) m_Value ); else if ( m_Value is double ) method.Load( (double) m_Value ); else if ( m_Value is char ) method.Load( (char) m_Value ); else if ( m_Value is bool ) method.Load( (bool) m_Value ); else if ( m_Value is string ) method.Load( (string) m_Value ); else if ( m_Value is Enum ) method.Load( (Enum) m_Value ); else throw new InvalidOperationException( "Unrecognized comparison value." ); } }
void ICondition.Compile( MethodEmitter emitter ) { // The object was safely cast to be the conditionals type // If it's null, then the type cast didn't work... emitter.LoadNull(); emitter.Compare( OpCodes.Ceq ); emitter.LogicalNot(); }