/// <summary> /// Parse the configuration from a string. /// </summary> public bool Parse(string inConfigString, string inBasePath, ref string outError) { mIncludePaths = new List <string>(); mIgnorePaths = new List <string>(); mTypeAliasPrefixes = new List <string>(); mIgnoreHeaderInfos = new List <IncludeChecker.IgnoreHeaderInfo>(); mVerbose = false; try { XmlDocument doc = new XmlDocument(); doc.LoadXml(inConfigString); XPathNavigator nav = doc.CreateNavigator(); XPathNodeIterator iter = nav.Select("/devpal/includechecker/settings/ctags_path"); foreach (XPathNavigator current in iter) { mCtagsPath = current.Value; } iter = nav.Select("/devpal/includechecker/settings/include_path"); AddPathsFromIteratorToList(iter, mIncludePaths, inBasePath); iter = nav.Select("/devpal/includechecker/settings/interface_header"); AddPathsFromIteratorToList(iter, mInterfaceHeaders, inBasePath); iter = nav.Select("/devpal/includechecker/settings/exclude_path"); AddPathsFromIteratorToList(iter, mIgnorePaths, inBasePath); iter = nav.Select("/devpal/includechecker/settings/type_alias_prefix"); foreach (XPathNavigator current in iter) { mTypeAliasPrefixes.Add(current.Value); } iter = nav.Select("/devpal/includechecker/settings/type_alias_suffix"); foreach (XPathNavigator current in iter) { mTypeAliasSuffixes.Add(current.Value); } iter = nav.Select("/devpal/includechecker/settings/verbose"); mVerbose = (iter.Count > 0); iter = nav.Select("/devpal/includechecker/settings/ignore_header"); foreach (XPathNavigator current in iter) { XPathNodeIterator source = current.SelectChildren("source", ""); string source_string = null; if (source.MoveNext()) { source_string = source.Current.Value; } XPathNodeIterator header = current.SelectChildren("header", ""); if (!header.MoveNext()) { outError = "Missing <header> in ignore_header: " + current.InnerXml; return(false); } string header_string = header.Current.Value; IncludeChecker.IgnoreHeaderInfo info = new IncludeChecker.IgnoreHeaderInfo(source_string, header_string); mIgnoreHeaderInfos.Add(info); } return(true); } catch (XmlException e) { outError = e.ToString(); return(false); } }
/// <summary> /// Add a header to be ignored. /// </summary> public void AddIgnoreHeaderInfo(IncludeChecker.IgnoreHeaderInfo inIgnoreHeaderInfo) { mIgnoreHeaderInfos.Add(inIgnoreHeaderInfo); }