Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Common / EntitySql / AST / CreateRefExpr.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="CreateRefExpr.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 CREATEREF(entitySet, keys) expression.
19     /// </summary>
20     internal sealed class CreateRefExpr : Node
21     {
22         private readonly Node _entitySet;
23         private readonly Node _keys;
24         private readonly Node _typeIdentifier;
25
26         /// <summary>
27         /// Initializes CreateRefExpr.
28         /// </summary>
29         /// <param name="entitySet">expression representing the entity set</param>
30         internal CreateRefExpr(Node entitySet, Node keys) : this(entitySet, keys, null)
31         { }
32
33         /// <summary>
34         /// Initializes CreateRefExpr.
35         /// </summary>
36         internal CreateRefExpr(Node entitySet, Node keys, Node typeIdentifier)
37         {
38             _entitySet = entitySet;
39             _keys = keys;
40             _typeIdentifier = typeIdentifier;
41         }
42
43         /// <summary>
44         /// Returns the expression for the entity set.
45         /// </summary>
46         internal Node EntitySet
47         {
48             get { return _entitySet; }
49         }
50
51         /// <summary>
52         /// Returns the expression for the keys.
53         /// </summary>
54         internal Node Keys
55         {
56             get { return _keys; }
57         }
58
59         /// <summary>
60         /// Gets optional typeidentifier. May be null.
61         /// </summary>
62         internal Node TypeIdentifier
63         {
64             get { return _typeIdentifier; }
65         }
66     }
67
68     /// <summary>
69     /// Represents KEY(expr) expression.
70     /// </summary>
71     internal class KeyExpr : Node
72     {
73         private readonly Node _argExpr;
74
75         /// <summary>
76         /// Initializes KEY expression.
77         /// </summary>
78         internal KeyExpr(Node argExpr)
79         {
80             _argExpr = argExpr;
81         }
82
83         /// <summary>
84         /// Returns KEY argument expression.
85         /// </summary>
86         internal Node ArgExpr
87         {
88             get { return _argExpr; }
89         }
90     }
91 }