System.Xml.XmlWriter.AddConformanceWrapper C# (CSharp) Method

AddConformanceWrapper() private static method

private static AddConformanceWrapper ( XmlWriter baseWriter, XmlWriterSettings baseWriterSettings, XmlWriterSettings settings ) : XmlWriter
baseWriter XmlWriter
baseWriterSettings XmlWriterSettings
settings XmlWriterSettings
return XmlWriter
        private static XmlWriter AddConformanceWrapper(XmlWriter baseWriter, XmlWriterSettings baseWriterSettings, XmlWriterSettings settings) {
            ConformanceLevel confLevel = ConformanceLevel.Auto;
            bool checkValues = false;
            bool checkNames = false;
            bool replaceNewLines = false;
            bool needWrap = false;

            if (baseWriterSettings == null) {
                // assume the V1 writer already do all conformance checking; 
                // wrap only if NewLineHandling == Replace or CheckCharacters is true
                if (settings.NewLineHandling == NewLineHandling.Replace) {
                    replaceNewLines = true;
                    needWrap = true;
                }
                if (settings.CheckCharacters) {
                    checkValues = true;
                    needWrap = true;
                }
            }
            else {
                if (settings.ConformanceLevel != baseWriterSettings.ConformanceLevel) {
                    confLevel = settings.ConformanceLevel;
                    needWrap = true;
                }
                if (settings.CheckCharacters && !baseWriterSettings.CheckCharacters) {
                    checkValues = true;
                    checkNames = confLevel == ConformanceLevel.Auto;
                    needWrap = true;
                }
                if (settings.NewLineHandling == NewLineHandling.Replace &&
                     baseWriterSettings.NewLineHandling == NewLineHandling.None) {
                    replaceNewLines = true;
                    needWrap = true;
                }
            }

            if (needWrap) {
                XmlWriter writer = baseWriter;
                if (confLevel != ConformanceLevel.Auto) {
                    writer = new XmlWellFormedWriter(writer, settings);
                }
                if (checkValues || replaceNewLines) {
                    writer = new XmlCharCheckingWriter(writer, checkValues, checkNames, replaceNewLines, settings.NewLineChars);
                }
                return writer;
            }
            else {
                return baseWriter;
            }
        }
    }