Beispiel #1
0
            public static ValenceCheck Parse(string line, int nElectrons)
            {
                string[] vs = line.Split(',');
                if (vs.Length == 1)
                {
                    if (string.Equals(vs[0], "n/a", StringComparison.Ordinal))
                    {
                        return(NoValenceCheck.Instance);
                    }
                    else if (vs[0][0] == '(')
                    {
                        return(new FixedValence(int.Parse(vs[0].Substring(1, vs[0].Length - 2), NumberFormatInfo.InvariantInfo)));
                    }
                    else if (vs[0][0] == '[')
                    {
                        return(new NeutralValence(int.Parse(vs[0].Substring(1, vs[0].Length - 2), NumberFormatInfo.InvariantInfo)));
                    }
                    else
                    {
                        return(new ChargeAdjustedValence(int.Parse(vs[0], NumberFormatInfo.InvariantInfo), nElectrons));
                    }
                }
                ValenceCheck[] valences = new ValenceCheck[vs.Length];
                for (int i = 0; i < vs.Length; i++)
                {
                    valences[i] = Parse(vs[i], nElectrons);
                }

                return(new MultiValenceCheck(valences));
            }
Beispiel #2
0
        static KeyValuePair <string, ElementCheck> Load(string line)
        {
            var data         = Strings.Tokenize(line);
            var symbol       = data[0];
            var electrons    = int.Parse(data[3], NumberFormatInfo.InvariantInfo);
            var valenceCheck = ValenceCheck.Parse(data[1], electrons);
            var chargeCheck  = ChargeCheck.Parse(data[2]);

            return(new KeyValuePair <string, ElementCheck>(symbol, new ElementCheck(valenceCheck, chargeCheck)));
        }
Beispiel #3
0
 public ElementCheck(ValenceCheck valenceCheck, ChargeCheck chargeCheck)
 {
     this.valenceCheck = valenceCheck;
     this.chargeCheck  = chargeCheck;
 }