322 references to XslFlags
System.Private.Xml (322)
System\Xml\Xsl\Xslt\Focus.cs (4)
102public void StartFocus(IList<QilNode> args, XslFlags flags) 106if ((flags & XslFlags.Current) != 0) 111if ((flags & XslFlags.Position) != 0) 116if ((flags & XslFlags.Last) != 0)
System\Xml\Xsl\Xslt\QilGenerator.cs (35)
410switch (var.Flags & XslFlags.TypeFilter) 412case XslFlags.String: return T.StringX; 413case XslFlags.Number: return T.DoubleX; 414case XslFlags.Boolean: return T.BooleanX; 415case XslFlags.Node: return T.NodeNotRtf; 416case XslFlags.Nodeset: return T.NodeNotRtfS; 417case XslFlags.Rtf: return T.Node; 418case XslFlags.Node | XslFlags.Rtf: return T.Node; 419case XslFlags.Node | XslFlags.Nodeset: return T.NodeNotRtfS; 420case XslFlags.Nodeset | XslFlags.Rtf: return T.NodeS; 421case XslFlags.Node | XslFlags.Nodeset | XslFlags.Rtf: return T.NodeS; 481XslFlags flags = !IsDebug ? tmpl.Flags : XslFlags.FullFocus; 484if ((flags & XslFlags.Current) != 0) 488if ((flags & XslFlags.Position) != 0) 492if ((flags & XslFlags.Last) != 0) 537if ((xslPar.DefValueFlags & XslFlags.HasCalls) == 0) 563xslPar.Flags |= (template.Flags & XslFlags.FocusFilter); 565_f.Boolean((xslPar.DefValueFlags & XslFlags.SideEffects) != 0), 598_f.Boolean((tmpl.Flags & XslFlags.SideEffects) != 0), 648_funcFocus.StartFocus(tmpl.Function.Arguments, !IsDebug ? tmpl.Flags : XslFlags.FullFocus); 2541private IList<XslNode>? AddRemoveImplicitArgs(IList<XslNode>? args, XslFlags flags) 2546flags = XslFlags.FullFocus; 2548if ((flags & XslFlags.FocusFilter) != 0) 2555if ((flags & XslFlags.Current) != 0) { SetArg(args, pos++, _nameCurrent, GetCurrentNode()); } 2556if ((flags & XslFlags.Position) != 0) { SetArg(args, pos++, _namePosition, GetCurrentPosition()); } 2557if ((flags & XslFlags.Last) != 0) { SetArg(args, pos++, _nameLast, GetLastPosition()); } 2624XslFlags flags; 2630flags |= XslFlags.Current; // Due to recursive nature of Apply(Templates/Imports) we will need current node any way 2680_f.Boolean((flags & XslFlags.SideEffects) != 0),
System\Xml\Xsl\Xslt\Stylesheet.cs (2)
21public Dictionary<QilName, XslFlags> ModeFlags = new Dictionary<QilName, XslFlags>();
System\Xml\Xsl\Xslt\XslAst.cs (2)
83public XslFlags Flags; 223public XslFlags DefValueFlags;
System\Xml\Xsl\Xslt\XslAstAnalyzer.cs (270)
20internal sealed class XslAstAnalyzer : XslVisitor<XslFlags> 91public void PropagateFlag(XslFlags flag) 96v.Flags &= ~XslFlags.Stop; 101if ((v.Flags & XslFlags.Stop) == 0) 111private void DepthFirstSearch(V v, XslFlags flag) 113Debug.Assert((v.Flags & XslFlags.Stop) == 0, "Already visited this vertex"); 114v.Flags |= (flag | XslFlags.Stop); 117if ((u.Flags & XslFlags.Stop) == 0) 143public XslFlags Analyze(Compiler compiler) 163par.Flags |= XslFlags.AnyType; 171XslFlags result = XslFlags.None; 197if ((par.Flags & XslFlags.MayBeDefault) != 0) 206for (int flag = (int)XslFlags.Rtf; flag != 0; flag >>= 1) 208_dataFlow!.PropagateFlag((XslFlags)flag); 223if ((result & XslFlags.Current) != 0) 225_revCall0Graph!.PropagateFlag(XslFlags.Current); 227if ((result & XslFlags.Position) != 0) 229_revCall0Graph!.PropagateFlag(XslFlags.Position); 231if ((result & XslFlags.Last) != 0) 233_revCall0Graph!.PropagateFlag(XslFlags.Last); 235if ((result & XslFlags.SideEffects) != 0) 265private static void FillModeFlags(Dictionary<QilName, XslFlags> parentModeFlags, Stylesheet sheet) 274foreach (KeyValuePair<QilName, XslFlags> modeFlag in sheet.ModeFlags) 276XslFlags modeFlags; 287XslFlags templateFlags = tmpl.Flags & (XslFlags.FocusFilter | XslFlags.SideEffects); 290XslFlags modeFlags; 300protected override XslFlags Visit(XslNode node) 303XslFlags result = base.Visit(node); 312(result & XslFlags.TypeFilter & ~XslFlags.Rtf) == 0, 318protected override XslFlags VisitChildren(XslNode node) 320XslFlags result = XslFlags.None; 329protected override XslFlags VisitAttributeSet(AttributeSet node) 337protected override XslFlags VisitTemplate(Template node) 345protected override XslFlags VisitApplyImports(XslNode node) 351return XslFlags.HasCalls | XslFlags.Current | XslFlags.Rtf; 354protected override XslFlags VisitApplyTemplates(XslNode node) 357XslFlags result = ProcessExpr(node.Select); 378modePar.Flags |= instr.Flags & XslFlags.TypeFilter; 388return XslFlags.HasCalls | XslFlags.Rtf | result; 391protected override XslFlags VisitAttribute(NodeCtor node) 394XslFlags.Rtf | 401protected override XslFlags VisitCallTemplate(XslNode node) 403XslFlags result = XslFlags.None; 478par.Flags |= found.Flags & XslFlags.TypeFilter; 484par.Flags |= XslFlags.MayBeDefault; 489return XslFlags.HasCalls | XslFlags.Rtf | result; 494protected override XslFlags VisitComment(XslNode node) 496return XslFlags.Rtf | VisitChildren(node); 499protected override XslFlags VisitCopy(XslNode node) 503return XslFlags.Current | XslFlags.Rtf | VisitChildren(node); 506protected override XslFlags VisitCopyOf(XslNode node) 508return XslFlags.Rtf | ProcessExpr(node.Select!); 511protected override XslFlags VisitElement(NodeCtor node) 516XslFlags.Rtf | 523protected override XslFlags VisitError(XslNode node) 525return (VisitChildren(node) & ~XslFlags.TypeFilter) | XslFlags.SideEffects; 528protected override XslFlags VisitForEach(XslNode node) 530XslFlags result = ProcessExpr(node.Select!); 541result |= Visit(child) & ~XslFlags.FocusFilter; 548protected override XslFlags VisitIf(XslNode node) 563protected override XslFlags VisitLiteralAttribute(XslNode node) 566XslFlags.Rtf | 572protected override XslFlags VisitLiteralElement(XslNode node) 574return XslFlags.Rtf | VisitChildren(node); 577protected override XslFlags VisitMessage(XslNode node) 579return (VisitChildren(node) & ~XslFlags.TypeFilter) | XslFlags.SideEffects; 584protected override XslFlags VisitNumber(Number node) 587XslFlags.Rtf | 590(node.Value != null ? ProcessExpr(node.Value) : XslFlags.Current) | 601protected override XslFlags VisitPI(XslNode node) 604XslFlags.Rtf | 610protected override XslFlags VisitSort(Sort node) 615ProcessExpr(node.Select!) & ~XslFlags.FocusFilter | 623protected override XslFlags VisitText(Text node) 625return XslFlags.Rtf | VisitChildren(node); 628protected override XslFlags VisitUseAttributeSet(XslNode node) 644return XslFlags.HasCalls | XslFlags.Rtf; 647protected override XslFlags VisitValueOf(XslNode node) 649return XslFlags.Rtf | ProcessExpr(node.Select!); 652protected override XslFlags VisitValueOfDoe(XslNode node) 654return XslFlags.Rtf | ProcessExpr(node.Select!); 657protected override XslFlags VisitParam(VarPar node) 664node.Flags |= XslFlags.MayBeDefault; 676return node.DefValueFlags & ~XslFlags.TypeFilter; 679protected override XslFlags VisitVariable(VarPar node) 682return node.Flags & ~XslFlags.TypeFilter; 685protected override XslFlags VisitWithParam(VarPar node) 688return node.Flags & ~XslFlags.TypeFilter; 691private XslFlags ProcessVarPar(VarPar node) 693XslFlags result; 707result = _xpathAnalyzer!.Analyze(node.Select) | VisitChildren(node) | XslFlags.AnyType; 722result = XslFlags.Rtf | VisitChildren(node); 727result = XslFlags.String; 734private XslFlags ProcessExpr(string expr) 736return _xpathAnalyzer!.Analyze(expr) & ~XslFlags.TypeFilter; 740private XslFlags ProcessAvt(string? avt) 742return _xpathAnalyzer!.AnalyzeAvt(avt) & ~XslFlags.TypeFilter; 746private XslFlags ProcessPattern(string? pattern) 749return _xpathAnalyzer!.Analyze(pattern) & ~XslFlags.TypeFilter & ~XslFlags.FocusFilter; 776t.Flags &= ~XslFlags.Stop; 780t.Flags &= ~XslFlags.Stop; 785if ((t.Flags & XslFlags.Stop) == 0) 787if ((t.Flags & XslFlags.SideEffects) != 0) 795if ((t.Flags & XslFlags.Stop) == 0) 797if ((t.Flags & XslFlags.SideEffects) != 0) 807Debug.Assert((t.Flags & XslFlags.Stop) == 0, "Already visited this vertex"); 808t.Flags |= (XslFlags.SideEffects | XslFlags.Stop); 812if ((u.Flags & XslFlags.Stop) == 0) 816Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 820if ((u.Flags & XslFlags.Stop) == 0) 824Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 835if ((u.Flags & XslFlags.Stop) == 0) 839Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 853internal sealed class XPathAnalyzer : IXPathBuilder<XslFlags> 855private readonly XPathParser<XslFlags> _xpathParser = new XPathParser<XslFlags>(); 877public XslFlags Analyze(string? xpathExpr) 882return XslFlags.None; 889XslFlags result = _xpathParser.Parse(scanner, this, LexKind.Eof); 892result |= XslFlags.Current; 898return XslFlags.AnyType | XslFlags.FullFocus; 902public XslFlags AnalyzeAvt(string? source) 907return XslFlags.None; 912XslFlags result = XslFlags.None; 936result |= XslFlags.Current; 938return result & ~XslFlags.TypeFilter; 942return XslFlags.FullFocus; 975public XslFlags EndBuild(XslFlags result) 980public XslFlags String(string value) 983return XslFlags.String; 986public XslFlags Number(double value) 989return XslFlags.Number; 992private static readonly XslFlags[] s_operatorType = { 993/*Unknown */ XslFlags.AnyType, 994/*Or */ XslFlags.Boolean, 995/*And */ XslFlags.Boolean, 996/*Eq */ XslFlags.Boolean, 997/*Ne */ XslFlags.Boolean, 998/*Lt */ XslFlags.Boolean, 999/*Le */ XslFlags.Boolean, 1000/*Gt */ XslFlags.Boolean, 1001/*Ge */ XslFlags.Boolean, 1002/*Plus */ XslFlags.Number, 1003/*Minus */ XslFlags.Number, 1004/*Multiply */ XslFlags.Number, 1005/*Divide */ XslFlags.Number, 1006/*Modulo */ XslFlags.Number, 1007/*UnaryMinus*/ XslFlags.Number, 1008/*Union */ XslFlags.Nodeset, 1011public XslFlags Operator(XPathOperator op, XslFlags left, XslFlags right) 1015XslFlags result = (left | right) & ~XslFlags.TypeFilter; 1019public XslFlags Axis(XPathAxis xpathAxis, XPathNodeType nodeType, string? prefix, string? name) 1024return XslFlags.Current | XslFlags.Node; 1028return XslFlags.Current | XslFlags.Nodeset; 1033public XslFlags JoinStep(XslFlags left, XslFlags right) 1036return (left & ~XslFlags.TypeFilter) | XslFlags.Nodeset; // "ex:Foo(position())/Bar" 1040public XslFlags Predicate(XslFlags nodeset, XslFlags predicate, bool isReverseStep) 1043return (nodeset & ~XslFlags.TypeFilter) | XslFlags.Nodeset | (predicate & XslFlags.SideEffects); // "ex:Foo(position())[Bar]" 1046public XslFlags Variable(string prefix, string name) 1051return XslFlags.AnyType; 1053return XslFlags.None; 1059public XslFlags Function(string prefix, string name, IList<XslFlags> args) 1063XslFlags argsFlags = XslFlags.None; 1064foreach (XslFlags t in args) 1069XslFlags funcFlags = XslFlags.None; 1090funcFlags |= XslFlags.Current; 1103funcFlags |= XslFlags.Current; 1114case "node-set": funcFlags = XslFlags.Nodeset; break; 1115case "string-compare": funcFlags = XslFlags.Number; break; 1116case "utc": funcFlags = XslFlags.String; break; 1117case "format-date": funcFlags = XslFlags.String; break; 1118case "format-time": funcFlags = XslFlags.String; break; 1119case "local-name": funcFlags = XslFlags.String; break; 1120case "namespace-uri": funcFlags = XslFlags.String | XslFlags.Current; break; 1121case "number": funcFlags = XslFlags.Number; break; 1128case "node-set": funcFlags = XslFlags.Nodeset; break; 1129case "object-type": funcFlags = XslFlags.String; break; 1133if (funcFlags == XslFlags.None) 1136funcFlags = XslFlags.AnyType; 1145funcFlags = XslFlags.String; 1149funcFlags = XslFlags.Number; 1153funcFlags = XslFlags.Boolean; 1157funcFlags = XslFlags.Node; 1161funcFlags = XslFlags.Nodeset; 1165funcFlags = XslFlags.AnyType; 1169funcFlags = XslFlags.Nodeset; 1177funcFlags |= XslFlags.SideEffects; 1181return (argsFlags & ~XslFlags.TypeFilter) | funcFlags; 1185private static readonly XslFlags[] s_XPathFunctionFlags = { 1186/*Last */ XslFlags.Number | XslFlags.Last, 1187/*Position */ XslFlags.Number | XslFlags.Position, 1188/*Count */ XslFlags.Number, 1189/*LocalName */ XslFlags.String, // | XslFlags.Current if 0 args 1190/*NamespaceUri */ XslFlags.String, // | XslFlags.Current if 0 args 1191/*Name */ XslFlags.String, // | XslFlags.Current if 0 args 1192/*String */ XslFlags.String, // | XslFlags.Current if 0 args 1193/*Number */ XslFlags.Number, // | XslFlags.Current if 0 args 1194/*Boolean */ XslFlags.Boolean, 1195/*True */ XslFlags.Boolean, 1196/*False */ XslFlags.Boolean, 1197/*Not */ XslFlags.Boolean, 1198/*Id */ XslFlags.Nodeset | XslFlags.Current, 1199/*Concat */ XslFlags.String, 1200/*StartsWith */ XslFlags.Boolean, 1201/*Contains */ XslFlags.Boolean, 1202/*SubstringBefore */ XslFlags.String, 1203/*SubstringAfter */ XslFlags.String, 1204/*Substring */ XslFlags.String, 1205/*StringLength */ XslFlags.Number, // | XslFlags.Current if 0 args 1206/*Normalize */ XslFlags.String, // | XslFlags.Current if 0 args 1207/*Translate */ XslFlags.String, 1208/*Lang */ XslFlags.Boolean | XslFlags.Current, 1209/*Sum */ XslFlags.Number, 1210/*Floor */ XslFlags.Number, 1211/*Ceiling */ XslFlags.Number, 1212/*Round */ XslFlags.Number, 1217private static readonly XslFlags[] s_xsltFunctionFlags = { 1218/*Current */ XslFlags.Node, // xsltCurrentNeeded = true 1219/*Document */ XslFlags.Nodeset, 1220/*Key */ XslFlags.Nodeset | XslFlags.Current, 1221/*FormatNumber */ XslFlags.String, 1222/*UnparsedEntityUri */ XslFlags.String, // | XslFlags.Current if it is implemented 1223/*GenerateId */ XslFlags.String, // | XslFlags.Current if 0 args 1224/*SystemProperty */ XslFlags.String | XslFlags.Number, 1225/*ElementAvailable */ XslFlags.Boolean, 1226/*FunctionAvailable */ XslFlags.Boolean,
System\Xml\Xsl\Xslt\XslFlags.cs (9)
19AnyType = XslFlags.String | XslFlags.Number | XslFlags.Boolean | XslFlags.Node | XslFlags.Nodeset | XslFlags.Rtf, 27FullFocus = XslFlags.Current | XslFlags.Position | XslFlags.Last,