Beispiel #1
0
                    public static bool IsSizeOf(Expression exp, out Type type, Decoder decoder)
                    {
                        VisitorForSizeOf visitor = decoder.visitorForSizeOf;
                        bool             result  = Decode(exp, visitor, decoder);

                        type = visitor.Type;
                        return(result);
                    }
        public bool TrySizeOf(TExpr expr, out int size)
        {
            TypeNode type;

            if (VisitorForSizeOf <TVar, TExpr> .IsSizeOf(expr, out type, this))
            {
                size = MetaDataProvider.TypeSize(type);
                return(size != -1);
            }

            return(false.Without(out size));
        }
Beispiel #3
0
                public Decoder(IExpressionContext <Local, Parameter, Method, Field, Type, Expression, Variable> context,
                               IDecodeMetaData <Local, Parameter, Method, Field, Property, Event, Type, Attribute, Assembly> decoderForMetaData)
                {
                    Contract.Requires(context != null);

                    this.context            = context;
                    this.decoderForMetaData = decoderForMetaData;

                    visitorForIsUnaryExpression  = new VisitorForIsUnaryExpression();
                    visitorForIsBinaryExpression = new VisitorForIsBinaryExpression();
                    visitorForVariablesIn        = new VisitorForVariablesIn(context);
                    visitorForValueOf            = new VisitorForValueOf();
                    visitorForSizeOf             = new VisitorForSizeOf();
                    visitorForIsNull             = new VisitorForIsNull();
                    visitorForVariable           = new VisitorForVariable();
                    visitorForIsInst             = new VisitorForIsInst();
                    visitorForUnderlyingVariable = new VisitorForUnderlyingVariable();
                    visitorForDispatch           = new VisitorForDispatch(this);
                }
Beispiel #4
0
                public bool TrySizeOf(Expression exp, out int value)
                {
                    Type type;

                    if (VisitorForSizeOf.IsSizeOf(exp, out type, this))
                    {
                        int size = this.decoderForMetaData.TypeSize(type);
                        if (size != -1)
                        {
                            value = size;
                            return(true);
                        }
                        else
                        {
                            value = -1;
                            return(false);
                        }
                    }
                    else
                    {
                        value = -1;
                        return(false);
                    }
                }
Beispiel #5
0
 public bool IsSizeOf(Expression exp, out Type type)
 {
     return(VisitorForSizeOf.IsSizeOf(exp, out type, this));
 }