File: FrameworkFork\Microsoft.Xml\Xml\schema\validationstate.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.
 
namespace Microsoft.Xml.Schema
{
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Runtime.InteropServices;
 
    [StructLayout(LayoutKind.Explicit)]
    internal struct StateUnion
    {
        [FieldOffset(0)] public int State;  //DFA 
        [FieldOffset(0)] public int AllElementsRequired; //AllContentValidator
        [FieldOffset(0)] public int CurPosIndex; //NFAContentValidator
        [FieldOffset(0)] public int NumberOfRunningPos; //RangeContentValidator
    }
 
    internal sealed class ValidationState
    {
        public bool IsNill;
        public bool IsDefault;
        public bool NeedValidateChildren;  // whether need to validate the children of this element   
        public bool CheckRequiredAttribute; //PSVI
        public bool ValidationSkipped;
        //public int               Depth;         // The validation state  
        public XmlSchemaContentProcessing ProcessContents;
        public XmlSchemaValidity Validity;
        public SchemaElementDecl ElementDecl;            // ElementDecl
        public SchemaElementDecl ElementDeclBeforeXsi; //elementDecl before its changed by that of xsi:type's
        public string LocalName;
        public string Namespace;
        public ConstraintStruct[] Constr;
 
        public StateUnion CurrentState;
 
        //For content model validation
        public bool HasMatched;       // whether the element has been verified correctly
 
        //For NFAs
        public BitSet[] CurPos = new BitSet[2];
 
        //For all
        public BitSet AllElementsSet;
 
        //For MinMaxNFA
        public List<RangePositionInfo> RunningPositions;
        public bool TooComplex;
    };
}