コード例 #1
0
        /// <summary>
        /// Creates Xml Element from strings
        /// </summary>
        /// <param name="text">The strings</param>
        /// <param name="bRow">The begin row</param>
        /// <param name="bColumn">The begin column</param>
        /// <param name="eRow">The end row</param>
        /// <param name="eColumn">The end column</param>
        /// <returns>Created Xml Element</returns>
        protected override XElement[] CreateElements(IList <string> text, int bRow, int bColumn, int eRow, int eColumn)
        {
            int bb = bRow;
            int bc = bColumn;
            int brf;
            int bcf;
            IXmlElementCreator creator = this;
            List <XElement>    l       = new List <XElement>();

            while (true)
            {
                try
                {
                    FindNext(text, bb, bc, out brf, out bcf);
                    XElement e = creator.Create(text, bb, bc, brf, bcf);
                    if (e == null)
                    {
                        break;
                    }
                    l.Add(e);
                    StaticExtensionXmlParserLibrary.FindNext(text, openString, true, brf, bcf, out bb, out bc);
                }
                catch (Exception ex)
                {
                    ex.ShowError(10);
                    break;
                }
            }
            return(l.ToArray());
        }
コード例 #2
0
        /// <summary>
        /// Creates Xml Element from strings
        /// </summary>
        /// <param name="text">The strings</param>
        /// <param name="bRow">The begin row</param>
        /// <param name="bColumn">The begin column</param>
        /// <param name="eRow">The end row</param>
        /// <param name="eColumn">The end column</param>
        /// <returns>Created Xml Element</returns>
        protected override XElement CreateInternal(IList <string> text, int bRow, int bColumn, int eRow, int eColumn)
        {
            List <int> l = null;

            if (dic.ContainsKey(bRow))
            {
                l = dic[bRow];
            }
            else
            {
                l         = new List <int>();
                dic[bRow] = l;
            }
            if (l.Contains(eRow))
            {
                return(null);
            }
            l.Add(eRow);
            int      bbRow    = bRow;
            int      bbColumn = bColumn;
            int      eeRow;
            int      eeColumn;
            XElement element = creator.Create(text, bRow, bColumn, eRow, eColumn);

            if (element == null)
            {
                return(null);
            }
            while (true)
            {
                string s = StaticExtensionXmlParserLibrary.FindNext(text, openString, false, bbRow, bbColumn, out eeRow, out eeColumn);
                if (s == null)
                {
                    return(element);
                }
                if (eeRow >= eRow)
                {
                    break;
                }
                bbRow    = eeRow;
                bbColumn = eeColumn;
                FindNextClose(text, openString, closeString, true, bbRow, bbColumn, out eeRow, out eeColumn);
                XElement e = This.Create(text, bbRow, bbColumn, eeRow, eeColumn);
                if (e != null)
                {
                    element.Add(e);
                }
                bbRow     = eeRow;
                bbColumn  = eeColumn;
                endRow    = eeRow;
                endColumn = eeColumn;
            }
            return(element);
        }
コード例 #3
0
        new void Load(string filename)
        {
            try
            {
                List <string> la = StaticExtensionXmlParserLibrary.TransformFile(filename) as List <string>;
                List <string> l  = new List <string>();
                for (int ns = 0; ns < la.Count; ns++)
                {
                    string s = la[ns];
                    int    p = 0;
                    for (int k = ns + 1; k < la.Count; k++)
                    {
                        string ss = la[k];
                        if (ss.Length == 0)
                        {
                            break;
                        }
                        if (ss[0] != '\"')
                        {
                            break;
                        }
                        s = s.Substring(0, s.Length - 1) + ss.Substring(1);
                        ++p;
                    }
                    ns += p;
                    l.Add(s);
                }
                to.Text = l;
                if (ucproxy != null)
                {
                    ucproxy.Fill();
                }

                Perform(() => cont.Interface.Clear());
                UpdateAll();
                saveFileDialog.FileName = filename;
            }
            catch (Exception e)
            {
                WindowsExtensions.ControlExtensions.ShowMessageBoxModal(this, e.Message);
            }
        }
コード例 #4
0
        /// <summary>
        /// Constructor from element
        /// </summary>
        /// <param name="element">The element</param>
        /// <param name="system">Parent system</param>
        /// <param name="creator">Creation interface</param>
        public SimulinkSubsystem(XElement element, SimulinkSubsystem system,
                                 IBlockCodeCreator creator)
            : base(element, system)
        {
            XElement e = null;

            XElement[] children = StaticExtensionXmlParserLibrary.GetChildren(element);
            foreach (XElement child in children)
            {
                if (child.Name.Equals(SimulinkXmlParser.SystemStr))
                {
                    e = child;
                }
            }
            Create(e);
            if (system == null)
            {
                SetArrows(creator);
            }
            CreateConst();
        }
コード例 #5
0
        /// <summary>
        /// Creates document from list of strings
        /// </summary>
        /// <param name="text">List of strings</param>
        /// <returns>The document</returns>
        public static XElement Create(IList <string> text)
        {
            XElement doc = XElement.Parse("<Root/>");

            int nr = text.Count - 1;
            int nc = text[nr].Length;

            --nc;
            int eRow;
            int eColumn;

            SimulinkXmlParser  parser  = new SimulinkXmlParser(doc);
            IXmlElementCreator creator = parser;

            StaticExtensionXmlParserLibrary.FindNext(text, '{', false, 0, 0, out eRow, out eColumn);
            XElement[] elements = parser.Create(text, eRow, eColumn, nr, nc);
            foreach (XElement e in elements)
            {
                doc.Add(e);
            }
            return(parser.doc);
        }
コード例 #6
0
        IList <string> CreateTransfer(Block block, int num)
        {
            List <string> l = new List <string>();
            IAttribute    a = block;

            string[] nom   = StaticExtensionXmlParserLibrary.Parse("[", "]", " ,".ToCharArray(), a["Numerator"]);
            string[] den   = StaticExtensionXmlParserLibrary.Parse("[", "]", " ,".ToCharArray(), a["Denominator"]);
            int      ord   = block.Order;
            string   inp   = GetFirstIn(block);
            int      count = den.Length;

            for (int i = 0; i < count - 2; i++)
            {
                int j = i + ord;
                l.Add(derivation + "[" + j + "] = state[" + (j + 1) + "];");
            }
            string        bn = "block_" + num;
            string        ss = "double " + bn + " = " + inp;
            StringBuilder sb = new StringBuilder(ss);

            for (int i = 0; i < count - 1; i++)
            {
                sb.Append(" - ((" + den[i] + ") * state[" + (ord + i) + "])");
            }
            sb.Append(";");
            l.Add(sb.ToString());
            l.Add(derivation + "[" + (ord + den.Length - 2) + "] = " + bn + ";");
            sb = new StringBuilder(GetFirstOut(block) + " = ");
            for (int i = 0; i < nom.Length; i++)
            {
                sb.Append("+ ((" + nom[i] + ") * state[" + (ord + i) + "])");
            }
            sb.Append(";");
            l.Add(sb.ToString());
            return(l);
        }
コード例 #7
0
        /// <summary>
        /// Creates object from file
        /// </summary>
        /// <param name="filename">Filename</param>
        /// <returns>Created object</returns>
        public static SimulinkDrawing FromFile(string filename)
        {
            XElement doc = SimulinkXmlParser.Create(StaticExtensionXmlParserLibrary.TransformFile(filename));

            return(new SimulinkDrawing(doc));
        }
コード例 #8
0
 /// <summary>
 /// Finds next close string
 /// </summary>
 /// <param name="text">List of strings</param>
 /// <param name="openString">Open string</param>
 /// <param name="closeString">Close string</param>
 /// <param name="beg">The "begin" sign</param>
 /// <param name="bRow">Rebin row</param>
 /// <param name="bColumn">Begin column</param>
 /// <param name="eRow">End row</param>
 /// <param name="eColumn">End column</param>
 protected virtual void FindNextClose(IList <string> text, string openString, string closeString,
                                      bool beg, int bRow, int bColumn, out int eRow, out int eColumn)
 {
     StaticExtensionXmlParserLibrary.FindNextClose(text, openString, closeString, true, bRow, bColumn, out eRow, out eColumn);
 }
コード例 #9
0
 /// <summary>
 /// Gets children of Xml element
 /// </summary>
 /// <param name="element">The element</param>
 /// <returns>The children</returns>
 public static XElement[] GetChildren(XElement element)
 {
     return(StaticExtensionXmlParserLibrary.GetChildren(element));
 }
コード例 #10
0
 /// <summary>
 /// Parses string array from string
 /// </summary>
 /// <param name="s">The string</param>
 /// <returns>The array</returns>
 static public string[] ParseString(string s)
 {
     return(StaticExtensionXmlParserLibrary.Parse("[", "]", " ,".ToCharArray(), s));
 }
コード例 #11
0
 /// <summary>
 /// Parses double array from string
 /// </summary>
 /// <param name="s">The string</param>
 /// <returns>The array</returns>
 public static double[] ParseDouble(string s)
 {
     //IFormatProvider
     return(StaticExtensionXmlParserLibrary.ParseDouble("[", "]", " ,".ToCharArray(), s, System.Globalization.NumberStyles.Float,
                                                        System.Globalization.CultureInfo.InvariantCulture.NumberFormat));
 }
コード例 #12
0
 /// <summary>
 /// Parses int array from string
 /// </summary>
 /// <param name="s">The string</param>
 /// <returns>The array</returns>
 public static int[] ParseInt(string s)
 {
     return(StaticExtensionXmlParserLibrary.ParseInt("[", "]", " ,".ToCharArray(), s));
 }