Update Reference Sources to .NET Framework 4.6.1
[mono.git] / mcs / class / referencesource / System.Data.SqlXml / System / Xml / Xsl / Xslt / XslVisitor.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="XslVisitor.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">[....]</owner>
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml.Xsl.Xslt {
9
10     internal abstract class XslVisitor<T> {
11         protected virtual T Visit(XslNode node) {
12             switch (node.NodeType) {
13             case XslNodeType.ApplyImports      : return VisitApplyImports    ((XslNode)     node);
14             case XslNodeType.ApplyTemplates    : return VisitApplyTemplates  ((XslNode)     node);
15             case XslNodeType.Attribute         : return VisitAttribute       ((NodeCtor)    node);
16             case XslNodeType.AttributeSet      : return VisitAttributeSet    ((AttributeSet)node);
17             case XslNodeType.CallTemplate      : return VisitCallTemplate    ((XslNode)     node);
18             case XslNodeType.Choose            : return VisitChoose          ((XslNode)     node);
19             case XslNodeType.Comment           : return VisitComment         ((XslNode)     node);
20             case XslNodeType.Copy              : return VisitCopy            ((XslNode)     node);
21             case XslNodeType.CopyOf            : return VisitCopyOf          ((XslNode)     node);
22             case XslNodeType.Element           : return VisitElement         ((NodeCtor)    node);
23             case XslNodeType.Error             : return VisitError           ((XslNode)     node);
24             case XslNodeType.ForEach           : return VisitForEach         ((XslNode)     node);
25             case XslNodeType.If                : return VisitIf              ((XslNode)     node);
26             case XslNodeType.Key               : return VisitKey             ((Key)         node);
27             case XslNodeType.List              : return VisitList            ((XslNode)     node);
28             case XslNodeType.LiteralAttribute  : return VisitLiteralAttribute((XslNode)     node);
29             case XslNodeType.LiteralElement    : return VisitLiteralElement  ((XslNode)     node);
30             case XslNodeType.Message           : return VisitMessage         ((XslNode)     node);
31             case XslNodeType.Nop               : return VisitNop             ((XslNode)     node);
32             case XslNodeType.Number            : return VisitNumber          ((Number)      node);
33             case XslNodeType.Otherwise         : return VisitOtherwise       ((XslNode)     node);
34             case XslNodeType.Param             : return VisitParam           ((VarPar)      node);
35             case XslNodeType.PI                : return VisitPI              ((XslNode)     node);
36             case XslNodeType.Sort              : return VisitSort            ((Sort)        node);
37             case XslNodeType.Template          : return VisitTemplate        ((Template)    node);
38             case XslNodeType.Text              : return VisitText            ((Text)        node);
39             case XslNodeType.UseAttributeSet   : return VisitUseAttributeSet ((XslNode)     node);
40             case XslNodeType.ValueOf           : return VisitValueOf         ((XslNode)     node);
41             case XslNodeType.ValueOfDoe        : return VisitValueOfDoe      ((XslNode)     node);
42             case XslNodeType.Variable          : return VisitVariable        ((VarPar)      node);
43             case XslNodeType.WithParam         : return VisitWithParam       ((VarPar)      node);
44             default                            : return VisitUnknown         ((XslNode)     node);
45             }
46         }
47
48         protected virtual T VisitApplyImports    (XslNode      node) { return VisitChildren( node ); }
49         protected virtual T VisitApplyTemplates  (XslNode      node) { return VisitChildren( node ); }
50         protected virtual T VisitAttribute       (NodeCtor     node) { return VisitChildren( node ); }
51         protected virtual T VisitAttributeSet    (AttributeSet node) { return VisitChildren( node ); }
52         protected virtual T VisitCallTemplate    (XslNode      node) { return VisitChildren( node ); }
53         protected virtual T VisitChoose          (XslNode      node) { return VisitChildren( node ); }
54         protected virtual T VisitComment         (XslNode      node) { return VisitChildren( node ); }
55         protected virtual T VisitCopy            (XslNode      node) { return VisitChildren( node ); }
56         protected virtual T VisitCopyOf          (XslNode      node) { return VisitChildren( node ); }
57         protected virtual T VisitElement         (NodeCtor     node) { return VisitChildren( node ); }
58         protected virtual T VisitError           (XslNode      node) { return VisitChildren( node ); }
59         protected virtual T VisitForEach         (XslNode      node) { return VisitChildren( node ); }
60         protected virtual T VisitIf              (XslNode      node) { return VisitChildren( node ); }
61         protected virtual T VisitKey             (Key          node) { return VisitChildren( node ); }
62         protected virtual T VisitList            (XslNode      node) { return VisitChildren( node ); }
63         protected virtual T VisitLiteralAttribute(XslNode      node) { return VisitChildren( node ); }
64         protected virtual T VisitLiteralElement  (XslNode      node) { return VisitChildren( node ); }
65         protected virtual T VisitMessage         (XslNode      node) { return VisitChildren( node ); }
66         protected virtual T VisitNop             (XslNode      node) { return VisitChildren( node ); }
67         protected virtual T VisitNumber          (Number       node) { return VisitChildren( node ); }
68         protected virtual T VisitOtherwise       (XslNode      node) { return VisitChildren( node ); }
69         protected virtual T VisitParam           (VarPar       node) { return VisitChildren( node ); }
70         protected virtual T VisitPI              (XslNode      node) { return VisitChildren( node ); }
71         protected virtual T VisitSort            (Sort         node) { return VisitChildren( node ); }
72         protected virtual T VisitTemplate        (Template     node) { return VisitChildren( node ); }
73         protected virtual T VisitText            (Text         node) { return VisitChildren( node ); }
74         protected virtual T VisitUseAttributeSet (XslNode      node) { return VisitChildren( node ); }
75         protected virtual T VisitValueOf         (XslNode      node) { return VisitChildren( node ); }
76         protected virtual T VisitValueOfDoe      (XslNode      node) { return VisitChildren( node ); }
77         protected virtual T VisitVariable        (VarPar       node) { return VisitChildren( node ); }
78         protected virtual T VisitWithParam       (VarPar       node) { return VisitChildren( node ); }
79         protected virtual T VisitUnknown         (XslNode      node) { return VisitChildren( node ); }
80
81         protected virtual T VisitChildren(XslNode node) {
82             foreach (XslNode child in node.Content) {
83                 this.Visit(child);
84             }
85             return default(T);
86         }
87     }
88 }