Update Reference Sources to .NET Framework 4.6.1
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Query / InternalTrees / AncillaryOps.cs
1 //---------------------------------------------------------------------
2 // <copyright file="AnciliaryOps.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner  [....]
7 // @backupOwner [....]
8 //---------------------------------------------------------------------
9
10 using System;
11 using System.Collections.Generic;
12 using System.Diagnostics;
13 using System.Globalization;
14
15 namespace System.Data.Query.InternalTrees
16 {
17     /// <summary>
18     /// A definition of a variable
19     /// </summary>
20     internal sealed class VarDefOp : AncillaryOp
21     {
22         #region private state
23         private Var m_var;
24         #endregion
25
26         #region constructors
27         internal VarDefOp(Var v) : this()
28         { 
29             m_var = v; 
30         }
31         private VarDefOp() : base(OpType.VarDef) { }
32         #endregion
33
34         #region public methods
35         internal static readonly VarDefOp Pattern = new VarDefOp();
36
37         /// <summary>
38         /// 1 child - the defining expression
39         /// </summary>
40         internal override int Arity { get { return 1; } }
41
42         /// <summary>
43         /// The Var being defined
44         /// </summary>
45         internal Var Var { get { return m_var; } }
46
47         /// <summary>
48         /// Visitor pattern method
49         /// </summary>
50         /// <param name="v">The BasicOpVisitor that is visiting this Op</param>
51         /// <param name="n">The Node that references this Op</param>
52         [DebuggerNonUserCode]
53         internal override void Accept(BasicOpVisitor v, Node n) { v.Visit(this, n); }
54         
55         /// <summary>
56         /// Visitor pattern method for visitors with a return value
57         /// </summary>
58         /// <param name="v">The visitor</param>
59         /// <param name="n">The node in question</param>
60         /// <returns>An instance of TResultType</returns>
61         [DebuggerNonUserCode]
62         internal override TResultType Accept<TResultType>(BasicOpVisitorOfT<TResultType> v, Node n) { return v.Visit(this, n); }
63         #endregion
64     }
65
66     /// <summary>
67     /// Helps define a list of VarDefOp
68     /// </summary>
69     internal sealed class VarDefListOp : AncillaryOp
70     {
71         #region constructors
72         private VarDefListOp() : base(OpType.VarDefList) { }
73         #endregion
74
75         #region public methods
76         /// <summary>
77         /// singleton instance
78         /// </summary>
79         internal static readonly VarDefListOp Instance = new VarDefListOp();
80         internal static readonly VarDefListOp Pattern = Instance;
81
82         /// <summary>
83         /// Visitor pattern method
84         /// </summary>
85         /// <param name="v">The BasicOpVisitor that is visiting this Op</param>
86         /// <param name="n">The Node that references this Op</param>
87         [DebuggerNonUserCode]
88         internal override void Accept(BasicOpVisitor v, Node n) { v.Visit(this, n); }
89         
90         /// <summary>
91         /// Visitor pattern method for visitors with a return value
92         /// </summary>
93         /// <param name="v">The visitor</param>
94         /// <param name="n">The node in question</param>
95         /// <returns>An instance of TResultType</returns>
96         [DebuggerNonUserCode]
97         internal override TResultType Accept<TResultType>(BasicOpVisitorOfT<TResultType> v, Node n) { return v.Visit(this, n); }
98         #endregion
99     }
100 }