Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Common / EntitySql / AST / CaseExpr.cs
1 //---------------------------------------------------------------------
2 // <copyright file="CaseExpr.cs" company="Microsoft">
3 //      Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 //
6 // @owner  Microsoft
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
9
10 namespace System.Data.Common.EntitySql.AST
11 {
12     using System;
13     using System.Globalization;
14     using System.Collections;
15     using System.Collections.Generic;
16
17     /// <summary>
18     /// Represents the Seached Case Expression - CASE WHEN THEN [ELSE] END.
19     /// </summary>
20     internal sealed class CaseExpr : Node
21     {
22         private readonly NodeList<WhenThenExpr> _whenThenExpr;
23         private readonly Node _elseExpr;
24
25         /// <summary>
26         /// Initializes case expression without else sub-expression.
27         /// </summary>
28         /// <param name="whenThenExpr">whenThen expression list</param>
29         internal CaseExpr(NodeList<WhenThenExpr> whenThenExpr)
30             : this(whenThenExpr, null)
31         {
32         }
33
34         /// <summary>
35         /// Initializes case expression with else sub-expression.
36         /// </summary>
37         /// <param name="whenThenExpr">whenThen expression list</param>
38         /// <param name="elseExpr">else expression</param>
39         internal CaseExpr(NodeList<WhenThenExpr> whenThenExpr, Node elseExpr)
40         {
41             _whenThenExpr = whenThenExpr;
42             _elseExpr = elseExpr;
43         }
44
45         /// <summary>
46         /// Returns the list of WhenThen expressions.
47         /// </summary>
48         internal NodeList<WhenThenExpr> WhenThenExprList
49         {
50             get { return _whenThenExpr; }
51         }
52
53         /// <summary>
54         /// Returns the optional Else expression.
55         /// </summary>
56         internal Node ElseExpr
57         {
58             get { return _elseExpr; }
59         }
60     }
61
62     /// <summary>
63     /// Represents the when then sub expression.
64     /// </summary>
65     internal class WhenThenExpr : Node
66     {
67         private readonly Node _whenExpr;
68         private readonly Node _thenExpr;
69
70         /// <summary>
71         /// Initializes WhenThen sub-expression.
72         /// </summary>
73         /// <param name="whenExpr">When expression</param>
74         /// <param name="thenExpr">Then expression</param>
75         internal WhenThenExpr(Node whenExpr, Node thenExpr)
76         {
77             _whenExpr = whenExpr;
78             _thenExpr = thenExpr;
79         }
80
81         /// <summary>
82         /// Returns When expression.
83         /// </summary>
84         internal Node WhenExpr
85         {
86             get { return _whenExpr; }
87         }
88
89         /// <summary>
90         /// Returns Then Expression.
91         /// </summary>
92         internal Node ThenExpr
93         {
94             get { return _thenExpr; }
95         }
96     }
97 }