322 references to XslFlags
System.Data.SqlXml (322)
System\Xml\Xsl\Xslt\Focus.cs (4)
92public void StartFocus(IList<QilNode> args, XslFlags flags) { 95if ((flags & XslFlags.Current) != 0) { 99if ((flags & XslFlags.Position) != 0) { 103if ((flags & XslFlags.Last) != 0) {
System\Xml\Xsl\Xslt\QilGenerator.cs (35)
357switch (var.Flags & XslFlags.TypeFilter) { 358case XslFlags.String : return T.StringX;; 359case XslFlags.Number : return T.DoubleX; 360case XslFlags.Boolean : return T.BooleanX; 361case XslFlags.Node : return T.NodeNotRtf; 362case XslFlags.Nodeset : return T.NodeNotRtfS; 363case XslFlags.Rtf : return T.Node; 364case XslFlags.Node | XslFlags.Rtf : return T.Node; 365case XslFlags.Node | XslFlags.Nodeset : return T.NodeNotRtfS; 366case XslFlags.Nodeset | XslFlags.Rtf : return T.NodeS; 367case XslFlags.Node | XslFlags.Nodeset | XslFlags.Rtf : return T.NodeS; 419XslFlags flags = !IsDebug ? tmpl.Flags : XslFlags.FullFocus; 422if ((flags & XslFlags.Current) != 0) { 425if ((flags & XslFlags.Position) != 0) { 428if ((flags & XslFlags.Last) != 0) { 463if ((xslPar.DefValueFlags & XslFlags.HasCalls) == 0) { 484xslPar.Flags |= (template.Flags & XslFlags.FocusFilter); 486f.Boolean((xslPar.DefValueFlags & XslFlags.SideEffects) != 0), 516f.Boolean((tmpl.Flags & XslFlags.SideEffects) != 0), 561funcFocus.StartFocus(tmpl.Function.Arguments, !IsDebug ? tmpl.Flags : XslFlags.FullFocus); 2120private IList<XslNode> AddRemoveImplicitArgs(IList<XslNode> args, XslFlags flags) { 2123flags = XslFlags.FullFocus; 2125if ((flags & XslFlags.FocusFilter) != 0) { 2130if ((flags & XslFlags.Current ) != 0) { SetArg(args, pos ++, nameCurrent , GetCurrentNode ()); } 2131if ((flags & XslFlags.Position) != 0) { SetArg(args, pos ++, namePosition, GetCurrentPosition()); } 2132if ((flags & XslFlags.Last ) != 0) { SetArg(args, pos ++, nameLast , GetLastPosition ()); } 2187XslFlags flags; { 2191flags |= XslFlags.Current; // Due to recursive nature of Apply(Templates/Imports) we will need current node any way 2236f.Boolean((flags & XslFlags.SideEffects) != 0),
System\Xml\Xsl\Xslt\Stylesheet.cs (2)
23public Dictionary<QilName, XslFlags> ModeFlags = new Dictionary<QilName, XslFlags>();
System\Xml\Xsl\Xslt\XslAst.cs (2)
83public XslFlags Flags; 249public XslFlags DefValueFlags;
System\Xml\Xsl\Xslt\XslAstAnalyzer.cs (270)
23internal class XslAstAnalyzer : XslVisitor<XslFlags> { 89public void PropagateFlag(XslFlags flag) { 92v.Flags &= ~XslFlags.Stop; 96if ((v.Flags & XslFlags.Stop) == 0) { 104private void DepthFirstSearch(V v, XslFlags flag) { 105Debug.Assert((v.Flags & XslFlags.Stop) == 0, "Already visited this vertex"); 106v.Flags |= (flag | XslFlags.Stop); 108if ((u.Flags & XslFlags.Stop) == 0) { 130public XslFlags Analyze(Compiler compiler) { 146par.Flags |= XslFlags.AnyType; 153XslFlags result = XslFlags.None; 174if ((par.Flags & XslFlags.MayBeDefault) != 0) { 182for (int flag = (int)XslFlags.Rtf; flag != 0; flag >>= 1) { 183dataFlow.PropagateFlag((XslFlags)flag); 196if ((result & XslFlags.Current) != 0) { 197revCall0Graph.PropagateFlag(XslFlags.Current); 199if ((result & XslFlags.Position) != 0) { 200revCall0Graph.PropagateFlag(XslFlags.Position); 202if ((result & XslFlags.Last) != 0) { 203revCall0Graph.PropagateFlag(XslFlags.Last); 205if ((result & XslFlags.SideEffects) != 0) { 231private void FillModeFlags(Dictionary<QilName, XslFlags> parentModeFlags, Stylesheet sheet) { 238foreach (KeyValuePair<QilName, XslFlags> modeFlag in sheet.ModeFlags) { 239XslFlags modeFlags; 248XslFlags templateFlags = tmpl.Flags & (XslFlags.FocusFilter | XslFlags.SideEffects); 250XslFlags modeFlags; 330protected override XslFlags Visit(XslNode node) { 332XslFlags result = base.Visit(node); 340(result & XslFlags.TypeFilter & ~XslFlags.Rtf) == 0, 346protected override XslFlags VisitChildren(XslNode node) { 347XslFlags result = XslFlags.None; 355protected override XslFlags VisitAttributeSet(AttributeSet node) { 362protected override XslFlags VisitTemplate(Template node) { 369protected override XslFlags VisitApplyImports(XslNode node) { 374return XslFlags.HasCalls | XslFlags.Current | XslFlags.Rtf; 377protected override XslFlags VisitApplyTemplates(XslNode node) { 379XslFlags result = ProcessExpr(node.Select); 394modePar.Flags |= instr.Flags & XslFlags.TypeFilter; 403return XslFlags.HasCalls | XslFlags.Rtf | result; 406protected override XslFlags VisitAttribute(NodeCtor node) { 408XslFlags.Rtf | 415protected override XslFlags VisitCallTemplate(XslNode node) { 416XslFlags result = XslFlags.None; 477par.Flags |= found.Flags & XslFlags.TypeFilter; 481par.Flags |= XslFlags.MayBeDefault; 486return XslFlags.HasCalls | XslFlags.Rtf | result; 491protected override XslFlags VisitComment(XslNode node) { 492return XslFlags.Rtf | VisitChildren(node); 495protected override XslFlags VisitCopy(XslNode node) { 498return XslFlags.Current | XslFlags.Rtf | VisitChildren(node); 501protected override XslFlags VisitCopyOf(XslNode node) { 502return XslFlags.Rtf | ProcessExpr(node.Select); 505protected override XslFlags VisitElement(NodeCtor node) { 509XslFlags.Rtf | 516protected override XslFlags VisitError(XslNode node) { 517return (VisitChildren(node) & ~XslFlags.TypeFilter) | XslFlags.SideEffects; 520protected override XslFlags VisitForEach(XslNode node) { 521XslFlags result = ProcessExpr(node.Select); 528result |= Visit(child) & ~XslFlags.FocusFilter; 535protected override XslFlags VisitIf(XslNode node) { 549protected override XslFlags VisitLiteralAttribute(XslNode node) { 551XslFlags.Rtf | 557protected override XslFlags VisitLiteralElement(XslNode node) { 558return XslFlags.Rtf | VisitChildren(node); 561protected override XslFlags VisitMessage(XslNode node) { 562return (VisitChildren(node) & ~XslFlags.TypeFilter) | XslFlags.SideEffects; 567protected override XslFlags VisitNumber(Number node) { 569XslFlags.Rtf | 572(node.Value != null ? ProcessExpr(node.Value) : XslFlags.Current) | 583protected override XslFlags VisitPI(XslNode node) { 585XslFlags.Rtf | 591protected override XslFlags VisitSort(Sort node) { 595ProcessExpr(node.Select) & ~XslFlags.FocusFilter | 603protected override XslFlags VisitText(Text node) { 604return XslFlags.Rtf | VisitChildren(node); 607protected override XslFlags VisitUseAttributeSet(XslNode node) { 620return XslFlags.HasCalls | XslFlags.Rtf; 623protected override XslFlags VisitValueOf(XslNode node) { 624return XslFlags.Rtf | ProcessExpr(node.Select); 627protected override XslFlags VisitValueOfDoe(XslNode node) { 628return XslFlags.Rtf | ProcessExpr(node.Select); 631protected override XslFlags VisitParam(VarPar node) { 636node.Flags |= XslFlags.MayBeDefault; 647return node.DefValueFlags & ~XslFlags.TypeFilter; 650protected override XslFlags VisitVariable(VarPar node) { 652return node.Flags & ~XslFlags.TypeFilter; 655protected override XslFlags VisitWithParam(VarPar node) { 657return node.Flags & ~XslFlags.TypeFilter; 660private XslFlags ProcessVarPar(VarPar node) { 661XslFlags result; 672result = xpathAnalyzer.Analyze(node.Select) | VisitChildren(node) | XslFlags.AnyType; 682result = XslFlags.Rtf | VisitChildren(node); 685result = XslFlags.String; 692private XslFlags ProcessExpr(string expr) { 693return xpathAnalyzer.Analyze(expr) & ~XslFlags.TypeFilter; 697private XslFlags ProcessAvt(string avt) { 698return xpathAnalyzer.AnalyzeAvt(avt) & ~XslFlags.TypeFilter; 702private XslFlags ProcessPattern(string pattern) { 704return xpathAnalyzer.Analyze(pattern) & ~XslFlags.TypeFilter & ~XslFlags.FocusFilter; 724t.Flags &= ~XslFlags.Stop; 727t.Flags &= ~XslFlags.Stop; 731if ((t.Flags & XslFlags.Stop) == 0) { 732if ((t.Flags & XslFlags.SideEffects) != 0) { 738if ((t.Flags & XslFlags.Stop) == 0) { 739if ((t.Flags & XslFlags.SideEffects) != 0) { 747Debug.Assert((t.Flags & XslFlags.Stop) == 0, "Already visited this vertex"); 748t.Flags |= (XslFlags.SideEffects | XslFlags.Stop); 751if ((u.Flags & XslFlags.Stop) == 0) { 754Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 757if ((u.Flags & XslFlags.Stop) == 0) { 760Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 769if ((u.Flags & XslFlags.Stop) == 0) { 772Debug.Assert((u.Flags & XslFlags.SideEffects) == XslFlags.SideEffects, "Flag was not set on an adjacent vertex"); 785internal class XPathAnalyzer : IXPathBuilder<XslFlags> { 786private XPathParser<XslFlags> xpathParser = new XPathParser<XslFlags>(); 806public XslFlags Analyze(string xpathExpr) { 809return XslFlags.None; 815XslFlags result = xpathParser.Parse(scanner, this, LexKind.Eof); 817result |= XslFlags.Current; 821return XslFlags.AnyType | XslFlags.FullFocus; 825public XslFlags AnalyzeAvt(string source) { 828return XslFlags.None; 832XslFlags result = XslFlags.None; 851result |= XslFlags.Current; 853return result & ~XslFlags.TypeFilter; 855return XslFlags.FullFocus; 881public virtual XslFlags EndBuild(XslFlags result) { 885public virtual XslFlags String(string value) { 887return XslFlags.String; 890public virtual XslFlags Number(double value) { 892return XslFlags.Number; 895private static XslFlags[] OperatorType = { 896/*Unknown */ XslFlags.AnyType, 897/*Or */ XslFlags.Boolean, 898/*And */ XslFlags.Boolean, 899/*Eq */ XslFlags.Boolean, 900/*Ne */ XslFlags.Boolean, 901/*Lt */ XslFlags.Boolean, 902/*Le */ XslFlags.Boolean, 903/*Gt */ XslFlags.Boolean, 904/*Ge */ XslFlags.Boolean, 905/*Plus */ XslFlags.Number , 906/*Minus */ XslFlags.Number , 907/*Multiply */ XslFlags.Number , 908/*Divide */ XslFlags.Number , 909/*Modulo */ XslFlags.Number , 910/*UnaryMinus*/ XslFlags.Number , 911/*Union */ XslFlags.Nodeset, 914public virtual XslFlags Operator(XPathOperator op, XslFlags left, XslFlags right) { 917XslFlags result = (left | right) & ~XslFlags.TypeFilter; 921public virtual XslFlags Axis(XPathAxis xpathAxis, XPathNodeType nodeType, string prefix, string name) { 924return XslFlags.Current | XslFlags.Node; 926return XslFlags.Current | XslFlags.Nodeset; 931public virtual XslFlags JoinStep(XslFlags left, XslFlags right) { 933return (left & ~XslFlags.TypeFilter) | XslFlags.Nodeset; // "ex:Foo(position())/Bar" 937public virtual XslFlags Predicate(XslFlags nodeset, XslFlags predicate, bool isReverseStep) { 939return (nodeset & ~XslFlags.TypeFilter) | XslFlags.Nodeset | (predicate & XslFlags.SideEffects); // "ex:Foo(position())[Bar]" 942public virtual XslFlags Variable(string prefix, string name) { 946return XslFlags.AnyType; 948return XslFlags.None; 951public virtual XslFlags Function(string prefix, string name, IList<XslFlags> args) { 954XslFlags argsFlags = XslFlags.None; 955foreach (XslFlags t in args) { 959XslFlags funcFlags = XslFlags.None; 977funcFlags |= XslFlags.Current; 985funcFlags |= XslFlags.Current; 992case "node-set": funcFlags = XslFlags.Nodeset; break; 993case "string-compare": funcFlags = XslFlags.Number; break; 994case "utc": funcFlags = XslFlags.String; break; 995case "format-date": funcFlags = XslFlags.String; break; 996case "format-time": funcFlags = XslFlags.String; break; 997case "local-name": funcFlags = XslFlags.String; break; 998case "namespace-uri": funcFlags = XslFlags.String | XslFlags.Current; break; 999case "number": funcFlags = XslFlags.Number; break; 1003case "node-set": funcFlags = XslFlags.Nodeset; break; 1004case "object-type": funcFlags = XslFlags.String; break; 1008if (funcFlags == XslFlags.None) { 1010funcFlags = XslFlags.AnyType; 1016funcFlags = XslFlags.String; 1018funcFlags = XslFlags.Number; 1020funcFlags = XslFlags.Boolean; 1022funcFlags = XslFlags.Node; 1024funcFlags = XslFlags.Nodeset; 1026funcFlags = XslFlags.AnyType; 1028funcFlags = XslFlags.Nodeset; 1034funcFlags |= XslFlags.SideEffects; 1038return (argsFlags & ~XslFlags.TypeFilter) | funcFlags; 1042private static XslFlags[] XPathFunctionFlags = { 1043/*Last */ XslFlags.Number | XslFlags.Last, 1044/*Position */ XslFlags.Number | XslFlags.Position, 1045/*Count */ XslFlags.Number, 1046/*LocalName */ XslFlags.String, // | XslFlags.Current if 0 args 1047/*NamespaceUri */ XslFlags.String, // | XslFlags.Current if 0 args 1048/*Name */ XslFlags.String, // | XslFlags.Current if 0 args 1049/*String */ XslFlags.String, // | XslFlags.Current if 0 args 1050/*Number */ XslFlags.Number, // | XslFlags.Current if 0 args 1051/*Boolean */ XslFlags.Boolean, 1052/*True */ XslFlags.Boolean, 1053/*False */ XslFlags.Boolean, 1054/*Not */ XslFlags.Boolean, 1055/*Id */ XslFlags.Nodeset | XslFlags.Current, 1056/*Concat */ XslFlags.String, 1057/*StartsWith */ XslFlags.Boolean, 1058/*Contains */ XslFlags.Boolean, 1059/*SubstringBefore */ XslFlags.String, 1060/*SubstringAfter */ XslFlags.String, 1061/*Substring */ XslFlags.String, 1062/*StringLength */ XslFlags.Number, // | XslFlags.Current if 0 args 1063/*Normalize */ XslFlags.String, // | XslFlags.Current if 0 args 1064/*Translate */ XslFlags.String, 1065/*Lang */ XslFlags.Boolean | XslFlags.Current, 1066/*Sum */ XslFlags.Number, 1067/*Floor */ XslFlags.Number, 1068/*Ceiling */ XslFlags.Number, 1069/*Round */ XslFlags.Number, 1074private static XslFlags[] XsltFunctionFlags = { 1075/*Current */ XslFlags.Node, // xsltCurrentNeeded = true 1076/*Document */ XslFlags.Nodeset, 1077/*Key */ XslFlags.Nodeset | XslFlags.Current, 1078/*FormatNumber */ XslFlags.String, 1079/*UnparsedEntityUri */ XslFlags.String, // | XslFlags.Current if it is implemented 1080/*GenerateId */ XslFlags.String, // | XslFlags.Current if 0 args 1081/*SystemProperty */ XslFlags.String | XslFlags.Number, 1082/*ElementAvailable */ XslFlags.Boolean, 1083/*FunctionAvailable */ XslFlags.Boolean,
System\Xml\Xsl\Xslt\XslFlags.cs (9)
21AnyType = XslFlags.String | XslFlags.Number | XslFlags.Boolean | XslFlags.Node | XslFlags.Nodeset | XslFlags.Rtf, 29FullFocus = XslFlags.Current | XslFlags.Position | XslFlags.Last,