Пример #1
0
        public static bool IsSizeOf(E expr, out TypeNode type, FullExpressionDecoder <V, E> decoder)
        {
            VisitorForSizeOf <V, E> v = decoder.SizeOfVisitor;
            bool res = Decode(expr, v, decoder);

            type = v.result;
            return(res);
        }
Пример #2
0
 public FullExpressionDecoder(IMetaDataProvider metaDataProvider, IExpressionContextProvider <E, V> contextProvider)
 {
     ContextProvider                = contextProvider;
     this.MetaDataProvider          = metaDataProvider;
     this.VariableVisitor           = new VisitorForVariable <V, E> ();
     this.UnderlyingVariableVisitor = new VisitorForUnderlyingVariable <V, E> ();
     this.UnaryExpressionVisitor    = new VisitorForIsUnaryExpression <V, E> ();
     this.BinaryExpressionVisitor   = new VisitorForIsBinaryExpression <V, E> ();
     this.VariablesInVisitor        = new VisitorForVariablesIn <V, E> (contextProvider);
     this.ValueOfVisitor            = new VisitorForValueOf <V, E> ();
     this.SizeOfVisitor             = new VisitorForSizeOf <V, E> ();
     this.IsInstVisitor             = new VisitorForIsInst <V, E> ();
     this.IsNullVisitor             = new VisitorForIsNull <V, E> ();
 }
Пример #3
0
        private bool TrySizeOf(E expr, out int sizeAsConstant)
        {
            TypeNode type;

            if (VisitorForSizeOf <V, E> .IsSizeOf(expr, out type, this))
            {
                int size = this.MetaDataProvider.TypeSize(type);
                if (size != -1)
                {
                    sizeAsConstant = size;
                    return(true);
                }
            }

            sizeAsConstant = -1;
            return(false);
        }
Пример #4
0
 public bool IsSizeof(E expr, out TypeNode type)
 {
     return(VisitorForSizeOf <V, E> .IsSizeOf(expr, out type, this));
 }