Exemplo n.º 1
0
 /// <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();
 }
Exemplo n.º 2
0
 /// <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;
 }
Exemplo n.º 4
0
 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());
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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");
        }
Exemplo n.º 7
0
            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);
            }
Exemplo n.º 8
0
    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);
    }
Exemplo n.º 9
0
    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;
        }
    }
Exemplo n.º 11
0
	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);
		}
	}
Exemplo n.º 13
0
 public void AddElem(Elem e)
 {
     mElems.Add(e);
     mDic[e.szName] = e;
 }
Exemplo n.º 14
0
            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);
            }
Exemplo n.º 15
0
        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);
    }
Exemplo n.º 17
0
 public Elem(T value)
 {
     this.prev  = null;
     this.next  = null;
     this.value = value;
 }
Exemplo n.º 18
0
        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++;
        }
Exemplo n.º 19
0
 public Holder(Elem <RecordT> itms)
 {
     _itms = itms;
 }
Exemplo n.º 20
0
        // -------------------- 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);
        }
Exemplo n.º 21
0
            /// <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;
                }
            }
Exemplo n.º 22
0
	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);
		}
	}
Exemplo n.º 23
0
 /// <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;
 }
Exemplo n.º 24
0
        /// <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();
        }
Exemplo n.º 25
0
        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;
                }
            }
        }
Exemplo n.º 26
0
        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;
	}
Exemplo n.º 28
0
        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;
		
	}
Exemplo n.º 30
0
 public Box1(Elem e1, Elem e2)
 {
     this.elem1 = e1;
     this.elem2 = e2;
 }
Exemplo n.º 31
0
 /// <inheritdoc/>
 public bool Equals(Elem x, Elem y) =>
 x.alignment == y.alignment &&
 chunkComparer.Equals(x.chunk, y.chunk);
Exemplo n.º 32
0
        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);
        }
Exemplo n.º 33
0
 /// <inheritdoc/>
 public int GetHashCode(Elem obj) => (int)obj.alignment + chunkComparer.GetHashCode(obj.chunk);
Exemplo n.º 34
0
 public OwnList()
 {
     first = null;
 }
Exemplo n.º 35
0
        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++;
        }
Exemplo n.º 37
0
 public override void OnEnd()
 {
     Elem.Remove();
     base.OnEnd();
 }
Exemplo n.º 38
0
        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();
            }
        }
Exemplo n.º 39
0
 /// <summary>
 /// Удаление списка
 /// </summary>
 public override void Clear()
 {
     Count = 0;
     first = null;
 }
Exemplo n.º 40
0
        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++;
        }
Exemplo n.º 41
0
        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);
            }
        }
Exemplo n.º 42
0
 public void RemoveElem(Elem e)
 {
     mElems.Remove(e);
     mDic.Remove(e.szName);
 }
Exemplo n.º 43
0
        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;
        }