Exemplo n.º 1
0
        /// <summary>
        /// Substitutes arguments according to specified substitutions.
        /// </summary>
        /// <param name="substitutions">The substitutions.</param>
        /// <returns>CallEditInfo.</returns>
        internal CallEditInfo Substitute(Dictionary <Instance, VariableName> substitutions)
        {
            var args = new List <object>(CallArguments.Length);

            foreach (var arg in CallArguments)
            {
                args.Add(subsitute(arg, substitutions));
            }

            var call = new CallEditInfo(
                subsitute(ThisObj, substitutions), CallName, IsExtensionCall, args.ToArray()
                );

            call.ReturnName = ReturnName;

            return(call);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Prepends the call before given block.
        /// </summary>
        /// <param name="block">The block.</param>
        /// <param name="call">The prepended call.</param>
        public void PrependCall(ExecutedBlock block, CallEditInfo call)
        {
            var prependTransform = block.Info.BlockTransformProvider.PrependCall(call);

            Apply(prependTransform);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Add described call after current instruction block.
 /// </summary>
 /// <param name="call">Definition of created call.</param>
 /// <returns>Call creation transformation.</returns>
 public abstract Transformation AppendCall(CallEditInfo call);
Exemplo n.º 4
0
 public override Transformation AppendCall(CallEditInfo call)
 {
     return(new EmptyTransformation());
 }