public static void AllocateMemory(Workspace Home, MemoryStruct Heap, ExpressionVisitor Evaluator, HScriptParser.DeclareMatrixLiteralContext context) { string name = context.IDENTIFIER().GetText(); CellAffinity type = GetAffinity(context.type()); MatrixVisitor vis = new MatrixVisitor(Home, Heap, Evaluator); CellMatrix mat = vis.ToMatrix(context.matrix_expression()).Evaluate(); Heap.Arrays.Reallocate(name, mat); }
// Parameters // public static HParameterSet GetHParameter(Workspace Home, HScriptParser.Hparameter_setContext context) { // Create a set // HParameterSet parmset = new HParameterSet(); // Step one: cycle through all parameters and look for any tables // DataSet first_data = null; List<HScriptParser.HparameterContext> param_context = new List<HScriptParser.HparameterContext>(); foreach (HScriptParser.HparameterContext ctx in context.hparameter()) { if (ctx.full_table_name() != null) { DataSet d = VisitorHelper.GetData(Home, ctx.full_table_name()); if (first_data == null) first_data = d; parmset.Add(ctx.SCALAR().GetText(), d); } else param_context.Add(ctx); } ExpressionVisitor exp_vis = first_data != null ? new ExpressionVisitor(null, Home, first_data.Name, first_data.Columns, new StaticRegister(null)) : new ExpressionVisitor(null, Home); MatrixVisitor mat_vis = new MatrixVisitor(Home, null, exp_vis); foreach (HScriptParser.HparameterContext ctx in param_context) { string name = ctx.SCALAR().GetText(); if (ctx.expression() != null) parmset.Add(name, exp_vis.ToNode(ctx.expression())); else if (ctx.expression_alias_list() != null) parmset.Add(name, exp_vis.ToNodes(ctx.expression_alias_list())); else if (ctx.lambda_unit() != null) parmset.Add(name, VisitorHelper.RenderLambda(Home, ctx.lambda_unit())); else if (ctx.matrix_expression() != null) parmset.Add(name, mat_vis.ToMatrix(ctx.matrix_expression())); else if (ctx.K_OUT() != null) parmset.Add(name, Home.GlobalHeap.Scalars, ctx.IDENTIFIER().GetText()); } return parmset; }
internal static DeclareMatrixNode RenderDeclareNode(Workspace Home, ExpressionVisitor Evaluator, HScriptParser.DeclareMatrixLiteralContext context) { string name = context.IDENTIFIER().GetText(); MatrixVisitor MEvaluator = new MatrixVisitor(Home, Home.GlobalHeap, Evaluator); MNode node = MEvaluator.ToMatrix(context.matrix_expression()); return new DeclareMatrixNode(Home.GlobalHeap, name, node); }