public void TestConvenienceExpandoQueries() { // we have two objects with parameters in them var o = new { Id = 1, Text = "foo" }; var p = new { Id = 2, Guest = "boo" }; var list = _connection.QuerySql("SELECT ID=CONVERT (int, @ID), Text=@Text, Guest=@Guest", o.Expand(p)); FastExpando f = list[0]; dynamic d = f; Assert.AreEqual(3, f.Count()); Assert.AreEqual(2, d.ID); Assert.AreEqual("foo", d.Text); Assert.AreEqual("boo", d.GUEST); }
public void Vector_Expand_By_Vector() { Vector v1 = new[] { 1, 2, 3 }; Vector v2 = new[] { 4, 5, 6 }; Vector v3 = new[] { 7, 8, 9 }; Vector sl = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Vector an = v1 .Expand(v2) .Expand(v3); Assert.Equal(sl, an); }
public void Vector_Expand_By_N() { Vector v1 = new[] { 1, 2, 3 }; Vector sl = new[] { 1, 2, 3, 0, 0, 0 }; Vector an = v1.Expand(3); Assert.Equal(sl, an); }
//void Main() int x,i; {val = new Table;....} /* MethodDecl = ( Type | "void" ) ident "(" [ FormPars ] ")" * { VarDecl } Block . */ // First(MethodDecl)={ident, void}; Follow(MethodDecl)={"}"} static void MethodDecl(System.Windows.Forms.TreeNode padre) { /////// padre = "MethodDeclsOpc" System.Windows.Forms.TreeNode hijo1 = new System.Windows.Forms.TreeNode("MethodDecl"); //luego hay que sacarlo y modificar la rama del ident //padre.Nodes.Add(hijo1); //////// //MessageBoxCon3Preg(); System.Windows.Forms.TreeNode methodDecl = new System.Windows.Forms.TreeNode("MethodDecl"); //cuelga ESTE NODO DESPUES DE pintar el void Struct type = new Struct(Struct.Kinds.None); //Pone por defecto void if (la == Token.VOID || la == Token.IDENT) { if (la == Token.VOID) { Check(Token.VOID); //token = void laToken = Main Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); //pinta void //incluye if (muestraProducciones) MessageBoxCon3Preg(); //Code.cargaProgDeLaGram("MethodDeclsOpc = MethodDecl MethodDeclsOpc."); //Una vez que encuentra "void", infiere que debe usar la opcion: methodDecl.... etc padre.Nodes.Add(methodDecl); padre.Expand(); //////// if (muestraProducciones) MessageBoxCon3Preg(); Code.seleccLaProdEnLaGram(8); //MethodDecl = TypeOrVoid ident "(" PossFormPars ")" Block. if (muestraProducciones) MessageBoxCon3Preg(); System.Windows.Forms.TreeNode typeOrVoid = new System.Windows.Forms.TreeNode("TypeOrVoid"); //ya ha pintado el void methodDecl.Nodes.Add(typeOrVoid); methodDecl.Expand(); if (muestraProducciones) MessageBoxCon3Preg(); //Code.cargaProgDeLaGram("MethodDecl = TypeOrVoid ident '(' Pars ')' PosDeclars Block."); Code.seleccLaProdEnLaGram(9); // 9.TypeOrVoid = Type | "void“. if (muestraProducciones) MessageBoxCon3Preg(); //como ya ha verificado "void", typeOrVoid.Nodes.Add("'void'"); typeOrVoid.Expand(); if (muestraProducciones) MessageBoxCon3Preg(); type = Tab.noType; // para void } else if (la == Token.IDENT) { Type(out type); // token = UnTipo laToken = Main Code.cargaProgDeLaGram("TypeOrVoid = Type."); Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); /////////// //hay que cambiar hijo1 por methodDecl, e hijo2 por... System.Windows.Forms.TreeNode hijo2 = new System.Windows.Forms.TreeNode("TypeOrVoid = Type"); hijo1.Nodes.Add(hijo2); hijo2.Nodes.Add("Type= "+type.kind.ToString()); ////////// } /////// methodDecl.Nodes.Add("ident"); if (muestraProducciones) MessageBoxCon3Preg(); Check(Token.IDENT); //Main por ej. //token = Main, laToken = "(" Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); //hijo1.Nodes.Add("ident"); ////// curMethod = Tab.Insert(Symbol.Kinds.Meth, token.str, type);//inserta void Main // que pasa si hubieran parametros? Tab.OpenScope(curMethod); // tengo que insertar un método en la tabla de símbolo // todos los parámetros son locales //tipoSimbolo = Symbol.Kinds.Local; //// methodDecl.Nodes.Add("'('"); if (muestraProducciones) MessageBoxCon3Preg(); //// Check(Token.LPAR); //Si Main() => no tiene FormPars Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); ///////// System.Windows.Forms.TreeNode pars = new System.Windows.Forms.TreeNode("Pars"); methodDecl.Nodes.Add(pars); if (muestraProducciones) MessageBoxCon3Preg(); Code.seleccLaProdEnLaGram(10); //10.Pars = . | FormPar CommaFormParsOpc. if (muestraProducciones) MessageBoxCon3Preg(); if (la == Token.IDENT) // { FormPars(pars); //Aqui hay que crear los symbolos para los args methodDecl.Nodes.Add("')'"); if (muestraProducciones) MessageBoxCon3Preg(); Check(Token.RPAR); Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); //pinta el ")" } //y colgarlos de curMethod.locals else { //infiere que no hay params => 1) debe venir un ")". 2) La pocion de la produccion es "." //Code.cargaProgDeLaGram("Pars = ."); Check(Token.RPAR); Code.coloreaConRojo("token"); //Code.coloreaConRojo(true); //pinta el ")" pars.Nodes.Add("."); pars.Expand(); if (muestraProducciones) MessageBoxCon3Preg(); methodDecl.Nodes.Add("')'"); if (muestraProducciones) MessageBoxCon3Preg(); } System.Windows.Forms.TreeNode posDeclars = new System.Windows.Forms.TreeNode("PosDeclars"); methodDecl.Nodes.Add(posDeclars); if (muestraProducciones) MessageBoxCon3Preg(); Code.seleccLaProdEnLaGram(1); //1.Declarations = .| Declaration Declarations. if (muestraProducciones) MessageBoxCon3Preg(); //Code.cargaProgDeLaGram("PosDeclars = .| Declaration PosDeclars."); //////////// System.Windows.Forms.TreeNode hijo22 = new System.Windows.Forms.TreeNode("PosDeclars"); hijo1.Nodes.Add(hijo22); bool banderita=false; /////////// Code.CreateMetadata(curMethod); //genera il //Declaraciones por ahora solo decl de var, luego habria q agregar const y clases while (la != Token.LBRACE && la != Token.EOF) //void Main()==> int x,i; {val = new Table;....} { //Code.cargaProgDeLaGram("Block = '{' StatementsOpc '}'."); if (la == Token.IDENT) { banderita = true; Code.coloreaConRojo("latoken"); //Code.coloreaConRojo(false); //colorea "int" en int i; //Infiere la 2° opcion de PosDeclars aaaaaaaa System.Windows.Forms.TreeNode declaration = new System.Windows.Forms.TreeNode("Declaration"); posDeclars.Nodes.Add(declaration); posDeclars.Expand(); if (muestraProducciones) MessageBoxCon3Preg(); //Code.cargaProgDeLaGram("PosDeclars = Declaration PosDeclars."); Code.seleccLaProdEnLaGram(2); if (muestraProducciones) MessageBoxCon3Preg(); //Code.cargaProgDeLaGram("Declaration = ConstDecl | VarDecl | ClassDecl."); //Code.seleccLaProdEnLaGram(2); Code.cargaProgDeLaGram("Declaration = VarDecl."); //////// //Puesto q leyò un ident, infiere q la opcion de la produccion es "VarDecl" System.Windows.Forms.TreeNode varDecl = new System.Windows.Forms.TreeNode("VarDecl"); declaration.Nodes.Add(varDecl); declaration.Expand(); if (muestraProducciones) MessageBoxCon3Preg(); /////////// VardDecl(Symbol.Kinds.Local, varDecl); // int x,i; en MethodDecl() con int ya consumido //cantVarLocales++; /////// } else { token = laToken; Errors.Error("espero una declaracion de variable"); } } Code.seleccLaProdEnLaGram(1); Code.coloreaConRojo("latoken"); //Code.coloreaConRojo(false); "{" if (banderita == false) { Code.cargaProgDeLaGram("PosDeclars = ."); hijo22.Nodes.Add("PosDeclars = ."); } //if (muestraProducciones) MessageBoxCon3Preg(); if (cantVarLocales > 0) { string instrParaVarsLocs = ".locals init(int32 V_0"; for (int i = 1; i < cantVarLocales; i++) { instrParaVarsLocs = instrParaVarsLocs + "," + "\n int32 V_" + i.ToString(); // +" "; } instrParaVarsLocs = instrParaVarsLocs + ")"; Code.cargaInstr(instrParaVarsLocs); } ////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// Block(hijo1); //Bloque dentro de MethodDecl() ////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////// curMethod.nArgs = Tab.topScope.nArgs; curMethod.nLocs = Tab.topScope.nLocs; curMethod.locals = Tab.topScope.locals; Tab.CloseScope(); Tab.mostrarTab(); Code.il.Emit(Code.RET); //si lo saco se clava en el InvokeMember Parser.nroDeInstrCorriente++; Parser.cil[Parser.nroDeInstrCorriente].accionInstr = Parser.AccionInstr.ret; Code.cargaInstr("ret"); } }
/// <summary> /// Expands the tree node. /// </summary> /// <param name="parentNode">The Expand method expands the current TreeNode down to the next level of nodes.</param> public virtual void ExpandNode(System.Windows.Forms.TreeNode parentNode) { if (_treeView.InvokeRequired) { _treeView.Invoke(new ExpandNodeDelegate(ExpandNode), new object[] { parentNode }); return; } System.Diagnostics.Debug.Assert(parentNode != null); parentNode.Expand(); }
private System.Windows.Forms.TreeNode Add(System.Windows.Forms.TreeNode parent) { string strText = "Node" + NextNode++.ToString(); System.Windows.Forms.TreeNode newnode; Microsoft.Web.UI.WebControls.TreeNodeCollection col; Microsoft.Web.UI.WebControls.TreeNode webNode; if (parent == null) { newnode = tvNodes.Nodes.Add(strText); col = tvWebNodes.Nodes; } else { newnode = parent.Nodes.Add(strText); parent.Expand(); col = ((Microsoft.Web.UI.WebControls.TreeNode)parent.Tag).Nodes; } webNode = new Microsoft.Web.UI.WebControls.TreeNode(); webNode.Text = strText; col.Add(webNode); newnode.Tag = webNode; btnApply.Enabled = true; return newnode; }