using System; 
 | 
using System.Collections.Generic; 
 | 
using System.IO; 
 | 
using System.Linq; 
 | 
using System.Xml; 
 | 
using System.Xml.Linq; 
 | 
using System.Xml.XPath; 
 | 
  
 | 
#if UNITY_XCODE_API_BUILD 
 | 
namespace UnityEditor.iOS.Xcode 
 | 
#else 
 | 
namespace UnityEditor.iOS.Xcode.Custom 
 | 
#endif 
 | 
{ 
 | 
    internal class XcScheme 
 | 
    { 
 | 
        XDocument m_Doc; 
 | 
  
 | 
        // Returns the current build configuration. Returns null if it is not set. 
 | 
        public string GetBuildConfiguration() 
 | 
        { 
 | 
            var el = m_Doc.Root.XPathSelectElement("./LaunchAction"); 
 | 
            if (el == null) 
 | 
                throw new Exception("The xcscheme document does not contain build configuration setting"); 
 | 
            var attr = el.Attribute("buildConfiguration"); 
 | 
            if (attr == null) 
 | 
                return null; 
 | 
            return attr.Value; 
 | 
        } 
 | 
  
 | 
        public void SetBuildConfiguration(string buildConfigName) 
 | 
        { 
 | 
            var el = m_Doc.Root.XPathSelectElement("./LaunchAction"); 
 | 
            if (el == null) 
 | 
                throw new Exception("The xcscheme document does not contain build configuration setting"); 
 | 
            el.SetAttributeValue("buildConfiguration", buildConfigName); 
 | 
        } 
 | 
  
 | 
        public void ReadFromFile(string path) 
 | 
        { 
 | 
            ReadFromString(File.ReadAllText(path)); 
 | 
        } 
 | 
  
 | 
        public void ReadFromStream(TextReader tr) 
 | 
        { 
 | 
            ReadFromString(tr.ReadToEnd()); 
 | 
        } 
 | 
  
 | 
        public void ReadFromString(string text) 
 | 
        { 
 | 
            m_Doc = PlistDocument.ParseXmlNoDtd(text); 
 | 
        } 
 | 
  
 | 
        public void WriteToFile(string path) 
 | 
        { 
 | 
            System.Text.Encoding utf8WithoutBom = new System.Text.UTF8Encoding(false); 
 | 
            File.WriteAllText(path, WriteToString(), utf8WithoutBom); 
 | 
        } 
 | 
  
 | 
        public void WriteToStream(TextWriter tw) 
 | 
        { 
 | 
            tw.Write(WriteToString()); 
 | 
        } 
 | 
  
 | 
        public string WriteToString() 
 | 
        { 
 | 
            return PlistDocument.CleanDtdToString(m_Doc, null).Replace("\r\n", "\n"); 
 | 
        }         
 | 
    } 
 | 
  
 | 
} // namespace UnityEditor.iOS.XCode 
 |