public static CseObject Parse(CseObject leftOp, CseObject rightOp, LogicalType type) {
CseObject obj = null;
if (type == LogicalType.NOT) {
obj = new CseObject(null) { IsLiteral = leftOp.IsLiteral };
}
else {
obj = new CseObject(null) { IsLiteral = leftOp.IsLiteral && rightOp.IsLiteral };
}
try {
switch (type) {
case LogicalType.AND:
// TODO: lazy eval if exception thrown
obj.Value = leftOp.Value && rightOp.Value;
break;
case LogicalType.OR:
// TODO: lazy eval if exception thrown
obj.Value = leftOp.Value || rightOp.Value;
break;
case LogicalType.NOT: {
//try {
obj.Value = !leftOp.Value;
/*}
catch {
MethodInfo mi = obj.Value.GetType().GetMethod(OpOverloadNames.FALSE);
if (mi != null)
obj.Value = obj.Value.GetType().InvokeMember(OpOverloadNames.FALSE, OpOverloadNames.Flags, null, CsEval.evalEnvironment, new object[] { obj.Value });
else
obj.Value = null;
}*/
}
break;
default:
throw new System.NotImplementedException("Not implemented.");
}
}
catch {
// TODO: Fill this out!
}
return obj;
}
}