Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MatchesNodeKinds()

bool System.Xml.Xsl.IlGen.XmlILVisitor.MatchesNodeKinds ( QilTargetType ndIsType,
XmlQueryType typDerived,
XmlQueryType typBase )
inlineprivate

Definition at line 1925 of file XmlILVisitor.cs.

1926 {
1927 bool flag = true;
1928 if (!typBase.IsNode || !typBase.IsSingleton)
1929 {
1930 return false;
1931 }
1932 if (!typDerived.IsNode || !typDerived.IsSingleton || !typDerived.IsNotRtf)
1933 {
1934 return false;
1935 }
1936 XmlNodeKindFlags xmlNodeKindFlags = XmlNodeKindFlags.None;
1937 foreach (XmlQueryType item in typBase)
1938 {
1939 if ((object)item == XmlQueryTypeFactory.Element)
1940 {
1941 xmlNodeKindFlags |= XmlNodeKindFlags.Element;
1942 continue;
1943 }
1944 if ((object)item == XmlQueryTypeFactory.Attribute)
1945 {
1946 xmlNodeKindFlags |= XmlNodeKindFlags.Attribute;
1947 continue;
1948 }
1949 if ((object)item == XmlQueryTypeFactory.Text)
1950 {
1951 xmlNodeKindFlags |= XmlNodeKindFlags.Text;
1952 continue;
1953 }
1954 if ((object)item == XmlQueryTypeFactory.Document)
1955 {
1956 xmlNodeKindFlags |= XmlNodeKindFlags.Document;
1957 continue;
1958 }
1959 if ((object)item == XmlQueryTypeFactory.Comment)
1960 {
1961 xmlNodeKindFlags |= XmlNodeKindFlags.Comment;
1962 continue;
1963 }
1964 if ((object)item == XmlQueryTypeFactory.PI)
1965 {
1966 xmlNodeKindFlags |= XmlNodeKindFlags.PI;
1967 continue;
1968 }
1969 if ((object)item == XmlQueryTypeFactory.Namespace)
1970 {
1971 xmlNodeKindFlags |= XmlNodeKindFlags.Namespace;
1972 continue;
1973 }
1974 return false;
1975 }
1977 if (!Bits.ExactlyOne((uint)xmlNodeKindFlags))
1978 {
1979 xmlNodeKindFlags = ~xmlNodeKindFlags & XmlNodeKindFlags.Any;
1980 flag = !flag;
1981 }
1983 switch (xmlNodeKindFlags)
1984 {
1985 case XmlNodeKindFlags.Element:
1986 xPathNodeType = XPathNodeType.Element;
1987 break;
1988 case XmlNodeKindFlags.Attribute:
1989 xPathNodeType = XPathNodeType.Attribute;
1990 break;
1991 case XmlNodeKindFlags.Namespace:
1992 xPathNodeType = XPathNodeType.Namespace;
1993 break;
1994 case XmlNodeKindFlags.PI:
1995 xPathNodeType = XPathNodeType.ProcessingInstruction;
1996 break;
1997 case XmlNodeKindFlags.Comment:
1998 xPathNodeType = XPathNodeType.Comment;
1999 break;
2000 case XmlNodeKindFlags.Document:
2002 break;
2003 default:
2006 break;
2007 }
2009 _helper.Call(XmlILMethods.NavType);
2010 if (xPathNodeType == XPathNodeType.All)
2011 {
2013 int num = 0;
2014 if ((xmlNodeKindFlags & XmlNodeKindFlags.Document) != 0)
2015 {
2016 num |= 1;
2017 }
2018 if ((xmlNodeKindFlags & XmlNodeKindFlags.Element) != 0)
2019 {
2020 num |= 2;
2021 }
2022 if ((xmlNodeKindFlags & XmlNodeKindFlags.Attribute) != 0)
2023 {
2024 num |= 4;
2025 }
2026 if ((xmlNodeKindFlags & XmlNodeKindFlags.Text) != 0)
2027 {
2028 num |= 0x70;
2029 }
2030 if ((xmlNodeKindFlags & XmlNodeKindFlags.Comment) != 0)
2031 {
2032 num |= 0x100;
2033 }
2034 if ((xmlNodeKindFlags & XmlNodeKindFlags.PI) != 0)
2035 {
2036 num |= 0x80;
2037 }
2038 if ((xmlNodeKindFlags & XmlNodeKindFlags.Namespace) != 0)
2039 {
2040 num |= 8;
2041 }
2042 _helper.LoadInteger(num);
2045 }
2046 else
2047 {
2050 }
2051 return true;
2052 }
static readonly OpCode And
Definition OpCodes.cs:193
static readonly OpCode Shl
Definition OpCodes.cs:199
static readonly OpCode Ldc_I4_1
Definition OpCodes.cs:51
void ZeroCompare(QilNodeType relOp, bool isBoolVal)
void ClrCompare(QilNodeType relOp, XmlTypeCode code)

References System.Xml.Xsl.IlGen.XmlILVisitor._helper, System.Reflection.Emit.OpCodes.And, System.Xml.Xsl.XmlQueryTypeFactory.Attribute, System.Xml.Xsl.IlGen.GenerateHelper.Call(), System.Xml.Xsl.IlGen.XmlILVisitor.ClrCompare(), System.Xml.Xsl.XmlQueryTypeFactory.Comment, System.Xml.Dictionary, System.Xml.Xsl.XmlQueryTypeFactory.Document, System.Xml.Xsl.XmlQueryTypeFactory.Element, System.Xml.Xsl.IlGen.GenerateHelper.Emit(), System.Xml.Bits.ExactlyOne(), System.item, System.Reflection.Emit.OpCodes.Ldc_I4_1, System.Xml.Xsl.IlGen.GenerateHelper.LoadInteger(), System.Xml.Xsl.XmlQueryTypeFactory.Namespace, System.Xml.Xsl.IlGen.XmlILMethods.NavType, System.Xml.Xsl.IlGen.XmlILVisitor.NestedVisitEnsureStack(), System.Xml.Xsl.XmlQueryTypeFactory.PI, System.Reflection.Emit.OpCodes.Shl, System.Xml.Xsl.XmlQueryTypeFactory.Text, and System.Xml.Xsl.IlGen.XmlILVisitor.ZeroCompare().

Referenced by System.Xml.Xsl.IlGen.XmlILVisitor.VisitIsType().