AppendItemToList() публичный Метод

public AppendItemToList ( EXPR newItem, EXPR &first, EXPR &last ) : void
newItem EXPR
first EXPR
last EXPR
Результат void
Пример #1
0
        private Expr GenerateArgsList(Expr oldArgs)
        {
            Expr newArgs     = null;
            Expr newArgsTail = newArgs;

            for (ExpressionIterator it = new ExpressionIterator(oldArgs); !it.AtEnd(); it.MoveNext())
            {
                Expr oldArg = it.Current();
                ExprFactory.AppendItemToList(Visit(oldArg), ref newArgs, ref newArgsTail);
            }
            return(newArgs);
        }
Пример #2
0
        public static EXPR Map(this EXPR expr, ExprFactory factory, Func<EXPR, EXPR> f)
        {
            Debug.Assert(f != null);
            Debug.Assert(factory != null);

            if (expr == null)
                return f(expr);

            EXPR result = null;
            EXPR tail = null;
            foreach (EXPR item in expr.ToEnumerable())
            {
                EXPR mappedItem = f(item);
                factory.AppendItemToList(mappedItem, ref result, ref tail);
            }
            return result;
        }
Пример #3
0
        public static Expr Map(this Expr expr, Func <Expr, Expr> f)
        {
            Debug.Assert(f != null);

            if (expr == null)
            {
                return(f(null));
            }

            Expr result = null;
            Expr tail   = null;

            foreach (Expr item in expr.ToEnumerable())
            {
                Expr mappedItem = f(item);
                ExprFactory.AppendItemToList(mappedItem, ref result, ref tail);
            }
            return(result);
        }
Пример #4
0
        private Expr GenerateIndexList(Expr oldIndices)
        {
            CType intType = symbolLoader.GetPredefindType(PredefinedType.PT_INT);

            Expr newIndices     = null;
            Expr newIndicesTail = newIndices;

            for (ExpressionIterator it = new ExpressionIterator(oldIndices); !it.AtEnd(); it.MoveNext())
            {
                Expr newIndex = it.Current();
                if (newIndex.Type != intType)
                {
                    newIndex        = expressionFactory.CreateCast(EXPRFLAG.EXF_INDEXEXPR, intType, newIndex);
                    newIndex.Flags |= EXPRFLAG.EXF_CHECKOVERFLOW;
                }
                Expr rewrittenIndex = Visit(newIndex);
                expressionFactory.AppendItemToList(rewrittenIndex, ref newIndices, ref newIndicesTail);
            }
            return(newIndices);
        }
Пример #5
0
        public static EXPR Map(this EXPR expr, ExprFactory factory, Func <EXPR, EXPR> f)
        {
            Debug.Assert(f != null);
            Debug.Assert(factory != null);

            if (expr == null)
            {
                return(f(expr));
            }

            EXPR result = null;
            EXPR tail   = null;

            foreach (EXPR item in expr.ToEnumerable())
            {
                EXPR mappedItem = f(item);
                factory.AppendItemToList(mappedItem, ref result, ref tail);
            }
            return(result);
        }