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)); }
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); }
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); } }
public bool IsSizeOf(Expression exp, out Type type) { return(VisitorForSizeOf.IsSizeOf(exp, out type, this)); }