AcTools.DataFile.LutDataFile.ParseString C# (CSharp) Method

ParseString() protected method

protected ParseString ( string data ) : void
data string
return void
        protected override void ParseString(string data) {
            Clear();
            
            var started = -1;
            var key = double.NaN;
            var malformed = -1;
            var line = 1;

            for (var i = 0; i < data.Length; i++) {
                switch (data[i]) {
                    case '\r':
                        if (i + 1 < data.Length && data[i + 1] == '\n') continue;
                        malformed = line;
                        break;

                    case '|':
                        if (started != -1) {
                            if (!double.IsNaN(key) || !FlexibleParser.TryParseDouble(data.Substring(started, i - started), out key)) {
                                if (malformed == -1) malformed = line;
                                SkipLine(data, ref i, ref line);
                                key = double.NaN;
                            }
                            started = -1;
                        }
                        break;

                    case '\n':
                        Finish(Values, data, i, line, ref key, ref started, ref malformed);
                        line++;
                        break;

                    case '/':
                        if (i + 1 < data.Length && data[i + 1] == '/') goto case ';';
                        goto default;

                    case ';':
                        Finish(Values, data, i, line, ref key, ref started, ref malformed);
                        SkipLine(data, ref i, ref line);
                        break;

                    default:
                        if (started == -1) started = i;
                        break;
                }
            }

            Finish(Values, data, data.Length, line, ref key, ref started, ref malformed);

            if (malformed != -1) {
                ErrorsCatcher?.Catch(this, malformed);
            }
        }