1 //---------------------------------------------------------------------
2 // <copyright file="ConstantProjectedSlot.cs" company="Microsoft">
3 // Copyright (c) Microsoft Corporation. All rights reserved.
7 // @backupOwner Microsoft
8 //---------------------------------------------------------------------
10 using System.Data.Mapping.ViewGeneration.CqlGeneration;
11 using System.Collections.Generic;
13 using System.Diagnostics;
14 using System.Data.Common.CommandTrees;
15 using System.Data.Common.CommandTrees.ExpressionBuilder;
17 namespace System.Data.Mapping.ViewGeneration.Structures
20 /// A constant that can be projected in a cell query.
22 internal sealed class ConstantProjectedSlot : ProjectedSlot
26 /// Creates a slot with constant value being <paramref name="value"/>.
28 internal ConstantProjectedSlot(Constant value, MemberPath memberPath)
30 Debug.Assert(value != null);
31 Debug.Assert(value.IsNotNull() == false, "Cannot store NotNull in a slot - NotNull is only for conditions");
33 m_memberPath = memberPath;
41 private readonly Constant m_constant;
42 private readonly MemberPath m_memberPath;
47 /// Returns the value stored in this constant.
49 internal Constant CellConstant
51 get { return m_constant; }
57 internal override ProjectedSlot DeepQualify(CqlBlock block)
59 return this; // Nothing to create
62 internal override StringBuilder AsEsql(StringBuilder builder, MemberPath outputMember, string blockAlias, int indentLevel)
64 return m_constant.AsEsql(builder, outputMember, blockAlias);
67 internal override DbExpression AsCqt(DbExpression row, MemberPath outputMember)
69 return m_constant.AsCqt(row, outputMember);
72 protected override bool IsEqualTo(ProjectedSlot right)
74 ConstantProjectedSlot rightSlot = right as ConstantProjectedSlot;
75 if (rightSlot == null)
79 return Constant.EqualityComparer.Equals(m_constant, rightSlot.m_constant);
82 protected override int GetHash()
84 return Constant.EqualityComparer.GetHashCode(m_constant);
87 internal override void ToCompactString(StringBuilder builder)
89 m_constant.ToCompactString(builder);