Esempio n. 1
0
        /// <summary>
        /// Clones the instance using special context and returns cloned instance.
        /// </summary>
        /// <param name="context">Special context for providing references continuity.</param>
        /// <returns>Cloned instance.</returns>
        public BindingVariables Clone(Dictionary <object, object> context)
        {
            if (context.ContainsKey(this))
            {
                return((BindingVariables)context[this]);
            }

            var result = new BindingVariables();

            context[this] = result;

            result._source   = _source.Select(p => p.Clone(context)).ToList();
            result._varsDict = _varsDict.ToDictionary(p => p.Key.Clone(context), p => p.Value.Clone(context));

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Clones the instance using special context and returns cloned instance.
        /// </summary>
        /// <param name="context">Special context for providing references continuity.</param>
        /// <returns>Cloned instance.</returns>
        public InlineTrigger Clone(Dictionary <object, object> context)
        {
            if (context.ContainsKey(this))
            {
                return((InlineTrigger)context[this]);
            }

            var result = new InlineTrigger();

            context[this] = result;

            result.Kind = Kind;
            result.KindOfSystemEvent = KindOfSystemEvent;
            result.Condition         = Condition?.Clone(context);
            result.BindingVariables  = BindingVariables.Clone(context);
            result.Statements        = Statements.Select(p => p.CloneAstStatement(context)).ToList();

            result.CodeEntity           = CodeEntity.Clone(context);
            result.CompiledFunctionBody = CompiledFunctionBody.Clone(context);
            result.AppendAnnotations(this, context);

            return(result);
        }