示例#1
0
 void GetLoopInvariants(LoopStmt loop, Method method)
 {
     foreach (var invariant in loop.Invariants)
     {
         _allRemovableTypes.AddInvariant(new Wrap <MaybeFreeExpression>(invariant, loop.Invariants), method);
     }
 }
示例#2
0
        public List <Tuple <MaybeFreeExpression, MaybeFreeExpression> > GetSimplifiedInvariants()
        {
            var simplifier        = new Simplifier(Program);
            var wrappedInvariants = simplifier.GetSimplifiedItems(AllRemovableTypes.Invariants);
            var invariants        = new List <Tuple <MaybeFreeExpression, MaybeFreeExpression> >();

            foreach (var wrappedInvariant in wrappedInvariants)
            {
                AllRemovableTypes.AddInvariant(wrappedInvariant.Item2, AllRemovableTypes.FindMemberFromInvariantWrap(wrappedInvariant.Item1));
                AllRemovableTypes.RemoveInvariant(wrappedInvariant.Item1);
                invariants.Add(new Tuple <MaybeFreeExpression, MaybeFreeExpression>(wrappedInvariant.Item1.Removable, wrappedInvariant.Item2.Removable));
            }
            return(invariants);
        }