internal void RecursiveLoadFromBuffer(KvTextReader kvr) { bool wasQuoted; bool wasConditional; while (true) { // bool bAccepted = true; // get the key name var name = kvr.ReadToken(out wasQuoted, out wasConditional); if (string.IsNullOrEmpty(name)) { throw new Exception("RecursiveLoadFromBuffer: got EOF or empty keyname"); } if (name.StartsWith("}") && !wasQuoted) // top level closed, stop reading break; var dat = new KeyValue(name, null) {Children = new List<KeyValue>()}; Children.Add(dat); // get the value string value = kvr.ReadToken(out wasQuoted, out wasConditional); if (wasConditional && value != null) { // bAccepted = ( value == "[$WIN32]" ); value = kvr.ReadToken(out wasQuoted, out wasConditional); } if (value == null) throw new Exception("RecursiveLoadFromBuffer: got NULL key"); if (value.StartsWith("}") && !wasQuoted) throw new Exception("RecursiveLoadFromBuffer: got } in key"); if (value.StartsWith("{") && !wasQuoted) { dat.RecursiveLoadFromBuffer(kvr); } else { if (wasConditional) { throw new Exception("RecursiveLoadFromBuffer: got conditional between key and value"); } dat.Value = value; // blahconditionalsdontcare } } }