/// <summary> /// Добавление файла /// </summary> /// <param name="elem">Элемент, в который добавляем. Если null - добавление происходит в корень</param> public void AddFile(Elem elem) { if (elem == null) CurrElem = Structure; else CurrElem = elem; _questionDialog = new UserDialog("Добавление файла", "Введите имя файла"); _questionDialog.Closed += fileAdded; _questionDialog.Show(); }
/// <summary> /// Добавление папки /// </summary> /// <param name="elem">Элемент, в который добавляем. Если null - добавление происходит в корень</param> public void AddFolder(Elem elem) { if (elem == null) CurrElem = Structure; else CurrElem = elem; _questionDialog = new UserDialog("Добавление папки", "Введите имя папки"); _questionDialog.Closed += folderAdded; _questionDialog.Show(); }
public static Elem Create(XElement element, int source) { var kv = element.GetBestKeyValueInfo(); var res = new Elem { LineNumber = element.LineNumber(), Element = element, KeyValueInfo = kv, Source = source, XPath = element.GetXPath(kv), }; return res; }
public void TestMethod1() { var resolver = new ProviderAddrPortResolver(); var t = new AddrPort("omsg101", 2805); var k = new AddrPort("omsg102", 2818); var g = new AddrPort("omsg103", 2831); var ret = ProviderAddrPortResolver.Concat(ProviderAddrPortResolver.CreateEmptyCircle(), new[] { t, k, g }); var a = new Elem<AddrPort>(t); var b = new Elem<AddrPort>(k); var c = new Elem<AddrPort>(g); var circle = ProviderAddrPortResolver.CreateEmptyCircle(); circle = ProviderAddrPortResolver.InsertNext(circle, a); circle = ProviderAddrPortResolver.InsertNext(circle, b); circle = ProviderAddrPortResolver.InsertNext(circle, c); Assert.AreEqual(ret.Circle.ToStr(), circle.ToStr()); }
public override void doAction(CSemiExp semi) { Display.Display.displayActions(actionDelegate, $"action PushStack ({semi[0]}-{semi[1]})"); ++repo_.scopeCount; Elem elem = new Elem(); elem.type = semi[0]; // expects type elem.name = semi[1]; // expects name if (semi.count > 2) { // expects class in which function resides or null if not inside a class elem.functionClass = semi[2]; } elem.beginLine = repo_.semi.lineCount - 1; elem.endLine = 0; elem.beginScopeCount = repo_.scopeCount; elem.endScopeCount = 0; repo_.stack.push(elem); if (displayStack) { repo_.stack.display(); } if (displaySemi) { Console.Write("\n line# {0,-5}", repo_.semi.lineCount - 1); Console.Write("entering "); string indent = new string(' ', 2 * repo_.stack.count); Console.Write("{0}", indent); display(semi); // defined in abstract action } if (elem.type == "control" || elem.name == "anonymous") { return; } repo_.locations.Add(elem); }
static void Main() { Console.Write("\n Test ScopeStack"); Console.Write("\n =================\n"); ScopeStack <Elem> mystack = new ScopeStack <Elem>(); Test.Elem e; e.type = "namespace"; e.name = "foobar"; e.place = 14; mystack.push(e); e.make("class", "feebar", 21); mystack.push(e); e.make("function", "doTest", 44); mystack.push(e); e.make("control", "for", 56); mystack.push(e); mystack.display(); Console.WriteLine(); Elem test = mystack.lastPopped(); Console.Write("\n last popped:\n {0}\n", test); e = mystack.pop(); Console.Write("\n popped:\n {0}", e); e = mystack.pop(); Console.Write("\n popped:\n {0}\n", e); Console.Write("\n last popped:\n {0}\n", mystack.lastPopped()); mystack.display(); Console.Write("\n\n"); }
public static Elem[] BuildMinAlt(Graph <NODE, EDGE> graph, Dictionary <Node, double> source2initdist, Func <double, Node, Edge, Node, double> GetAlt, Func <Node, bool> IsTarget) { Func <double, Graph.Node, Graph.Edge, Graph.Node, double> fnGetAlt = null; if (GetAlt != null) { fnGetAlt = delegate(double u_dist, Graph.Node u_node, Graph.Edge uv_edge, Graph.Node v_node) { return(GetAlt(u_dist, (Node)u_node, (Edge)uv_edge, (Node)v_node)); } } ; Func <Graph.Node, bool> fnIsTarget = null; if (IsTarget != null) { fnIsTarget = delegate(Graph.Node node) { return(IsTarget((Node)node)); } } ; Dictionary <Graph.Node, double> lsource2initdist = new Dictionary <Graph.Node, double>(); foreach (Node source in source2initdist.Keys) { lsource2initdist.Add(source, source2initdist[source]); } Graph.Dijkstra.Elem[] elems = Graph.Dijkstra.BuildMinAlt(graph.graph, lsource2initdist, fnGetAlt, fnIsTarget); Elem[] elems2 = new Elem[elems.Length]; for (int i = 0; i < elems.Length; i++) { elems2[i] = new Elem(elems[i]); } return(elems2); }
public static void MsgBatchSend() { MsgBatchSendParam param = new MsgBatchSendParam(); string user_id = "287646"; List <string> userids = new List <string>(); userids.Add(user_id); Message message = new Message(); Elem elem = new Elem(); elem.elem_type = TIMElemType.kTIMElem_Text; elem.text_elem_content = "批量发"; List <Elem> elem_list = new List <Elem>(); elem_list.Add(elem); message.message_elem_array = elem_list; param.msg_batch_send_param_identifier_array = userids; param.msg_batch_send_param_msg = message; TIMResult res = TencentIMSDK.MsgBatchSend(param, addAsyncDataToConsole); Utils.Log(((int)res).ToString()); addDataToConsole(res); }
public static void MsgSendMessage() { string conv_id = touserid; Message message = new Message(); message.message_conv_id = conv_id; message.message_conv_type = TIMConvType.kTIMConv_C2C; List <Elem> messageElems = new List <Elem>(); Elem textMessage = new Elem(); textMessage.elem_type = TIMElemType.kTIMElem_Text; textMessage.text_elem_content = "圣女峰"; messageElems.Add(textMessage); message.message_elem_array = messageElems; message.message_cloud_custom_str = "unity local custom data"; StringBuilder messageId = new StringBuilder(128); TIMResult res = TencentIMSDK.MsgSendMessage(conv_id, TIMConvType.kTIMConv_C2C, message, messageId, addAsyncDataToConsole); Utils.Log(((int)res).ToString()); Utils.Log(messageId.ToString()); // 同步返回消息ID addDataToConsole(res); addStringDataToConsole(messageId.ToString()); }
private void ShowElements() { SendDestroyMessage(); Transform Plate = Instantiate(Plate_prefab) as Transform; NewPlate(Plate); Transform Elem; List <GameObject> lst = new List <GameObject>(); foreach (string caseName in DataStorage.caseNames) { lst.Add(Resources.Load("Elements/" + caseName) as GameObject); } for (int i = 0; i < DataStorage.N; i++) { Elem = Instantiate(lst[DataStorage.caseNames.IndexOf(DataStorage.cm[i].CaseName)].transform) as Transform; Elem.parent = Rotator; Elem.localPosition = new Vector3(DataStorage.cm[i].x + DataStorage.cm[i].Width / 2, DataStorage.cm[i].y + DataStorage.cm[i].Height / 2, 0); // make it at the position of the spawner Elem.localEulerAngles = Vector3.zero; //default angle if (DataStorage.cm[i].isVertical == true) { Elem.localEulerAngles = new Vector3(Elem.rotation.x, Elem.rotation.y, Elem.rotation.z + 90); } Elem.gameObject.name = i.ToString(); Elem.Find("Label").GetComponent <TextMesh>().text = DataStorage.cm[i].Name; T = false; } }
static void fill(){ for (int i=0; i<size; i++) { mat[0,i] = new Elem(); mat[size-1, i] = new Elem(); mat [0, i].height = -1; mat [size - 1, i].height = -1; mat [0, i].available = 1; mat [size - 1, i].available = 1; mat [0, i].p = new Position(0,i); mat [size - 1, i].p = new Position(size-1, i); } for (int i=0; i<size; i++) { mat[i,0] = new Elem(); mat[i,size-1] = new Elem(); mat [i, 0].height = -1; mat [i, size - 1].height = -1; mat [i, 0].available = 1; mat [i, size - 1].available = 1; mat[i,0].p = new Position(i,0); mat[i,size-1].p = new Position(i, size-1); } }
static void shift(float[,] newMat, float waterLimit){ int size = (int)Mathf.Sqrt(newMat.Length); int size1 = (int)Mathf.Sqrt(mat.Length)-2; for (int i=0; i<size1; i++) for (int j=0; j<size1; j++) { mat [i+1, j+1] = new Elem(); bool b = false; int k=0; int t=tile*i; while (k<tile && k+t<size && b==false){ int n=0; int t1=tile*j; while (n<tile && n+t1<size && b==false){ if (newMat[k+t, n+t1]<=waterLimit){ b=true; break;} mat[i+1,j+1].height+=newMat[k+t, n+t1]; mat[i+1,j+1].moisture+= getCenter[k+t,n+t1].moisture; n++; } k++; } if (b==true) mat[i+1, j+1].height = -100; else mat [i+1,j+1].height/=tile*tile; mat[i+1,j+1].moisture/=tile*tile; mat [i+1, j+1].p = new Position(i+1, j+1); } }
public void AddElem(Elem e) { mElems.Add(e); mDic[e.szName] = e; }
public static Elem[] BuildMinAlt(Graph graph, Dictionary <Graph.Node, double> source2initdist, Func <double, Graph.Node, Graph.Edge, Graph.Node, double> GetAlt, Func <Graph.Node, bool> IsTarget) { /// dist(v2) := min[dist(v2), alt[dist(v1), dist(v1-v2)]] int maxid = 0; foreach (Graph.Node node in graph.Nodes) { maxid = Math.Max(maxid, node.id); } int size = maxid + 1; //double maxdist = edge_dist.Values.Max() + 100; Elem[] elems = new Elem[size]; Dictionary <Graph.Node, Graph.Node> prev = new Dictionary <Graph.Node, Graph.Node>(); foreach (Graph.Node node in graph.Nodes) { elems[node.id] = new Elem(node, double.PositiveInfinity, null, null); } foreach (Graph.Node source in source2initdist.Keys) { double initdist = source2initdist[source]; HDebug.Assert(initdist >= 0); HDebug.Assert(elems[source.id] != null, elems[source.id].node == source); elems[source.id] = new Elem(source, initdist, null, null); } SortedSet <Elem> Q = new SortedSet <Elem>(new Elem(null, double.NaN, null, null)); foreach (Graph.Node node in graph.Nodes) { Q.Add(elems[node.id]); } while (Q.Count > 0) { Elem u = Q.Min; Q.Remove(u); if ((IsTarget != null) && (IsTarget(u.node))) { return(elems); } if (double.IsInfinity(u.dist)) //if(u.dist > maxdist) { elems[u.node.id] = new Elem(u.node, double.PositiveInfinity, null, null); continue; } foreach (Graph.Node v_node in u.node.nexts.Keys) { Graph.Edge uv_edge = u.node.nexts[v_node]; double alt = GetAlt(u.dist, u.node, uv_edge, v_node); HDebug.Assert(alt >= u.dist); if (alt < elems[v_node.id].dist) { Q.Remove(elems[v_node.id]); elems[v_node.id] = new Elem(v_node, alt, u.node, uv_edge); Q.Add(elems[v_node.id]); } } } return(elems); }
public override void Generate(GenerationInfo gen_info) { gen_info.CurrentType = Name; string asm_name = gen_info.AssemblyName.Length == 0 ? NS.ToLower() + "-sharp" : gen_info.AssemblyName; DirectoryInfo di = GetDirectoryInfo(gen_info.Dir, asm_name); StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name); sw.WriteLine("namespace " + NS + " {"); sw.WriteLine(); sw.WriteLine("\tusing System;"); sw.WriteLine("\tusing System.Collections;"); sw.WriteLine("\tusing System.Runtime.InteropServices;"); sw.WriteLine(); SymbolTable table = SymbolTable.Table; sw.WriteLine("#region Autogenerated code"); if (IsDeprecated) { sw.WriteLine("\t[Obsolete]"); } foreach (string attr in custom_attrs) { sw.WriteLine("\t" + attr); } sw.Write("\t{0} {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : ""); string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); if (cs_parent != "") { di.objects.Add(CName, QualifiedName); sw.Write(" : " + cs_parent); } foreach (string iface in interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + table.GetCSType(iface)); } foreach (string iface in managed_interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + iface); } sw.WriteLine(" {"); sw.WriteLine(); GenCtors(gen_info); GenProperties(gen_info, null); GenFields(gen_info); GenChildProperties(gen_info); bool has_sigs = (sigs != null && sigs.Count > 0); if (!has_sigs) { foreach (string iface in interfaces) { ClassBase igen = table.GetClassGen(iface); if (igen != null && igen.Signals != null) { has_sigs = true; break; } } } if (has_sigs && Elem.HasAttribute("parent")) { GenSignals(gen_info, null); } if (vm_nodes.Count > 0) { if (gen_info.GlueEnabled) { GenVirtualMethods(gen_info); } else { Statistics.VMIgnored = true; Statistics.ThrottledCount += vm_nodes.Count; } } GenMethods(gen_info, null, null); if (interfaces.Count != 0) { Hashtable all_methods = new Hashtable(); foreach (Method m in Methods.Values) { all_methods[m.Name] = m; } Hashtable collisions = new Hashtable(); foreach (string iface in interfaces) { ClassBase igen = table.GetClassGen(iface); foreach (Method m in igen.Methods.Values) { Method collision = all_methods[m.Name] as Method; if (collision != null && collision.Signature.Types == m.Signature.Types) { collisions[m.Name] = true; } else { all_methods[m.Name] = m; } } } foreach (string iface in interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } ClassBase igen = table.GetClassGen(iface); igen.GenMethods(gen_info, collisions, this); igen.GenProperties(gen_info, this); igen.GenSignals(gen_info, this); } } foreach (XmlElement str in strings) { sw.Write("\t\tpublic static string " + str.GetAttribute("name")); sw.WriteLine(" {\n\t\t\t get { return \"" + str.GetAttribute("value") + "\"; }\n\t\t}"); } if (cs_parent != String.Empty && GetExpected(CName) != QualifiedName) { sw.WriteLine(); sw.WriteLine("\t\tstatic " + Name + " ()"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tGtkSharp." + Studlify(asm_name) + ".ObjectManager.Initialize ();"); sw.WriteLine("\t\t}"); } sw.WriteLine("#endregion"); AppendCustom(sw, gen_info.CustomDir); sw.WriteLine("\t}"); sw.WriteLine("}"); sw.Close(); gen_info.Writer = null; Statistics.ObjectCount++; }
public int ShortestBridge(int[][] grid) { List <Elem> list = new List <Elem>(); bool firstIslandMarked = false; for (int i = 0; i < grid.Length; i++) { for (int j = 0; j < grid[0].Length; j++) { if (grid[i][j] == 1) { RecFind(grid, i, j, list); firstIslandMarked = true; break; } } if (firstIslandMarked) { break; } } int minDist = Int32.MaxValue; foreach (var e in list) { Queue <Elem> q = new Queue <Elem>(); bool[,] vis = new bool[grid.Length, grid[0].Length]; q.Enqueue(e); vis[e.row, e.col] = true; int dist = 0; while (q.Any()) { int qSize = q.Count; bool reached = false; for (int i = 0; i < qSize; i++) { Elem temp = q.Dequeue(); if (temp.row > 0 && grid[temp.row - 1][temp.col] == 1) { minDist = Math.Min(minDist, dist); reached = true; break; } if (temp.row < grid.Length - 1 && grid[temp.row + 1][temp.col] == 1) { minDist = Math.Min(minDist, dist); reached = true; break; } if (temp.col > 0 && grid[temp.row][temp.col - 1] == 1) { minDist = Math.Min(minDist, dist); reached = true; break; } if (temp.col < grid[0].Length - 1 && grid[temp.row][temp.col + 1] == 1) { minDist = Math.Min(minDist, dist); reached = true; break; } if (reached) { break; } if (temp.row > 0 && !vis[temp.row - 1, temp.col] && grid[temp.row - 1][temp.col] == 0) { vis[temp.row - 1, temp.col] = true; q.Enqueue(new Elem(temp.row - 1, temp.col)); } if (temp.row < grid.Length - 1 && !vis[temp.row + 1, temp.col] && grid[temp.row + 1][temp.col] == 0) { vis[temp.row + 1, temp.col] = true; q.Enqueue(new Elem(temp.row + 1, temp.col)); } if (temp.col > 0 && !vis[temp.row, temp.col - 1] && grid[temp.row][temp.col - 1] == 0) { vis[temp.row, temp.col - 1] = true; q.Enqueue(new Elem(temp.row, temp.col - 1)); } if (temp.col < grid[0].Length - 1 && !vis[temp.row, temp.col + 1] && grid[temp.row][temp.col + 1] == 0) { vis[temp.row, temp.col + 1] = true; q.Enqueue(new Elem(temp.row, temp.col + 1)); } } dist++; } } return(minDist); }
public Elem(T value) { this.prev = null; this.next = null; this.value = value; }
public override void Generate(GenerationInfo gen_info) { gen_info.CurrentType = QualifiedName; string asm_name = gen_info.AssemblyName.Length == 0 ? NS.ToLower() + "-sharp" : gen_info.AssemblyName; DirectoryInfo di = GetDirectoryInfo(gen_info.Dir, asm_name); StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name, NS); sw.WriteLine("namespace " + NS + " {"); sw.WriteLine(); sw.WriteLine("\tusing System;"); sw.WriteLine("\tusing System.Collections;"); sw.WriteLine("\tusing System.Collections.Generic;"); sw.WriteLine("\tusing System.Runtime.InteropServices;"); sw.WriteLine(); SymbolTable table = SymbolTable.Table; sw.WriteLine("#region Autogenerated code"); if (IsDeprecated) { sw.WriteLine("\t[Obsolete]"); } foreach (string attr in customAttrs) { sw.WriteLine("\t" + attr); } sw.Write("\t{0} {1}partial class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : ""); string csParent = table.GetCSType(Elem.GetAttribute("parent")); if (!string.IsNullOrEmpty(csParent)) { di.objects.Add(CName, QualifiedName); sw.Write(" : " + csParent); } foreach (string iface in interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + table.GetCSType(iface)); } foreach (string iface in managed_interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + iface); } sw.WriteLine(" {"); sw.WriteLine(); GenCtors(gen_info); GenProperties(gen_info, null); GenFields(gen_info); GenChildProperties(gen_info); bool has_sigs = (sigs != null && sigs.Count > 0); if (!has_sigs) { foreach (string iface in interfaces) { if (table.GetClassGen(iface) is InterfaceGen iGen && iGen.Signals != null) { has_sigs = true; break; } } } if (has_sigs && Elem.HasAttribute("parent")) { GenSignals(gen_info, null); } GenConstants(gen_info); GenClassMembers(gen_info, csParent); GenMethods(gen_info, null, null); if (interfaces.Count != 0) { var all_methods = new Dictionary <string, Method> (); foreach (Method m in Methods.Values) { all_methods[m.Name] = m; } var collisions = new Dictionary <string, bool> (); foreach (string iface in interfaces) { ClassBase igen = table.GetClassGen(iface); foreach (Method m in igen.Methods.Values) { if (m.Name.StartsWith("Get") || m.Name.StartsWith("Set")) { if (GetProperty(m.Name.Substring(3)) != null) { collisions[m.Name] = true; continue; } } all_methods.TryGetValue(m.Name, out Method collision); if (collision != null && collision.Signature.Types == m.Signature.Types) { collisions[m.Name] = true; } else { all_methods[m.Name] = m; } } } foreach (string iface in interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } InterfaceGen igen = table.GetClassGen(iface) as InterfaceGen; igen.GenMethods(gen_info, collisions, this); igen.GenProperties(gen_info, this); igen.GenSignals(gen_info, this); igen.GenVirtualMethods(gen_info, this); } } foreach (XmlElement str in strings) { sw.Write("\t\tpublic static string " + str.GetAttribute("name")); sw.WriteLine(" {\n\t\t\t get { return \"" + str.GetAttribute("value") + "\"; }\n\t\t}"); } if (!string.IsNullOrEmpty(csParent) && GetExpected(CName) != QualifiedName) { sw.WriteLine(); sw.WriteLine("\t\tstatic " + Name + " ()"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tGtkSharp." + Studlify(asm_name) + ".ObjectManager.Initialize ();"); sw.WriteLine("\t\t}"); } GenerateStructureABI(gen_info); sw.WriteLine("#endregion"); sw.WriteLine("\t}"); sw.WriteLine("}"); sw.Close(); gen_info.Writer = null; Statistics.ObjectCount++; }
public Holder(Elem <RecordT> itms) { _itms = itms; }
// -------------------- Finite Element matrix methods ----------------------------- public alglib.sparsematrix ParallelAssembly_K(Database DB, int[] nDOF_reduction, int inc, string type) { Stopwatch sw = new Stopwatch(); sw.Start(); // Global Stiffness Matrix Initialization int nFixDOF = nDOF_reduction.Where(x => x == -1).Count(); alglib.sparsecreate(DB.nDOF - nFixDOF, DB.nDOF - nFixDOF, out alglib.sparsematrix K); // Assembly loop Console.Write(" K Matrix assembly: "); // Create output in console Parallel.ForEach(DB.ElemLib.Values, Elem => { MatrixST k = new MatrixST(3 * Elem.NList.Count, 3 * Elem.NList.Count); if (type == "Initial") { k = Elem.K_Initial(inc, DB); } if (type == "Tangent") { k = Elem.K_Tangent(inc, DB); } // Assembly to Global Stiffness Matrix for (int i = 0; i < Elem.NList.Count; i++) { for (int m = 0; m < 3; m++) { for (int j = 0; j < Elem.NList.Count; j++) { for (int n = 0; n < 3; n++) { int row = DB.NodeLib[Elem.NList[i]].DOF[m]; int col = DB.NodeLib[Elem.NList[j]].DOF[n]; // Only Upper Left triangle is needed if (col >= row) { // K matrix with Esential BC included if (nDOF_reduction[row] != -1) { if (nDOF_reduction[col] != -1) { lock (K) { alglib.sparseadd(K, row - nDOF_reduction[row], col - nDOF_reduction[col], k.GetFast(i * 3 + m, j * 3 + n)); } } } } } } } } ; }); sw.Stop(); Console.WriteLine(" Done in " + sw.Elapsed.TotalSeconds.ToString("F2", CultureInfo.InvariantCulture) + "s"); return(K); }
/// <summary> /// Загрузить шаблон устройства /// </summary> public bool LoadTemplate(string fileName, out string errMsg) { try { // очистка списков групп элементов и команд ElemGroups.Clear(); Cmds.Clear(); // загрузка шаблона устройства XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); // загрузка групп элементов XmlNode elemGroupsNode = xmlDoc.DocumentElement.SelectSingleNode("ElemGroups"); if (elemGroupsNode != null) { int kpTagInd = 0; foreach (XmlElement elemGroupElem in elemGroupsNode.ChildNodes) { TableTypes tableType = (TableTypes)(Enum.Parse(typeof(TableTypes), elemGroupElem.GetAttribute("tableType"), true)); ElemGroup elemGroup = new ElemGroup(tableType); elemGroup.Address = ushort.Parse(elemGroupElem.GetAttribute("address")); elemGroup.Name = elemGroupElem.GetAttribute("name"); elemGroup.StartKPTagInd = kpTagInd; elemGroup.StartSignal = kpTagInd + 1; XmlNodeList elemNodes = elemGroupElem.SelectNodes("Elem"); foreach (XmlElement elemElem in elemNodes) { Elem elem = new Elem(); elem.Name = elemElem.GetAttribute("name"); string elemTypeStr = elemElem.GetAttribute("type"); elem.ElemType = elemTypeStr == "" ? elemGroup.DefElemType : (ElemTypes)(Enum.Parse(typeof(ElemTypes), elemTypeStr, true)); elem.InitByteOrder(elemElem.GetAttribute("byteOrder")); elemGroup.Elems.Add(elem); } if (0 < elemGroup.Elems.Count && elemGroup.Elems.Count <= ElemGroup.GetMaxElemCnt(tableType)) { ElemGroups.Add(elemGroup); kpTagInd += elemGroup.Elems.Count; } } } // загрузка команд XmlNode cmdsNode = xmlDoc.DocumentElement.SelectSingleNode("Cmds"); if (cmdsNode != null) { foreach (XmlElement cmdElem in cmdsNode.ChildNodes) { TableTypes tableType = (TableTypes)(Enum.Parse(typeof(TableTypes), cmdElem.GetAttribute("tableType"), true)); string multiple = cmdElem.GetAttribute("multiple"); string elemCnt = cmdElem.GetAttribute("elemCnt"); Cmd cmd = multiple == "" || elemCnt == "" ? new Cmd(tableType) : new Cmd(tableType, bool.Parse(multiple), int.Parse(elemCnt)); cmd.Address = ushort.Parse(cmdElem.GetAttribute("address")); cmd.Name = cmdElem.GetAttribute("name"); cmd.CmdNum = int.Parse(cmdElem.GetAttribute("cmdNum")); if (0 < cmd.CmdNum && cmd.CmdNum <= ushort.MaxValue) Cmds.Add(cmd); } } errMsg = ""; return true; } catch (Exception ex) { errMsg = Phrases.LoadTemplateError + ":" + Environment.NewLine + ex.Message; return false; } }
static void shift(float[,] newMat){ int size = (int)Mathf.Sqrt(newMat.Length); int size1 = (int)Mathf.Sqrt(mat.Length)-2; for (int i=0; i<size1; i++) for (int j=0; j<size1; j++) { mat [i+1, j+1] = new Elem(); int k=0; int t=tile*i; while (k<tile && k+t<size){ int n=0; int t1=tile*j; while (n<tile && n+t1<size){ mat[i+1,j+1].height+=newMat[k+t, n+t1]; n++; } k++; } mat [i+1,j+1].height/=tile*tile; mat [i+1, j+1].p = new Position(i+1, j+1); } }
/// <summary> /// creates an elem type data /// used to store package and server name /// </summary> /// <param name="package">the package name to store in the elem</param> /// <param name="serverName">the server name to store in the elem</param> /// <returns>Elem</returns> public Elem getDefaultElemData(string package, string serverName) { int index = package.LastIndexOf("\\") + 1; string fileName = ""; if (index != -1) fileName = package.Substring(index); Elem temp = new Elem(); temp.begin = 0; temp.end = 0; temp.type = "dummy"; temp.packageName = fileName; temp.serverName = serverName; return temp; }
/// <summary> /// Initializes the device tags. /// </summary> public override void InitDeviceTags() { DeviceTemplate deviceTemplate = GetDeviceTemplate(); if (deviceTemplate == null) { return; } // create device model deviceModel = CreateDeviceModel(); deviceModel.Addr = (byte)NumAddress; // add model elements and device tags foreach (ElemGroupConfig elemGroupConfig in deviceTemplate.ElemGroups) { bool groupActive = elemGroupConfig.Active; bool groupCommands = groupActive && elemGroupConfig.ReadOnlyEnabled; ElemGroup elemGroup = null; TagGroup tagGroup = new TagGroup(elemGroupConfig.Name) { Hidden = !groupActive }; int elemIndex = 0; if (groupActive) { elemGroup = deviceModel.CreateElemGroup(elemGroupConfig.DataBlock); elemGroup.Name = elemGroupConfig.Name; elemGroup.Address = (ushort)elemGroupConfig.Address; elemGroup.StartTagIdx = DeviceTags.Count; } foreach (ElemConfig elemConfig in elemGroupConfig.Elems) { // add model element if (groupActive) { Elem elem = elemGroup.CreateElem(); elem.Name = elemConfig.Name; elem.ElemType = elemConfig.ElemType; elem.ByteOrder = ModbusUtils.ParseByteOrder(elemConfig.ByteOrder) ?? deviceTemplate.Options.GetDefaultByteOrder(ModbusUtils.GetDataLength(elemConfig.ElemType)); elemGroup.Elems.Add(elem); } // add model command if (groupCommands && !elemConfig.ReadOnly && !string.IsNullOrEmpty(elemConfig.TagCode)) { deviceModel.Cmds.Add( CreateModbusCmd(deviceTemplate.Options, elemGroupConfig, elemConfig, elemIndex)); } // add device tag tagGroup.AddTag(elemConfig.TagCode, elemConfig.Name).SetFormat(GetTagFormat(elemConfig)); elemIndex++; } if (groupActive) { elemGroup.InitReqPDU(); elemGroup.InitReqADU(deviceModel.Addr, transMode); deviceModel.ElemGroups.Add(elemGroup); } DeviceTags.AddGroup(tagGroup); } // add model commands foreach (CmdConfig cmdConfig in deviceTemplate.Cmds) { deviceModel.Cmds.Add(CreateModbusCmd(deviceTemplate.Options, cmdConfig)); } deviceModel.InitCmdMap(); CanSendCommands = deviceModel.Cmds.Count > 0; InitModbusPoll(); }
protected ClassBase(XmlElement ns, XmlElement elem) : base(ns, elem) { deprecated = elem.GetAttributeAsBoolean("deprecated"); isabstract = elem.GetAttributeAsBoolean("abstract"); abi_fields_valid = true; string parent_type = Elem.GetAttribute("parent"); int num_abi_fields = 0; foreach (XmlNode node in elem.ChildNodes) { if (!(node is XmlElement)) { continue; } XmlElement member = (XmlElement)node; StructABIField abi_field = null; // Make sure ABI fields are taken into account, even when hidden. if (node.Name == "field") { num_abi_fields += 1; // Skip instance parent struct if present, taking into account // bindinator broken behaviour concerning parent field (ie. // marking it as pointer, somehow risky but good enough for now.) if (num_abi_fields != 1 || parent_type == "" || (member.GetAttribute("type").Replace("*", "") != parent_type )) { abi_field = new StructABIField(member, this, "abi_info"); abi_fields.Add(abi_field); } } else if (node.Name == "union") { abi_field = new UnionABIField(member, this, "abi_info"); abi_fields.Add(abi_field); } if (member.GetAttributeAsBoolean("hidden")) { continue; } string name; switch (node.Name) { case "method": name = member.GetAttribute("name"); while (methods.ContainsKey(name)) { name += "mangled"; } methods.Add(name, new Method(member, this)); break; case "property": name = member.GetAttribute("name"); while (props.ContainsKey(name)) { name += "mangled"; } props.Add(name, new Property(member, this)); break; case "field": // FIXME Generate callbacks. if (member.GetAttributeAsBoolean("is_callback")) { continue; } name = member.GetAttribute("name"); while (fields.ContainsKey(name)) { name += "mangled"; } var field = new ObjectField(member, this); field.abi_field = abi_field; fields.Add(name, field); break; case "implements": ParseImplements(member); break; case "constructor": ctors.Add(new Ctor(member, this)); break; case "constant": name = member.GetAttribute("name"); constants.Add(name, new Constant(member)); break; default: break; } } }
public ICollection<Helper.Point> Star( Helper.Point posIni, Helper.Point posFinal, out int totalCost) { var heapBorder = new Heap<Elem>(); // Console.WriteLine("cheguei no astar"); List<Elem> explored = new List<Elem>(); /* Array to verify if a position was explored */ var hasExpl = new bool[qtdNodes,qtdNodes]; var inBorder = new bool[qtdNodes,qtdNodes]; hasExpl.Initialize(); inBorder.Initialize(); Elem father = new Elem(0, posIni); heapBorder.HeapAdd( h(posIni,posFinal), father ); while (heapBorder.HeapSize() > 0 ) { father = heapBorder.HeapExtractMin().Item3 ; inBorder[father.pos.x, father.pos.y] = false; if( father.pos.Equals(posFinal) ) break; explored.Insert(0, father); hasExpl[father.pos.x, father.pos.y] = true; foreach (var child in father.pos.Neighborhood( posFinal) ) { int accChild = 0; accChild = father.accCost + 1; if (hasExpl[child.x, child.y] && accChild >= father.accCost) continue; if (inBorder[child.x, child.y] == false || accChild < father.accCost) { heapBorder.HeapAdd(h(child, posFinal) + accChild, new Elem(accChild, child, father.pos)); inBorder[child.x, child.y] = true; } } } var pathReturn = new List<Helper.Point>(); pathReturn.Insert(0, father.pos ); totalCost = father.accCost; if (!father.parent.HasValue) return pathReturn; var currParent = father.parent.Value ; for (int i = 0 , j = 1; i < explored.Count; i++) { if (explored[i].pos.Equals(currParent) ) { pathReturn.Insert(j,explored[i].pos); j++; currParent = explored[i].parent.HasValue ? explored[i].parent.Value : posIni ; //Debug.WriteLine("custo "+explored[i].accCost); } } pathReturn.Reverse(); return pathReturn.Skip(1).ToList(); }
public Elem inElem(Elem e, Vector2 c){ float limit = Field.tile*CityPicker.ratio; float xx = (e.p.y - 1) * limit; float yy = (e.p.x - 1) * limit; if (c.x >= xx - limit / 2f && c.x <= xx + limit / 2f && c.y >= yy - limit / 2f && c.y <= yy + limit / 2f) return e; return null; }
public void ExportBinary(Database DB, int[] nDOF_reduction, double[] F, int inc, string path, string type) { Stopwatch sw = new Stopwatch(); sw.Start(); Console.Write(" Export to C++ Linear Solver: "); // Create output in console // Global Stiffness Matrix Initialization int nFixDOF = nDOF_reduction.Where(x => x == -1).Count(); Dictionary <Tuple <int, int>, double> K = new Dictionary <Tuple <int, int>, double>(); // Assembly loop Parallel.ForEach(DB.ElemLib.Values, Elem => { MatrixST k = new MatrixST(3 * Elem.NList.Count, 3 * Elem.NList.Count); if (type == "Initial") { k = Elem.K_Initial(inc, DB); } if (type == "Tangent") { k = Elem.K_Tangent(inc, DB); } // Assembly to Global Stiffness Matrix for (int i = 0; i < Elem.NList.Count; i++) { for (int m = 0; m < 3; m++) { for (int j = 0; j < Elem.NList.Count; j++) { for (int n = 0; n < 3; n++) { int row = DB.NodeLib[Elem.NList[i]].DOF[m]; int col = DB.NodeLib[Elem.NList[j]].DOF[n]; // Only Upper Left triangle is needed if (col >= row) { // K matrix with Esential BC included if (nDOF_reduction[row] != -1) { if (nDOF_reduction[col] != -1) { lock (K) { Tuple <int, int> key = new Tuple <int, int>(row - nDOF_reduction[row], col - nDOF_reduction[col]); if (K.ContainsKey(key)) { K[key] += k.GetFast(i * 3 + m, j * 3 + n); } else { K.Add(key, k.GetFast(i * 3 + m, j * 3 + n)); } } } } } } } } } ; }); // Write binary K matrix using (BinaryWriter b = new BinaryWriter(File.Open(path + @"\K.bin", FileMode.Create))) { foreach (KeyValuePair <Tuple <int, int>, double> i in K) { b.Write(i.Key.Item1); b.Write(i.Key.Item2); b.Write(i.Value); } } // Write binary F vector using (BinaryWriter b = new BinaryWriter(File.Open(path + @"\F.bin", FileMode.Create))) { foreach (double i in F) { b.Write(i); } } //using (StreamWriter b = new StreamWriter(File.Open(path + @"\STAN_KMatrix.txt", FileMode.Create))) //{ // foreach (KeyValuePair<Tuple<int, int>, double> i in K) // { // b.Write(i.Key.Item1); b.Write(" "); b.Write(i.Key.Item2); b.Write(" "); b.Write(i.Value); b.Write("\n"); // } //} sw.Stop(); Console.WriteLine(" Done in " + sw.Elapsed.TotalSeconds.ToString("F2", CultureInfo.InvariantCulture) + "s"); }
public Vector2 change(Vector2 c, Elem e){ float limit = Field.tile*CityPicker.ratio; float xx = (e.p.y - 1) * limit; float yy = (e.p.x - 1) * limit; Vector2 v = new Vector2 (c.x,c.y); if (v.x < xx - limit / 2f) v.x = xx - limit / 2f; else if (v.x > xx + limit / 2f) v.x = xx + limit / 2f; if (v.y < yy- limit / 2f) v.y = yy - limit / 2f; else if (v.y > yy + limit / 2f) v.y = yy + limit / 2f; return v; }
public Box1(Elem e1, Elem e2) { this.elem1 = e1; this.elem2 = e2; }
/// <inheritdoc/> public bool Equals(Elem x, Elem y) => x.alignment == y.alignment && chunkComparer.Equals(x.chunk, y.chunk);
protected override void GenCtors(GenerationInfo gen_info) { if (!Elem.HasAttribute("parent")) { return; } string defaultconstructoraccess = Elem.HasAttribute("defaultconstructoraccess") ? Elem.GetAttribute("defaultconstructoraccess") : "public"; gen_info.Writer.WriteLine("\t\t" + defaultconstructoraccess + " " + Name + " (IntPtr raw) : base(raw) {}"); if (ctors.Count == 0 && !DisableVoidCtor) { gen_info.Writer.WriteLine(); gen_info.Writer.WriteLine("\t\tprotected " + Name + "() : base(IntPtr.Zero)"); gen_info.Writer.WriteLine("\t\t{"); gen_info.Writer.WriteLine("\t\t\tCreateNativeObject (new string [0], new GLib.Value [0]);"); gen_info.Writer.WriteLine("\t\t}"); } gen_info.Writer.WriteLine(); base.GenCtors(gen_info); }
/// <inheritdoc/> public int GetHashCode(Elem obj) => (int)obj.alignment + chunkComparer.GetHashCode(obj.chunk);
public OwnList() { first = null; }
public override void Generate(GenerationInfo gen_info) { gen_info.CurrentType = QualifiedName; StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name, NS); sw.WriteLine("namespace " + NS + " {"); sw.WriteLine(); sw.WriteLine("\tusing System;"); sw.WriteLine("\tusing System.Collections;"); sw.WriteLine("\tusing System.Collections.Generic;"); sw.WriteLine("\tusing System.Runtime.InteropServices;"); sw.WriteLine(); sw.WriteLine("#region Autogenerated code"); SymbolTable table = SymbolTable.Table; Method ref_, unref, dispose, set_gvalue; GetSpecialMethods(out ref_, out unref, out dispose, out set_gvalue); if (IsDeprecated) { sw.WriteLine("\t[Obsolete]"); } sw.Write("\t{0} partial {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : String.Empty); string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); if (cs_parent != "") { sw.Write(" : " + cs_parent); } else { sw.Write(" : GLib.Opaque"); } foreach (string iface in managed_interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + iface); } sw.WriteLine(" {"); sw.WriteLine(); GenConstants(gen_info); GenFields(gen_info); GenMethods(gen_info, null, null); GenCtors(gen_info); if (ref_ != null) { ref_.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Ref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (!Owned) {"); sw.WriteLine("\t\t\t\t" + ref_.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = true;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (ref_.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); if (ref_.ReturnType == "void") { sw.WriteLine("\t\tpublic void Ref () {}"); } else { sw.WriteLine("\t\tpublic " + Name + " Ref () { return this; }"); } sw.WriteLine(); } } // GtkWidgetPath has both gtk_widget_path_unref and gtk_widget_path_free // If this happens add only one and prefer unref over free bool disposeUnmanagedFuncAdded = false; if (unref != null) { unref.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Unref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (Owned) {"); sw.WriteLine("\t\t\t\t" + unref.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = false;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); sw.WriteLine("\t\tprotected override Action<IntPtr> DisposeUnmanagedFunc {"); sw.WriteLine("\t\t\tget {"); sw.WriteLine("\t\t\t\treturn " + unref.CName + ";"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); disposeUnmanagedFuncAdded = true; if (unref.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); sw.WriteLine("\t\tpublic void Unref () {}"); sw.WriteLine(); } } if (dispose != null) { dispose.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Free (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t" + dispose.CName + " (raw);"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (!disposeUnmanagedFuncAdded) { sw.WriteLine("\t\tprotected override Action<IntPtr> DisposeUnmanagedFunc {"); sw.WriteLine("\t\t\tget {"); sw.WriteLine("\t\t\t\treturn " + dispose.CName + ";"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); } if (dispose.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now freed automatically\")]"); sw.WriteLine("\t\tpublic void " + dispose.Name + " () {}"); sw.WriteLine(); } } #if false Method copy = Methods ["Copy"] as Method; if (copy != null && copy.Parameters.Count == 0) { sw.WriteLine("\t\tprotected override GLib.Opaque Copy (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));"); sw.WriteLine("\t\t\tresult.Owned = true;"); sw.WriteLine("\t\t\treturn result;"); sw.WriteLine("\t\t}"); sw.WriteLine(); } #endif if (set_gvalue != null) { sw.WriteLine("\t\t[DllImport(\"{0}\", CallingConvention = CallingConvention.Cdecl)]", LibraryName); sw.WriteLine("\t\tstatic extern void {0}(ref GLib.Value val, IntPtr obj);", set_gvalue.CName); sw.WriteLine(); sw.WriteLine("\t\tpublic void SetGValue (ref GLib.Value val)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t{0} (ref val, Handle);", set_gvalue.CName); sw.WriteLine("\t\t}"); sw.WriteLine(); } GenerateStructureABI(gen_info); sw.WriteLine("#endregion"); sw.WriteLine("\t}"); sw.WriteLine("}"); sw.Close(); gen_info.Writer = null; Statistics.OpaqueCount++; }
public override void Generate(GenerationInfo gen_info) { gen_info.CurrentType = Name; StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name); sw.WriteLine("namespace " + NS + " {"); sw.WriteLine(); sw.WriteLine("\tusing System;"); sw.WriteLine("\tusing System.Collections;"); sw.WriteLine("\tusing System.Runtime.InteropServices;"); sw.WriteLine(); sw.WriteLine("#region Autogenerated code"); SymbolTable table = SymbolTable.Table; Method ref_, unref, dispose; GetSpecialMethods(out ref_, out unref, out dispose); if (IsDeprecated) { sw.WriteLine("\t[Obsolete]"); } GenerateAttribute(sw); sw.Write("\t{0} class " + Name, IsInternal ? "internal" : "public"); string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); if (cs_parent != "") { sw.Write(" : " + cs_parent); } else { sw.Write(" : GLib.Opaque"); } sw.WriteLine(" {"); sw.WriteLine(); GenFields(gen_info); GenMethods(gen_info, null, null); GenCtors(gen_info); if (ref_ != null) { ref_.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Ref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (!Owned) {"); sw.WriteLine("\t\t\t\t" + ref_.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = true;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (ref_.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); if (ref_.ReturnType == "void") { sw.WriteLine("\t\tpublic void Ref () {}"); } else { sw.WriteLine("\t\tpublic " + Name + " Ref () { return this; }"); } sw.WriteLine(); } } if (unref != null) { unref.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Unref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (Owned) {"); sw.WriteLine("\t\t\t\t" + unref.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = false;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (unref.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); sw.WriteLine("\t\tpublic void Unref () {}"); sw.WriteLine(); } } if (dispose != null) { dispose.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Free (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t" + dispose.CName + " (raw);"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (dispose.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now freed automatically\")]"); sw.WriteLine("\t\tpublic void " + dispose.Name + " () {}"); sw.WriteLine(); } } #if false Method copy = Methods ["Copy"] as Method; if (copy != null && copy.Parameters.Count == 0) { sw.WriteLine("\t\tprotected override GLib.Opaque Copy (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));"); sw.WriteLine("\t\t\tresult.Owned = true;"); sw.WriteLine("\t\t\treturn result;"); sw.WriteLine("\t\t}"); sw.WriteLine(); } #endif sw.WriteLine("#endregion"); AppendCustom(sw, gen_info.CustomDir); sw.WriteLine("\t}"); var parentGType = GetParentWithGType(this); if (parentGType == this) { var method = parentGType.GetMethod("GetType") ?? parentGType.GetMethod("GetGType"); AttributeHelper.Gen(sw, Name, LibraryName, method.CName); } sw.WriteLine("}"); sw.Close(); gen_info.Writer = null; Statistics.OpaqueCount++; }
public override void OnEnd() { Elem.Remove(); base.OnEnd(); }
private void ctrlElemGroup_ObjectChanged(object sender, ObjectChangedEventArgs e) { // установка признака изменения конфигурации Modified = true; // отображение изменений группы элементов в дереве TreeUpdateTypes treeUpdateTypes = (TreeUpdateTypes)e.ChangeArgument; if (treeUpdateTypes.HasFlag(TreeUpdateTypes.CurrentNode)) { UpdateElemGroupNode(); } if (treeUpdateTypes.HasFlag(TreeUpdateTypes.ChildNodes)) { UpdateElemNodes(); } if (treeUpdateTypes.HasFlag(TreeUpdateTypes.UpdateSignals)) { treeView.BeginUpdate(); int oldElemCnt = selNode.Nodes.Count; int newElemCnt = selElemGroup.Elems.Count; if (oldElemCnt < newElemCnt) { // добавление узлов дерева для новых элементов ushort elemAddr = selElemGroup.Address; for (int elemInd = 0; elemInd < newElemCnt; elemInd++) { Elem elem = selElemGroup.Elems[elemInd]; if (elemInd >= oldElemCnt) { ElemInfo elemInfo = new ElemInfo() { Elem = elem, ElemGroup = selElemGroup, Settings = template.Sett, Address = elemAddr }; selNode.Nodes.Add(NewElemNode(elemInfo)); } elemAddr += (ushort)elem.Quantity; } } else if (oldElemCnt > newElemCnt) { // удаление лишних узлов дерева for (int i = newElemCnt; i < oldElemCnt; i++) { selNode.Nodes.RemoveAt(newElemCnt); } } UpdateSignals(selNode); treeView.EndUpdate(); } }
/// <summary> /// Удаление списка /// </summary> public override void Clear() { Count = 0; first = null; }
public override void Generate(GenerationInfo gen_info) { gen_info.CurrentType = QualifiedName; StreamWriter sw = gen_info.Writer = gen_info.OpenStream(Name, NS); sw.WriteLine("namespace " + NS + " {"); sw.WriteLine(); sw.WriteLine("\tusing System;"); sw.WriteLine("\tusing System.Collections;"); sw.WriteLine("\tusing System.Collections.Generic;"); sw.WriteLine("\tusing System.Runtime.InteropServices;"); sw.WriteLine(); sw.WriteLine("#region Autogenerated code"); SymbolTable table = SymbolTable.Table; Method ref_, unref, dispose, set_gvalue; GetSpecialMethods(out ref_, out unref, out dispose, out set_gvalue); if (IsDeprecated) { sw.WriteLine("\t[Obsolete]"); } sw.Write("\t{0} partial {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : String.Empty); string cs_parent = table.GetCSType(Elem.GetAttribute("parent")); if (cs_parent != "") { sw.Write(" : " + cs_parent); } else { sw.Write(" : GLib.Opaque"); } foreach (string iface in managed_interfaces) { if (Parent != null && Parent.Implements(iface)) { continue; } sw.Write(", " + iface); } sw.WriteLine(" {"); sw.WriteLine(); GenConstants(gen_info); GenFields(gen_info); GenMethods(gen_info, null, null); GenCtors(gen_info); if (ref_ != null) { ref_.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Ref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (!Owned) {"); sw.WriteLine("\t\t\t\t" + ref_.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = true;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (ref_.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); if (ref_.ReturnType == "void") { sw.WriteLine("\t\tpublic void Ref () {}"); } else { sw.WriteLine("\t\tpublic " + Name + " Ref () { return this; }"); } sw.WriteLine(); } } bool finalizer_needed = false; if (unref != null) { unref.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Unref (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (Owned) {"); sw.WriteLine("\t\t\t\t" + unref.CName + " (raw);"); sw.WriteLine("\t\t\t\tOwned = false;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (unref.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now refcounted automatically\")]"); sw.WriteLine("\t\tpublic void Unref () {}"); sw.WriteLine(); } finalizer_needed = true; } if (dispose != null) { dispose.GenerateImport(sw); sw.WriteLine("\t\tprotected override void Free (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t" + dispose.CName + " (raw);"); sw.WriteLine("\t\t}"); sw.WriteLine(); if (dispose.IsDeprecated) { sw.WriteLine("\t\t[Obsolete(\"" + QualifiedName + " is now freed automatically\")]"); sw.WriteLine("\t\tpublic void " + dispose.Name + " () {}"); sw.WriteLine(); } finalizer_needed = true; } if (finalizer_needed) { sw.WriteLine("\t\tclass FinalizerInfo {"); sw.WriteLine("\t\t\tIntPtr handle;"); sw.WriteLine(); sw.WriteLine("\t\t\tpublic FinalizerInfo (IntPtr handle)"); sw.WriteLine("\t\t\t{"); sw.WriteLine("\t\t\t\tthis.handle = handle;"); sw.WriteLine("\t\t\t}"); sw.WriteLine(); sw.WriteLine("\t\t\tpublic bool Handler ()"); sw.WriteLine("\t\t\t{"); if (dispose != null) { sw.WriteLine("\t\t\t\t{0} (handle);", dispose.CName); } else if (unref != null) { sw.WriteLine("\t\t\t\t{0} (handle);", unref.CName); } sw.WriteLine("\t\t\t\treturn false;"); sw.WriteLine("\t\t\t}"); sw.WriteLine("\t\t}"); sw.WriteLine(); sw.WriteLine("\t\t~{0} ()", Name); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tif (!Owned)"); sw.WriteLine("\t\t\t\treturn;"); sw.WriteLine("\t\t\tFinalizerInfo info = new FinalizerInfo (Handle);"); sw.WriteLine("\t\t\tGLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));"); sw.WriteLine("\t\t}"); sw.WriteLine(); } #if false Method copy = Methods ["Copy"] as Method; if (copy != null && copy.Parameters.Count == 0) { sw.WriteLine("\t\tprotected override GLib.Opaque Copy (IntPtr raw)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));"); sw.WriteLine("\t\t\tresult.Owned = true;"); sw.WriteLine("\t\t\treturn result;"); sw.WriteLine("\t\t}"); sw.WriteLine(); } #endif if (set_gvalue != null) { sw.WriteLine("\t\tdelegate IntPtr d_{0}(ref GLib.Value val, IntPtr obj);", set_gvalue.CName); sw.WriteLine("\t\tstatic d_{0} {0} = FuncLoader.LoadFunction<d_{0}>(FuncLoader.GetProcAddress(GLibrary.Load(\"{1}\"), \"{0}\"));", set_gvalue.CName, LibraryName); sw.WriteLine(); sw.WriteLine("\t\tpublic void SetGValue (ref GLib.Value val)"); sw.WriteLine("\t\t{"); sw.WriteLine("\t\t\t{0} (ref val, Handle);", set_gvalue.CName); sw.WriteLine("\t\t}"); sw.WriteLine(); } GenerateStructureABI(gen_info); sw.WriteLine("#endregion"); sw.WriteLine("\t}"); sw.WriteLine("}"); sw.Close(); gen_info.Writer = null; Statistics.OpaqueCount++; }
public void Compare(Stream stream1, Stream stream2, IXmlCompareHandler callback) { var loadOptions = LoadOptions.SetBaseUri | LoadOptions.SetLineInfo; const int leftId = 1; const int rightId = 2; var doc1 = XDocument.Load(stream1, loadOptions); var doc2 = XDocument.Load(stream2, loadOptions); var nsm1 = new XmlNamespaceManagerEnhanced(doc1); var nsm2 = new XmlNamespaceManagerEnhanced(doc2); var doc1Descendants = doc1.Descendants() .Where(a => a != doc1.Root) .Select(a => new { Source = leftId, Element = a }); var doc2Descendants = doc2.Descendants() .Where(a => a != doc2.Root) .Select(a => new { Source = rightId, Element = a }); var doc1DescendantsDiff = doc1Descendants .Where(a => !doc2Descendants.Any(a2 => ElementsAreEqual(a2.Element, a.Element))) .Select(a => Elem.Create(a.Element, a.Source)) .ToList(); var doc2DescendantsDiff = doc2Descendants .Where(a => !doc1Descendants.Any(a1 => ElementsAreEqual(a1.Element, a.Element))) .Select(a => Elem.Create(a.Element, a.Source)) .ToList(); var itemsToProcess = doc1DescendantsDiff .Concat(doc2DescendantsDiff) .OrderBy(a => a.LineNumber).ThenBy(a => a.Source) .ToList(); var xPathsAdded = new List <string>(); var xPathsRemoved = new List <string>(); var xPathsChanged = new List <string>(); var additions = new List <ElementAddedEventArgs>(); var changes = new List <ElementChangedEventArgs>(); var removals = new List <ElementRemovedEventArgs>(); foreach (var item in itemsToProcess) { if (xPathsAdded.Any(a => a == item.XPath) || xPathsChanged.Any(a => a == item.XPath) || xPathsRemoved.Any(a => a == item.XPath) ) { continue; } //Console.WriteLine(item.XPath); var node1 = item.Source != leftId ? default(XElement) : item.Element; var node2 = item.Source != rightId ? default(XElement) : item.Element; // now get item from other side switch (item.Source) { case leftId: { // get node2 var e = itemsToProcess.FirstOrDefault(a => a.Source == rightId && a.XPath == item.XPath); if (e != null) { node2 = e.Element; } break; } case rightId: { // get node1 var e = itemsToProcess.FirstOrDefault(a => a.Source == leftId && a.XPath == item.XPath); if (e != null) { node1 = e.Element; } break; } default: { throw new Exception("Invalid Source " + item + " for item : " + item.XPath); } } if (node1 != null && node2 != null) { CompareAttributes(node1, node2, callback); // if there are sub-elements, those will be handled separately if (node1.HasElements || node2.HasElements) { continue; } } if (node1 == null && node2 != null) { //added if (xPathsAdded.Any(a => item.XPath.StartsWith(a))) { // if the node's parent exists in the list of items, // there is no need to call the callback continue; } xPathsAdded.Add(item.XPath); additions.Add(new ElementAddedEventArgs(item.XPath, node2, node2.LineNumber())); continue; } if (node1 != null && node2 == null) { //removed if (xPathsRemoved.Any(a => item.XPath.StartsWith(a))) { // if the node's parent exists in the list of items, // there is no need to call the callback continue; } xPathsRemoved.Add(item.XPath); removals.Add(new ElementRemovedEventArgs(item.XPath, node1, node1.LineNumber())); continue; } if (node1 != null && node2 != null) { //might have changed //compare values if (xPathsChanged.Any(a => item.XPath.StartsWith(a))) { // if the node's parent exists in the list of items, // there is no need to call the callback continue; } xPathsChanged.Add(item.XPath); var val1 = node1.Value; var val2 = node2.Value; if (string.Equals(val1, val2)) { continue; } changes.Add(new ElementChangedEventArgs(item.XPath, node1, node1.LineNumber(), node2, node2.LineNumber())); continue; } throw new Exception("Invalid scenario while comparing elements: " + item.XPath); } foreach (var item in removals) { callback.ElementRemoved(item); } foreach (var item in additions) { callback.ElementAdded(item); } foreach (var item in changes) { callback.ElementChanged(item); } }
public void RemoveElem(Elem e) { mElems.Remove(e); mDic.Remove(e.szName); }
public void SendMessage(ServiceMessage msg) { if (!Dispatcher.CheckAccess()) { Dispatcher.BeginInvoke(new IncomingMessage(SendMessage), msg); return; } switch((ProjectMessages)msg.Type) { case ProjectMessages.GetProjectList: { foreach (var pInfo in (List<ProjectInfo>) msg.Message[0]) { prjList.Items.Add(pInfo.Name); } break; } case ProjectMessages.GetStructure: { var structure = (ProjectStructure)msg.Message[0]; var elem = Elem.Build(structure); Structure = elem; project.ItemsSource = new List<Elem>() {elem}; return; } } return; }