File: System\Xml\Schema\ValidationState.cs
Web Access
Project: src\src\libraries\System.Private.Xml\src\System.Private.Xml.csproj (System.Private.Xml)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
 
namespace System.Xml.Schema
{
    [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 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
        private BitSet[]? _curPos;
        public BitSet[] CurPos => _curPos ??= new BitSet[2];
 
        //For all
        public BitSet? AllElementsSet;
 
        //For MinMaxNFA
        public List<RangePositionInfo>? RunningPositions;
        public bool TooComplex;
    };
}