public virtual bool UserEvaluate(string name, int nameHash, object instance, List <object> indexes, out AleTermResult result, TermEvaluate userEvaluate) { result = new AleTermResult(); AleTermEvaluateArgs e = new AleTermEvaluateArgs(name, nameHash, instance, indexes); if (_Parser != null) { _Parser.EvaluateStandardProperties(this, e); if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) { return(false); } if (e.HasBeenEvaluated) { result.Value = e.Result; return(true); } } if (userEvaluate == null && result.SetError(AleTermResult.ERROR_UNKNOWNELEMENT, _Token.StartInOrigin)) { return(false); } userEvaluate(this, e); if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) { return(false); } result.Value = e.Result; return(true); }
// evaluation private void OnEvaluate(AleTerm term, AleTermEvaluateArgs e) { bool ignoreCase = chkIgnoreCase.Checked; object res; if (e.Instance == null) { if (Variables.TryGetValue(e.Name, out res)) e.Result = res; else { res = (int)0; Variables.Add(e.Name, res); e.Result = res; } return; } }
public virtual bool UserEvaluate(string name, int nameHash, object instance, List<object> indexes, out AleTermResult result, TermEvaluate userEvaluate) { result = new AleTermResult(); AleTermEvaluateArgs e = new AleTermEvaluateArgs(name, nameHash, instance, indexes); if (_Parser != null) { _Parser.EvaluateStandardProperties(this, e); if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) return false; if (e.HasBeenEvaluated) { result.Value = e.Result; return true; } } if (userEvaluate == null && result.SetError(AleTermResult.ERROR_UNKNOWNELEMENT, _Token.StartInOrigin)) return false; userEvaluate(this, e); if (e.ErrorCode != AleTermResult.ERROR_OK && result.SetError(e.ErrorCode, e.ErrorPos)) return false; result.Value = e.Result; return true; }