Microsoft.JScript.PostOrPrefixOperator.EvaluatePostOrPrefix C# (CSharp) Method

EvaluatePostOrPrefix() private method

private EvaluatePostOrPrefix ( Object &v ) : Object
v Object
return Object
      public Object EvaluatePostOrPrefix(ref Object v){
        int i; uint ui; long l; ulong ul; double d;
        IConvertible ic = Convert.GetIConvertible(v);
        switch (Convert.GetTypeCode(v, ic)){
          case TypeCode.Empty:  v = Double.NaN; return v;
          case TypeCode.DBNull: v = 0; return this.DoOp(0);
          case TypeCode.Boolean: 
          case TypeCode.SByte:
          case TypeCode.Byte: 
          case TypeCode.Int16:
          case TypeCode.UInt16: 
          case TypeCode.Int32: v = i = ic.ToInt32(null); return this.DoOp(i); 
          case TypeCode.Char: i = ic.ToInt32(null); return ((IConvertible)this.DoOp(i)).ToChar(null);
          case TypeCode.UInt32: v = ui = ic.ToUInt32(null); return this.DoOp(ui); 
          case TypeCode.Int64: v = l = ic.ToInt64(null); return this.DoOp(l); 
          case TypeCode.UInt64: v = ul = ic.ToUInt64(null); return this.DoOp(ul); 
          case TypeCode.Single:
          case TypeCode.Double: v = d = ic.ToDouble(null); return this.DoOp(d); 
        }
        MethodInfo oper = this.GetOperator(v.GetType());
        if (oper != null)
          return oper.Invoke(null, (BindingFlags)0, JSBinder.ob, new Object[]{v}, null);
        else{
          v = d = Convert.ToNumber(v, ic);
          return this.DoOp(d);
        }
      }