public List <string> GetOverloadedList(LabelDictionary labelDic) { List <string> list = new List <string>(); foreach (KeyValuePair <string, FunctionMethod> pair in methodDic) { FunctionLabelLine func = labelDic.GetNonEventLabel(pair.Key); if (func == null) { continue; } if (!func.IsMethod) { continue; } list.Add(pair.Key); } return(list); }
public List <string> GetOverloadedList(LabelDictionary labelDic) { var list = new List <string>(); foreach (var pair in methodDic) { var func = labelDic.GetNonEventLabel(pair.Key); if (func == null) { continue; } if (!func.IsMethod) { continue; } list.Add(pair.Key); } return(list); }
public IOperandTerm GetFunctionMethod(LabelDictionary labelDic, string codeStr, IOperandTerm[] arguments, bool userDefinedOnly) { if (Config.ICFunction) { codeStr = codeStr.ToUpper(); } if (arguments == null) //引数なし、名前のみの探索 { if (refmethodDic.ContainsKey(codeStr)) { return(new UserDefinedRefMethodNoArgTerm(refmethodDic[codeStr])); } return(null); } if ((labelDic != null) && (labelDic.Initialized)) { if (refmethodDic.ContainsKey(codeStr)) { return(new UserDefinedRefMethodTerm(refmethodDic[codeStr], arguments)); } FunctionLabelLine func = labelDic.GetNonEventLabel(codeStr); if (func != null) { if (userDefinedOnly && !func.IsMethod) { throw new CodeEE("#FUNCTIONが指定されていない関数\"@" + func.LabelName + "\"をCALLF系命令で呼び出そうとしました"); } if (func.IsMethod) { string errMes; IOperandTerm ret = UserDefinedMethodTerm.Create(func, arguments, out errMes); if (ret == null) { throw new CodeEE(errMes); } return(ret); } //1.721 #FUNCTIONが定義されていない関数は組み込み関数を上書きしない方向に。 PANCTION.ERBのRANDとか。 if (!methodDic.ContainsKey(codeStr)) { throw new CodeEE("#FUNCTIONが定義されていない関数(" + func.Position.Filename + ":" + func.Position.LineNo + "行目)を式中で呼び出そうとしました"); } } } if (userDefinedOnly) { return(null); } FunctionMethod method = null; if (!methodDic.TryGetValue(codeStr, out method)) { return(null); } string errmes = method.CheckArgumentType(codeStr, arguments); if (errmes != null) { throw new CodeEE(errmes); } return(new FunctionMethodTerm(method, arguments)); }