Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.Entity / System / Data / Common / EntitySql / ParserOptions.cs
1 //---------------------------------------------------------------------
2 // <copyright file="ParserOptions.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
11 {
12     using System;
13     using System.Globalization;
14   
15     /// <summary>
16     /// Represents eSQL compilation options.
17     /// </summary>
18     internal sealed class ParserOptions
19     {
20         internal enum CompilationMode
21         {
22             /// <summary>
23             /// Normal mode. Compiles eSQL command without restrictions.
24             /// Name resolution is case-insensitive (eSQL default).
25             /// </summary>
26             NormalMode,
27
28             /// <summary>
29             /// View generation mode: optimizes compilation process to ignore uncessary eSQL constructs:
30             ///     - GROUP BY, HAVING and ORDER BY clauses are ignored.
31             ///     - WITH RELATIONSHIP clause is allowed in type constructors.
32             ///     - Name resolution is case-sensitive.
33             /// </summary>
34             RestrictedViewGenerationMode,
35
36             /// <summary>
37             /// Same as CompilationMode.Normal plus WITH RELATIONSHIP clause is allowed in type constructors.
38             /// </summary>
39             UserViewGenerationMode
40         }
41
42         /// <summary>
43         /// Sets/Gets eSQL parser compilation mode.
44         /// </summary>
45         internal CompilationMode ParserCompilationMode;
46
47         internal StringComparer NameComparer
48         {
49             get
50             {
51                 return this.NameComparisonCaseInsensitive ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal;
52             }
53         }
54
55         internal bool NameComparisonCaseInsensitive
56         {
57             get
58             {
59                 return this.ParserCompilationMode == CompilationMode.RestrictedViewGenerationMode ? false : true;
60             }
61         }
62     }
63 }