public static EocExpression Translate(CodeConverter C, Expression expr) { switch (expr) { case null: return(null); case MethodPtrExpression v: return(EocMethodPtrExpression.Translate(C, v)); case CallExpression v: return(EocCallExpression.Translate(C, v)); case StringLiteral v: return(EocStringLiteral.Translate(C, v)); case NumberLiteral v: return(EocNumberLiteral.Translate(C, v)); case DateTimeLiteral v: return(EocDateTimeLiteral.Translate(C, v)); case BoolLiteral v: return(EocBoolLiteral.Translate(C, v)); case VariableExpression v: return(EocVariableExpression.Translate(C, v)); case AccessArrayExpression v: return(EocAccessArrayExpression.Translate(C, v)); case AccessMemberExpression v: return(EocAccessMemberExpression.Translate(C, v)); case ConstantExpression v: return(EocConstantExpression.Translate(C, v)); case EmnuConstantExpression v: return(EocConstantExpression.Translate(C, v)); case ArrayLiteralExpression v: return(EocArrayLiteralExpression.Translate(C, v)); case DefaultValueExpression v: return(null); default: throw new Exception("<error-expression>"); } }
public static EocCallExpression Translate(CodeConverter C, CallExpression expr) { var P = C.P; if (expr == null) { return(null); } var result = new EocCallExpression( C, P.GetEocCmdInfo(expr), EocExpression.Translate(C, expr.Target), expr.ParamList?.Select(x => EocExpression.Translate(C, x)).ToList(), expr.LibraryId >= 0 ? P.EocLibs[expr.LibraryId]?.SuperTemplateAssembly : null); if (expr.InvokeSpecial) { result.SpecialScope = "raw_" + P.GetUserDefinedName_SimpleCppName(P.MethodIdToClassMap[expr.MethodId].Id); } return(result); }
public static EocCallExpression Translate(CodeConverter C, CallExpression expr) { var P = C.P; if (expr == null) { return(null); } var paramList = expr.ParamList?.Select(x => EocExpression.Translate(C, x)).ToList(); var countOfDefaultAtEnd = 0; for (int i = paramList.Count - 1; i >= 0; i--) { if (paramList[i] != null) { break; } countOfDefaultAtEnd++; } if (countOfDefaultAtEnd != 0) { paramList.RemoveRange(paramList.Count - countOfDefaultAtEnd, countOfDefaultAtEnd); } var result = new EocCallExpression( C, P.GetEocCmdInfo(expr), EocExpression.Translate(C, expr.Target), paramList, expr.LibraryId >= 0 ? P.EocLibs[expr.LibraryId]?.SuperTemplateAssembly : null); if (expr.InvokeSpecial) { result.SpecialScope = "raw_" + P.GetUserDefinedName_SimpleCppName(P.MethodIdToClassMap[expr.MethodId].Id); } return(result); }