Example #1
0
    public static TSpec Expand(ICommandSpec src)
    {
        if ((src as TSpec)?.Expanded ?? false)
        {
            return(src as TSpec);
        }

        var args      = src.Arguments;
        var expansion = new TSpec
        {
            CommandName = src.CommandName,
            Expanded    = true,
        };

        iter(args, arg =>
        {
            if (ParameterIndex.ContainsKey(arg.Name))
            {
                if ((arg.Value as string) != null)
                {
                    var argExpansion    = ScriptText.SpecifyEnvironmentParameters((string)arg.Value);
                    expansion[arg.Name] = new CommandArgument(arg.Name, argExpansion);
                }
                else
                {
                    expansion[arg.Name] = new CommandArgument(arg.Name, arg.Value);
                }
            }
        });
        return(expansion);
    }
Example #2
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (ResourceName.Length != 0)
            {
                hash ^= ResourceName.GetHashCode();
            }
            if (adGroupCriterion_ != null)
            {
                hash ^= AdGroupCriterion.GetHashCode();
            }
            if (parameterIndex_ != null)
            {
                hash ^= ParameterIndex.GetHashCode();
            }
            if (insertionText_ != null)
            {
                hash ^= InsertionText.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
Example #3
0
        public override ICompilationResult GetResult()
        {
            var results = new Dictionary <ParameterIndex, IExpressionCompilationResult>();

            foreach (var argument in myArgumentList.ArgumentsEnumerable)
            {
                var matchingParameter = argument.MatchingParameter;

                var invocationParamNumber = matchingParameter == null ? 0 :
                                            matchingParameter.Element.ContainingParametersOwner.Parameters.IndexOf(matchingParameter.Element);
                IExpressionCompilationResult res;
                if (MyChildToResult[argument] is IExpressionCompilationResult expressionCompilationResult)
                {
                    res = expressionCompilationResult;
                }
                else
                {
                    res = new ExpressionCompilationResult();
                }
                var index = new ParameterIndex(invocationParamNumber);
                // for params
                if (!results.ContainsKey(index))
                {
                    results.Add(index, res);
                }
            }

            var x = new ArgumentListCompilationResult(results);

            return(x);
        }
    public bool IsMatch(ActionModel actionModel)
    {
        var parameters = actionModel.ActionMethod.GetParameters();
        var offset     = ParameterIndex.GetOffset(parameters.Length);

        if (offset >= 0 && offset < parameters.Length)
        {
            var parameter = parameters[ParameterIndex];
            if (TypeMatch == ApiConventionTypeMatchBehavior.AssignableFrom && Type != null)
            {
                if (Type.IsGenericTypeDefinition)
                {
                    var parameterIs = parameter.ParameterType.IsGenericType && parameter.ParameterType.GetGenericTypeDefinition() == Type;
                    if (!parameterIs)
                    {
                        parameterIs = parameter.ParameterType.GetInterfaces().Any(inter => inter.IsGenericType && inter.GetGenericTypeDefinition() == Type);
                    }
                    if (!parameterIs)
                    {
                        return(false);
                    }
                }
                else if (!Type.IsAssignableFrom(parameter.ParameterType))
                {
                    return(false);
                }
            }

            return(NameMatch switch
            {
                ApiConventionNameMatchBehavior.Exact => Names.Any(name => parameter.Name !.Equals(name, StringComparison.OrdinalIgnoreCase)),
                ApiConventionNameMatchBehavior.Prefix => Names.Any(name => parameter.Name !.StartsWith(name, StringComparison.OrdinalIgnoreCase)),
                ApiConventionNameMatchBehavior.Suffix => Names.Any(name => parameter.Name !.EndsWith(name, StringComparison.OrdinalIgnoreCase)),
                _ => true
            });
Example #5
0
        public StackSymbol(OperationEdge <int> callSite, ResolvedInvocationStatement <Node> invocation)
        {
            CallSite = callSite;
            Owner    = null;

            if (invocation == null)
            {
                return;
            }

            var owner = invocation.TargetEntity;

            if (invocation.IsConstructor)
            {
                var index = new ParameterIndex(-1);
                Owner = invocation.ReturnedValues[index] as ResolvedLocalVariable;
            }
            else if (owner is ResolvedLocalVariable localVariable)
            {
                Owner = localVariable;
            }
            else if (owner is SecondaryEntity justSecondary)
            {
                Owner = Utils.FindClosestLocalOwner(justSecondary);
            }
        }
Example #6
0
        private void ProcessReturn(
            State state,
            GssNode <StackSymbol, EmptyGssData> stack,
            InternalReturnStatement returnStatement)
        {
            if (!(state is ResolvedLocalVariable localState))
            {
                return;
            }

            if (!(stack.Symbol.CallSite.Statement is ResolvedInvocationStatement <Node> callingStatement))
            {
                return;
            }

            if (state.Equals(stack.Symbol.Owner))
            {
                Pop(state, stack.Symbol.CallSite.Target);
                return;
            }

            var returnedValues = callingStatement.ReturnedValues;
            var currentIndex   = new ParameterIndex(localState.LocalId);

            var exists = returnedValues.TryGetValue(currentIndex, out var nextState);

            if (exists)
            {
                Pop(nextState, stack.Symbol.CallSite.Target);
            }
        }
 public override int GetHashCode() {
     int res = ParameterIndex.GetHashCode() ^ ActionIndex.GetHashCode();
     if (Constant != null) {
         if (Constant.Value != null) {
             res ^= Constant.Value.GetHashCode();
         }
     }
     return res;
 }
    public bool IsMatch(ActionModel actionModel)
    {
        var parameters = actionModel.ActionMethod.Parameters;
        var offset     = ParameterIndex.GetOffset(parameters.Length);

        if (offset >= 0 && offset < parameters.Length)
        {
            var parameter = parameters[ParameterIndex];
            if (TypeMatch == ApiConventionTypeMatchBehavior.AssignableFrom && Type != null)
            {
                if (Type.IsGenericType)
                {
 /// <summary>
 ///     Returns a hash code for the <see cref="LSLParameterSignature" /> object.
 ///     The hash code is generated from the parameter Type, Name, ParameterIndex and Variadic status.
 /// </summary>
 /// <returns>The generated hash code.</returns>
 public override int GetHashCode()
 {
     unchecked
     {
         var hash = 17;
         hash = hash * 31 + Type.GetHashCode();
         hash = hash * 31 + Name.GetHashCode();
         hash = hash * 31 + ParameterIndex.GetHashCode();
         hash = hash * 31 + Variadic.GetHashCode();
         return(hash);
     }
 }
Example #10
0
        public override string ToString() {
            if (IsAction) {
                return "Action" + ActionIndex.ToString();
            } else if (IsParameter) {
                return "Parameter" + ParameterIndex.ToString();
            } else {
                object value = Constant.Value;
                if (value == null) {
                    return "(null)";
                }

                return value.ToString();
            }
        }
Example #11
0
        public virtual ActionResult Index(ParameterIndex config)
        {
            if (ModelState.IsValid)
            {
                var c = db.Parameters.First();
                c.MailMessageOrdered = config.MailMessageOrdered;
                c.MailMessagePaid    = config.MailMessagePaid;
                c.MailMessageShipped = config.MailMessageShipped;
                db.SaveChanges();

                return(RedirectToAction("index"));
            }

            // Neu anzeigen mit Fehlern.
            return(View(config));
        }
Example #12
0
    public Option <CommandArgument> this[string argname]
    {
        get
        {
            var value = ParameterIndex.ContainsKey(argname)
                      ? ParameterIndex[argname].Accessor.GetValue(this)
                      : null;

            return(value != null
                ? new CommandArgument(argname, value)
                : none <CommandArgument>());
        }
        set
        {
            ParameterIndex.TryFind(argname).OnSome(parameter
                                                   => parameter.Accessor.SetValue(this, value.MapValueOrDefault(x => x.Value, null)));
        }
    }
Example #13
0
        private static void CombineWhereClauseForFilter(string whereClauseTemplate, ParameterIndex parameterIndex, List <string> whereClauses, List <object> parameters, PropertyInfo property, IFilter filter)
        {
            if (whereClauseTemplate != "{0}")
            {
                whereClauseTemplate = string.Format(whereClauseTemplate, ".{0}");
            }

            FilterShortcutAttribute shortcutAttribute = property.GetCustomAttribute <FilterShortcutAttribute>();

            if (shortcutAttribute == null || string.IsNullOrEmpty(shortcutAttribute.Path))
            {
                whereClauseTemplate = string.Format(whereClauseTemplate, property.Name + "{0}");
            }

            else
            {
                whereClauseTemplate = string.Format(whereClauseTemplate, ComposeWhereClauseTemplateForShortcutAttributePath(shortcutAttribute));
            }

            CombineWhereClauses(filter, whereClauseTemplate, parameterIndex, whereClauses, parameters);
        }
 public void SetParameter(ParameterIndex index, string value)
 {
     savedGame[(int)index] = value;
 }
 public string GetParameter(ParameterIndex index)
 {
     return savedGame[(int)index];
 }
Example #16
0
 protected override void AppendChildren(List <SimpleTreeNode> childList)
 {
     childList.Add(ContainingMember.ToSimpleTree());
     childList.Add(new SimpleLeafNode(ParameterIndex.ToString()));
     childList.Add(new SimpleLeafNode(RQNameStrings.PartialImplementation));
 }
Example #17
0
        private static void CombineWhereClauseForValue(string whereClauseTemplate, ParameterIndex parameterIndex, List <string> whereClauses, List <object> parameters, PropertyInfo property, object value)
        {
            FilterShortcutAttribute shortcutAttribute = property.GetCustomAttribute <FilterShortcutAttribute>();

            if (shortcutAttribute != null && !string.IsNullOrEmpty(shortcutAttribute.Path))
            {
                whereClauseTemplate = string.Format(whereClauseTemplate, ComposeWhereClauseTemplateForShortcutAttributePath(shortcutAttribute));
            }

            string whereClause;

            if (property.Name == "Equals")
            {
                if (value is DateTime)
                {
                    whereClause = string.Format(whereClauseTemplate, $".Date = @{parameterIndex.Value++}");
                }

                else
                {
                    whereClause = string.Format(whereClauseTemplate, $" = @{parameterIndex.Value++}");
                }
            }

            else if (property.Name == "From")
            {
                whereClause = string.Format(whereClauseTemplate, $" >= @{parameterIndex.Value++}");
            }

            else if (property.Name == "To")
            {
                whereClause = string.Format(whereClauseTemplate, $" <= @{parameterIndex.Value++}");
            }

            else if (property.Name == "Contains")
            {
                whereClause = string.Format(whereClauseTemplate, $".Contains(@{parameterIndex.Value++})");
            }

            else
            {
                if (whereClauseTemplate != "{0}")
                {
                    whereClauseTemplate = string.Format(whereClauseTemplate, ".{0}");
                }

                whereClause = string.Format(whereClauseTemplate, $"{property.Name} = @{parameterIndex.Value++}");
            }

            whereClauses.Add(whereClause);

            if (value is DateTime && property.Name == "Equals")
            {
                parameters.Add(((DateTime)value).Date);
            }

            else
            {
                parameters.Add(value);
            }
        }
Example #18
0
        private static void CombineWhereClauses <TEntityFilter>(TEntityFilter filter, string whereClauseTemplate, ParameterIndex parameterIndex, List <string> whereClauses, List <object> parameters) where TEntityFilter : class, IFilter
        {
            foreach (PropertyInfo property in filter.GetType().GetProperties())
            {
                if (IsValue(property))
                {
                    object value = property.GetValue(filter);

                    if (value != null)
                    {
                        CombineWhereClauseForValue(whereClauseTemplate, parameterIndex, whereClauses, parameters, property, value);
                    }
                }

                else if (IsFilter(property))
                {
                    IFilter subFilter = property.GetValue(filter) as IFilter;

                    if (subFilter != null && property.GetCustomAttribute <IgnoreFilterAttribute>() == null)
                    {
                        CombineWhereClauseForFilter(whereClauseTemplate, parameterIndex, whereClauses, parameters, property, subFilter);
                    }
                }
            }
        }
Example #19
0
            public override void Step(SecondaryEntity state, MyGssNode stack, Node position, MyTransition currentTransition)
            {
                if (stack.Symbol.Trampoline)
                {
                    return;
                }

                var statement = currentTransition.Statement;

                switch (statement.Type)
                {
                case StatementType.Internal:
                    var internalStatement = (InternalStatement)statement;

                    ParameterIndex recipientId;
                    bool           exists;
                    switch (internalStatement.InternalType)
                    {
                    case InternalStatementType.ResolvedInvocation:
                        var invocation = (ResolvedInvocationStatement <Node>)internalStatement;
                        exists = invocation.PassedParameters.TryGetValue(state, out recipientId);
                        var scanning = state is UnknownEntity;

                        Skip(state);

                        if (exists || scanning)
                        {
                            if (invocation.TargetEntity is SecondaryEntity variable)
                            {
                                var instances = CollectInstances(
                                    variable,
                                    invocation.TargetMethodId);

                                foreach (var instance in instances.ToList())
                                {
                                    //Logging.Log("dynamic invocation");
                                    if (exists)
                                    {
                                        instance.Variables.TryGetValue(recipientId.Value, out var recipient);
                                        if (recipient != null)
                                        {
                                            Push(recipient, new MyStackData(currentTransition, state, true),
                                                 instance.EntryPoint);
                                            //Logging.Log("recipient is not null");
                                        }
                                        else
                                        {
                                            //Logging.Log($"recipient is null: {myProcessingProgram.GetMethodByStartPoint(instance.EntryPoint)}, {recipientId.Value}");
                                        }
                                    }

                                    if (scanning)
                                    {
                                        Push(state, new MyStackData(currentTransition, state, true), instance.EntryPoint);
                                        instance.MarkAsInvoked();
                                    }
                                }

                                var head = ExtractHead();
                                variable.Subscriptions.OnNewPrimaryAdded +=
                                    newType =>
                                {
                                    myForcedExecutor(head, currentTransition,
                                                     InvocationsReExecutor, newType);
                                };
                            }

                            if (invocation.TargetEntity is ResolvedClassId classId)
                            {
                                var clazz  = myProcessingProgram.FindClassById(classId);
                                var method = clazz.FindMethodInFullHierarchy(invocation.TargetMethodId);

                                if (method != null)
                                {
                                    if (exists)
                                    {
                                        method.Variables.TryGetValue(recipientId.Value, out var recipient);
                                        if (recipient != null)
                                        {
                                            Push(recipient, new MyStackData(currentTransition, state, true),
                                                 method.Start);
                                            //Logging.Log("recipient is not null");
                                        }
                                        else
                                        {
                                            //Logging.Log($"recipient is null: {myProcessingProgram.GetMethodByStartPoint(method.EntryPoint)}, {recipientId.Value}");
                                        }
                                    }

                                    if (scanning)
                                    {
                                        Push(state, new MyStackData(currentTransition, state, true), method.EntryPoint);
                                        method.MarkAsInvoked();
                                    }
                                }
                            }
                        }

                        break;

                    case InternalStatementType.Return:
                        var stackTop = stack.Symbol;
                        if (stackTop.CallingEdge.Statement is NopStatement)
                        {
                            break;
                        }

                        var callingStatement = (ResolvedInvocationStatement <Node>)stackTop.CallingEdge.Statement;

                        if (state is ResolvedLocalVariable localVariable)
                        {
                            var id = new ParameterIndex(localVariable.LocalId);
                            exists = callingStatement.ReturnedValues.TryGetValue(id, out var recipient);
                            if (exists)
                            {
                                Pop(new FakeTrampolineEntity(recipient));
                            }
                        }

                        break;

                    case InternalStatementType.ResolvedAssignment:
                        var assignment = (ResolvedAssignmentStatement)currentTransition.Statement;

                        Skip(state);

                        //Trace.Assert(assignment.Target != null);
                        if (assignment.Target == null)
                        {
                            break;
                        }

                        if (state is UnknownEntity)
                        {
                            if (assignment.Source is PrimaryEntity primary)
                            {
                                assignment.Target.AddPrimary(primary);
                                Accept(assignment.Target);
                            }
                            else
                            {
                                ((SecondaryEntity)assignment.Source).PropagateForward(assignment.Target);
                                if (assignment.Target is ResolvedLocalVariable)
                                {
                                    Accept(assignment.Target);
                                }
                            }
                        }

                        /*
                         * if ((assignment.Source is ResolvedObjectField ||
                         *   assignment.Source is ResolvedClassField ||
                         *   assignment.Source is ResolvedObjectMethodReference<Node>) &&
                         *  state is UnknownEntity)
                         * {
                         *  var asSecondary = (SecondaryEntity) assignment.Source;
                         *  asSecondary.PropagateForward(assignment.Target);
                         *  Accept(assignment.Target);
                         * }
                         */

                        if (ReferenceEquals(assignment.Source, state))
                        {
                            Accept(assignment.Target);
                        }

                        break;
                    }
                    break;

                default:
                    Skip(state);
                    break;
                }
            }