internal static UserDefinedRefMethod Create(UserDefinedFunctionData funcData) { var ret = new UserDefinedRefMethod(); ret.Name = funcData.Name; if (funcData.TypeIsStr) { ret.RetType = typeof(string); } else { ret.RetType = typeof(long); } ret.ArgTypeList = funcData.ArgList; return(ret); }
/// <summary> /// 戻り値と引数の数・型の完全一致が必要 /// </summary> /// <param name="rother"></param> /// <returns>一致ならtrue</returns> internal bool MatchType(UserDefinedRefMethod rother) { if (RetType != rother.RetType) { return(false); } if (ArgTypeList.Length != rother.ArgTypeList.Length) { return(false); } for (var i = 0; i < ArgTypeList.Length; i++) { if (ArgTypeList[i] != rother.ArgTypeList[i]) { return(false); } } return(true); }
public UserDefinedRefMethodNoArgTerm(UserDefinedRefMethod reffunc) : base(reffunc.RetType) { this.reffunc = reffunc; }
public UserDefinedRefMethodTerm(UserDefinedRefMethod reffunc, IOperandTerm[] srcArgs) : base(reffunc.RetType) { this.srcArgs = srcArgs; this.reffunc = reffunc; }