Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Emitter.cs « Emitters « EntityModel « Data « System « System.Data.Entity.Design « referencesource « class « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: aad4ff051ff345a0cde7af5fa10ea14e3c78fb22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
//---------------------------------------------------------------------
// <copyright file="Emitter.cs" company="Microsoft">
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//
// @owner       [....]
// @backupOwner [....]
//---------------------------------------------------------------------

using System;
using System.CodeDom;
using System.Diagnostics;
using System.Data.EntityModel.SchemaObjectModel;




namespace System.Data.EntityModel.Emitters
{
    /// <summary>
    /// 
    /// </summary>
    internal abstract class Emitter
    {
        #region Instance Fields
        private ClientApiGenerator _generator = null;
        #endregion

        #region Static Fields
        private static CodeExpression _nullExpression = null;
        private static CodeExpression _thisRef = null;

        /// <summary>Name of property used to get StorageContext from an Entity</summary>
        private const string EntityGetContextPropertyName = "Context";
        /// <summary>Name of property used to get StorageContext from a StorageSearcher</summary>
        protected const string SearcherGetContextPropertyName = "Context";
        #endregion

        #region Protected Methods
        /// <summary>
        /// 
        /// </summary>
        /// <param name="generator"></param>
        protected Emitter(ClientApiGenerator generator)
        {
            Generator = generator;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        protected static CodeBinaryOperatorExpression EmitExpressionEqualsNull(CodeExpression expression)
        {
            return new CodeBinaryOperatorExpression(expression, CodeBinaryOperatorType.IdentityEquality, NullExpression);
        }

        protected static CodeBinaryOperatorExpression EmitExpressionDoesNotEqualNull(CodeExpression expression)
        {
            return new CodeBinaryOperatorExpression(expression, CodeBinaryOperatorType.IdentityInequality, NullExpression);
        }

        internal static CodeExpression EmitEnumMemberExpression(CodeTypeReference type, string member)
        {
            CodeTypeReferenceExpression typeref = new CodeTypeReferenceExpression(type);
            return new CodeFieldReferenceExpression(typeref, member);
        }
        #endregion

        #region Protected Properties
        /// <summary>
        /// 
        /// </summary>
        protected static CodeExpression ThisRef
        {
            get
            {
                if (_thisRef == null)
                    _thisRef = new CodeThisReferenceExpression();
                return _thisRef;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        internal ClientApiGenerator Generator
        {
            get
            {
                return _generator;
            }
            private set
            {
                _generator = value;
            }
        }

        protected TypeReference TypeReference
        {
            get
            {
                return _generator.TypeReference;
            }
        }

        protected AttributeEmitter AttributeEmitter
        {
            get { return _generator.AttributeEmitter; }
        }

        protected static CodeExpression NullExpression
        {
            get
            {
                if (_nullExpression == null)
                    _nullExpression = new CodePrimitiveExpression(null);

                return _nullExpression;

            }
        }

        #endregion
    }
}