Beispiel #1
0
        /// <summary>
        /// sorts atomArray.
        /// currently only works for array type syntax.
        /// </summary>
        /// <param name="sort"></param>
        public void Sort(CMLFormula.SortType sort)
        {
            var elems  = ElementType;
            var counts = Count;
            var sortS  = new List <string>();

            {
                for (var i = 0; i < elems.Count; i++)
                {
                    sortS.Add($"{elems[i]} {counts[i]}");
                }
            }
            sortS.Sort();
            if (sort == CMLFormula.SortType.AlphabeticElements)
            {
                ; // already done
            }
            else if (sort == CMLFormula.SortType.CHFirst)
            {
                var temp = new List <string>();
                foreach (var s in sortS)
                {
                    if (s.StartsWith("C ", StringComparison.Ordinal))
                    {
                        temp.Add(s);
                    }
                }
                foreach (var s in sortS)
                {
                    if (s.StartsWith("H ", StringComparison.Ordinal))
                    {
                        temp.Add(s);
                    }
                }
                foreach (var s in sortS)
                {
                    if (!(s.StartsWith("C ", StringComparison.Ordinal) || s.StartsWith("H ", StringComparison.Ordinal)))
                    {
                        temp.Add(s);
                    }
                }
                sortS = temp;
            }
            var el = new string[sortS.Count];
            var cl = new double[sortS.Count];

            {
                for (int i = 0; i < sortS.Count; i++)
                {
                    var ss = sortS[i].Split(' ');
                    el[i] = ss[0];
                    cl[i] = double.Parse(ss[1], NumberFormatInfo.InvariantInfo);
                }
            }
            this.ElementType = el;
            this.Count       = cl;
        }
Beispiel #2
0
 public static string Name(this CMLFormula.SortType value)
 => namesSorts[(int)value];