コード例 #1
0
        public HashSet <string> NamesForType(ITypeReference type, HashSet <IExpression> exprs)
        {
            Contract.Requires(type != null);
            Contract.Requires(exprs != null);
            Contract.Requires(InstanceExpressions.ContainsKey(type));
            Contract.Ensures(Contract.ForAll(Contract.Result <HashSet <string> >(), n => NameTable.ContainsValue(n)));

            return(new HashSet <string>(Names(InstanceExpressions[type].Intersect(exprs))));
        }
コード例 #2
0
        public HashSet <string> InstanceNames(INamedTypeDefinition type)
        {
            Contract.Requires(type != null);
            Contract.Ensures(Contract.Result <HashSet <string> >() != null);
            Contract.Ensures((!InstanceExpressions.ContainsKey(type)).Implies(Contract.Result <HashSet <string> >().Count == 0));
            Contract.Ensures(Contract.ForAll(Contract.Result <HashSet <string> >(), n => NameTable.ContainsValue(n)));

            return(InstanceExpressions.ContainsKey(type) ?
                   new HashSet <string>(InstanceExpressions[type].Select(x => NameTable[x])) :
                   new HashSet <string>());
        }
コード例 #3
0
        private void AddInstanceExpr(ITypeReference type, IExpression expr)
        {
            Contract.Requires(type != null);
            Contract.Requires(expr != null);
            Contract.Ensures(InstanceExpressions.ContainsKey(type));
            Contract.Ensures(InstanceExpressions[type].Contains(expr));
            Contract.Ensures(InstanceExpressionsReferredTypes.ContainsKey(expr));
            Contract.Ensures(InstanceExpressionsReferredTypes[expr] == type);

            if (!InstanceExpressions.ContainsKey(type))
            {
                InstanceExpressions.Add(type, new HashSet <IExpression>());
            }
            InstanceExpressions[type].Add(expr);

            if (!InstanceExpressionsReferredTypes.ContainsKey(expr))
            {
                InstanceExpressionsReferredTypes.Add(expr, type);
            }
            else
            {
                Debug.Assert(InstanceExpressionsReferredTypes[expr] == type);
            }
        }