File: FrameworkFork\Microsoft.Xml\Xml\schema\XmlSchemaInfo.cs
Web Access
Project: src\src\dotnet-svcutil\lib\src\dotnet-svcutil-lib.csproj (dotnet-svcutil-lib)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Microsoft.Xml;
using System.Collections;
 
namespace Microsoft.Xml.Schema
{
    using System;
    using Microsoft.Xml;
 
 
    /// <include file='doc\IXmlSchemaInfo.uex' path='docs/doc[@for="IXmlSchemaInfo"]/*' />
    public class XmlSchemaInfo : IXmlSchemaInfo
    {
        private bool _isDefault;
        private bool _isNil;
        private XmlSchemaElement _schemaElement;
        private XmlSchemaAttribute _schemaAttribute;
        private XmlSchemaType _schemaType;
        private XmlSchemaSimpleType _memberType;
        private XmlSchemaValidity _validity;
        private XmlSchemaContentType _contentType;
 
        public XmlSchemaInfo()
        {
            Clear();
        }
 
        internal XmlSchemaInfo(XmlSchemaValidity validity) : this()
        {
            _validity = validity;
        }
 
        public XmlSchemaValidity Validity
        {
            get
            {
                return _validity;
            }
            set
            {
                _validity = value;
            }
        }
 
        public bool IsDefault
        {
            get
            {
                return _isDefault;
            }
            set
            {
                _isDefault = value;
            }
        }
 
        public bool IsNil
        {
            get
            {
                return _isNil;
            }
            set
            {
                _isNil = value;
            }
        }
 
        public XmlSchemaSimpleType MemberType
        {
            get
            {
                return _memberType;
            }
            set
            {
                _memberType = value;
            }
        }
 
        public XmlSchemaType SchemaType
        {
            get
            {
                return _schemaType;
            }
            set
            {
                _schemaType = value;
                if (_schemaType != null)
                { //Member type will not change its content type
                    _contentType = _schemaType.SchemaContentType;
                }
                else
                {
                    _contentType = XmlSchemaContentType.Empty;
                }
            }
        }
 
        public XmlSchemaElement SchemaElement
        {
            get
            {
                return _schemaElement;
            }
            set
            {
                _schemaElement = value;
                if (value != null)
                { //Setting non-null SchemaElement means SchemaAttribute should be null
                    _schemaAttribute = null;
                }
            }
        }
 
        public XmlSchemaAttribute SchemaAttribute
        {
            get
            {
                return _schemaAttribute;
            }
            set
            {
                _schemaAttribute = value;
                if (value != null)
                { //Setting non-null SchemaAttribute means SchemaElement should be null
                    _schemaElement = null;
                }
            }
        }
 
        public XmlSchemaContentType ContentType
        {
            get
            {
                return _contentType;
            }
            set
            {
                _contentType = value;
            }
        }
 
        internal XmlSchemaType XmlType
        {
            get
            {
                if (_memberType != null)
                {
                    return _memberType;
                }
                return _schemaType;
            }
        }
 
        internal bool HasDefaultValue
        {
            get
            {
                return _schemaElement != null && _schemaElement.ElementDecl.DefaultValueTyped != null;
            }
        }
 
        internal bool IsUnionType
        {
            get
            {
                if (_schemaType == null || _schemaType.Datatype == null)
                {
                    return false;
                }
                return _schemaType.Datatype.Variety == XmlSchemaDatatypeVariety.Union;
            }
        }
 
        internal void Clear()
        {
            _isNil = false;
            _isDefault = false;
            _schemaType = null;
            _schemaElement = null;
            _schemaAttribute = null;
            _memberType = null;
            _validity = XmlSchemaValidity.NotKnown;
            _contentType = XmlSchemaContentType.Empty;
        }
    }
}