CSE.Exps.ArithExp.Affirm C# (CSharp) Method

Affirm() static private method

Applies numeric affirmation (i.e. unary plus) to numeric values
static private Affirm ( CseObject obj ) : CseObject
obj CseObject The CseObject with the value to affirm
return CseObject
		internal static CseObject Affirm(CseObject obj) {
			CseObject result = (CseObject)obj.Clone();

			dynamic value = obj.Value;
			double numValue;

			if (value is string)
				throw new CseLogicException(CseLogicExceptionType.CANT_AFFIRM_NON_NUM, value.ToString());
			else if (!double.TryParse(value.ToString(), out numValue)) {
				MethodInfo mi = value.GetType().GetMethod(OpOverloadNames.UPLUS);
				if (null != mi) {
					result.Value = value.GetType().InvokeMember(OpOverloadNames.UPLUS, OpOverloadNames.Flags, null, CsEval.evalEnvironment, new object[] { value });
					return result;
				}
				else
					throw new CseLogicException(CseLogicExceptionType.CANT_AFFIRM_NON_NUM, value.ToString());
			}

			return result;
		}