internal static CodeVariableDeclarationStatement MakeDryadVertexParamsDecl(DryadQueryNode node) { int inputArity = node.InputArity + node.GetReferencedQueries().Count; int outputArity = node.OutputArity; CodeExpression arg1 = new CodePrimitiveExpression(inputArity); CodeExpression arg2 = new CodePrimitiveExpression(outputArity); CodeExpression dVertexParamsInitExpr = new CodeObjectCreateExpression("HpcLinqVertexParams", arg1, arg2); CodeVariableDeclarationStatement dVertexParamsDecl = new CodeVariableDeclarationStatement("HpcLinqVertexParams", DryadVertexParamName, dVertexParamsInitExpr); return dVertexParamsDecl; }
private void AssignUniqueId(DryadQueryNode node) { if (node.m_uniqueId == this.m_currentPhaseId) { foreach (Pair<string, DryadQueryNode> refChild in node.GetReferencedQueries()) { this.AssignUniqueId(refChild.Value); } foreach (DryadQueryNode child in node.Children) { this.AssignUniqueId(child); } if (node.m_uniqueId == this.m_currentPhaseId) { node.m_uniqueId = this.m_nextVertexId++; if (node.OutputNode is DryadForkNode) { foreach (DryadQueryNode pnode in node.Parents) { if (pnode.m_uniqueId == this.m_currentPhaseId) { pnode.m_uniqueId = this.m_nextVertexId++; } } } } } }
private void GetReferencedQueries(DryadQueryNode curNode, ReferencedQuerySubst subst) { curNode.GetReferencedQueries(subst); DryadQueryNode[] curChildren = curNode.Children; for (int i = 0; i < curChildren.Length; i++) { DryadQueryNode child = curChildren[i]; if (this.Contains(child)) { this.GetReferencedQueries(child, subst); } } }