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); }
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> (); }
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); }
public bool IsSizeof(E expr, out TypeNode type) { return(VisitorForSizeOf <V, E> .IsSizeOf(expr, out type, this)); }