public abstract class Expr extends java.lang.Object implements VersionProvider, android.databinding.tool.processing.scopes.LocationScopeProvider
Modifier and Type | Field and Description |
---|---|
protected static java.lang.String |
KEY_END |
protected static java.lang.String |
KEY_JOIN |
protected static java.lang.String |
KEY_JOIN_END |
protected static java.lang.String |
KEY_JOIN_START |
protected static java.lang.String |
KEY_START |
protected java.util.List<Expr> |
mChildren |
static int |
NO_ID |
Modifier and Type | Method and Description |
---|---|
protected java.util.List<ExecutionPath> |
addJustMeToExecutionPath(java.util.List<ExecutionPath> paths) |
void |
addLocation(android.databinding.tool.store.Location location) |
protected java.lang.String |
asPackage() |
void |
assertIsInvertible() |
boolean |
canBeEvaluatedToAVariable() |
boolean |
canBeInvalidated() |
abstract Expr |
cloneToModel(ExprModel model) |
protected static java.util.List<Expr> |
cloneToModel(ExprModel model,
java.util.List<Expr> exprs) |
protected abstract java.lang.String |
computeUniqueKey() |
boolean |
considerElevatingConditionals(Expr justRead) |
protected abstract java.util.List<Dependency> |
constructDependencies() |
protected java.util.List<Dependency> |
constructDynamicChildrenDependencies()
Creates a dependency for each dynamic child.
|
void |
enableDirectInvalidation() |
protected abstract android.databinding.tool.writer.KCode |
generateCode() |
Expr |
generateInverse(ExprModel model,
Expr value,
java.lang.String bindingClassName) |
protected android.databinding.tool.expr.Expr.Node |
getAllCalculationPaths()
All flag paths that will result in calculation of this expression.
|
java.util.List<Expr> |
getChildren() |
java.lang.String |
getDefaultValue() |
java.util.List<Dependency> |
getDependants() |
java.util.List<Dependency> |
getDependencies() |
int |
getId() |
java.util.BitSet |
getInvalidFlags() |
protected abstract java.lang.String |
getInvertibleError() |
java.util.List<android.databinding.tool.store.Location> |
getLocations() |
ExprModel |
getModel() |
java.util.List<Expr> |
getParents() |
protected java.util.BitSet |
getPredicateInvalidFlags() |
java.util.BitSet |
getReadSoFar() |
int |
getRequirementFlagIndex(boolean expectedOutput)
This is called w/ a dependency of mine.
|
int |
getRequirementId() |
ModelClass |
getResolvedType() |
java.util.BitSet |
getShouldReadFlags() |
java.util.BitSet |
getShouldReadFlagsWithConditionals() |
java.lang.String |
getUniqueKey()
Returns a unique string key that can identify this expression.
|
int |
getVersion() |
boolean |
hasConditionalDependant()
This expression is the predicate for 1 or more ternary expressions.
|
boolean |
hasId() |
boolean |
hasNestedCannotRead() |
protected abstract void |
injectSafeUnboxing(ModelAnalyzer modelAnalyzer,
ExprModel model)
Called after experiment model is sealed to avoid NPE problems caused by boxed primitives.
|
void |
invalidateReadFlags() |
boolean |
isBindingExpression() |
boolean |
isConditional() |
boolean |
isDynamic()
Whether the result of this expression can change or not.
|
boolean |
isEqualityCheck() |
boolean |
isIsUsedInCallback() |
boolean |
isObservable() |
boolean |
isRead() |
boolean |
isUsed() |
protected static java.lang.String |
join(java.util.List<?> vals) |
protected static java.lang.String |
join(java.lang.Object... vals) |
void |
markAsBindingExpression() |
boolean |
markAsReadIfDone() |
void |
markAsUsed() |
void |
markAsUsedInCallback() |
void |
markFlagsAsRead(java.util.BitSet flags) |
void |
onSwappedWith(Expr existing) |
java.util.List<android.databinding.tool.store.Location> |
provideScopeLocation() |
boolean |
recursivelyInjectSafeUnboxing(ModelAnalyzer modelAnalyzer,
ExprModel model) |
protected void |
resetResolvedType() |
Expr |
resolveListeners(ModelClass valueType,
Expr parent) |
Expr |
resolveTwoWayExpressions(Expr parent) |
protected abstract ModelClass |
resolveType(ModelAnalyzer modelAnalyzer) |
void |
safeUnboxChild(ExprModel model,
Expr child)
Tries to create a safe unbox method for the given expression.
|
void |
setId(int id) |
void |
setModel(ExprModel model) |
void |
setRequirementId(int requirementId) |
void |
setUnwrapObservableFields(boolean unwrapObservableFields) |
boolean |
shouldReadNow(java.util.List<Expr> justRead)
Used by code generation
|
android.databinding.tool.writer.KCode |
toCode() |
java.util.List<ExecutionPath> |
toExecutionPath(ExecutionPath path) |
java.util.List<ExecutionPath> |
toExecutionPath(java.util.List<ExecutionPath> paths) |
protected java.util.List<ExecutionPath> |
toExecutionPathInOrder(java.util.List<ExecutionPath> paths,
Expr... order) |
protected java.util.List<ExecutionPath> |
toExecutionPathInOrder(java.util.List<ExecutionPath> paths,
java.util.List<Expr> order) |
android.databinding.tool.writer.KCode |
toFullCode() |
java.lang.String |
toString() |
void |
trimShouldReadFlags(java.util.BitSet bitSet) |
Expr |
unwrapObservableField() |
void |
updateExpr(ModelAnalyzer modelAnalyzer) |
public static final int NO_ID
protected java.util.List<Expr> mChildren
protected static final java.lang.String KEY_JOIN
protected static final java.lang.String KEY_JOIN_START
protected static final java.lang.String KEY_JOIN_END
protected static final java.lang.String KEY_START
protected static final java.lang.String KEY_END
public int getId()
public void setId(int id)
public void addLocation(android.databinding.tool.store.Location location)
public java.util.List<android.databinding.tool.store.Location> getLocations()
public ExprModel getModel()
public java.util.BitSet getInvalidFlags()
public void markAsBindingExpression()
public boolean isBindingExpression()
public boolean canBeEvaluatedToAVariable()
public boolean isObservable()
public void setUnwrapObservableFields(boolean unwrapObservableFields)
public Expr resolveListeners(ModelClass valueType, Expr parent)
public void safeUnboxChild(ExprModel model, Expr child)
Sometimes, the child might be just any object (especially returned from bracket expressions where any value type might be unknown). In this case, child stays instact.
model
- ExprModelchild
- The child that will be replaced with a safe unbox call.protected void resetResolvedType()
public java.util.BitSet getShouldReadFlags()
public java.util.BitSet getShouldReadFlagsWithConditionals()
public void setModel(ExprModel model)
public void onSwappedWith(Expr existing)
public java.util.List<Expr> getChildren()
public java.util.List<Expr> getParents()
public boolean isDynamic()
public final ModelClass getResolvedType()
public final java.util.List<ExecutionPath> toExecutionPath(ExecutionPath path)
public java.util.List<ExecutionPath> toExecutionPath(java.util.List<ExecutionPath> paths)
@NotNull protected final java.util.List<ExecutionPath> addJustMeToExecutionPath(java.util.List<ExecutionPath> paths)
protected final java.util.List<ExecutionPath> toExecutionPathInOrder(java.util.List<ExecutionPath> paths, Expr... order)
protected final java.util.List<ExecutionPath> toExecutionPathInOrder(java.util.List<ExecutionPath> paths, java.util.List<Expr> order)
protected abstract ModelClass resolveType(ModelAnalyzer modelAnalyzer)
protected abstract java.util.List<Dependency> constructDependencies()
protected java.util.List<Dependency> constructDynamicChildrenDependencies()
public final java.util.List<Dependency> getDependencies()
public java.util.List<Dependency> getDependants()
public final java.lang.String getUniqueKey()
protected abstract java.lang.String computeUniqueKey()
public void enableDirectInvalidation()
public boolean canBeInvalidated()
public void trimShouldReadFlags(java.util.BitSet bitSet)
public boolean isConditional()
public int getRequirementId()
public void setRequirementId(int requirementId)
public int getRequirementFlagIndex(boolean expectedOutput)
public boolean hasId()
public void markFlagsAsRead(java.util.BitSet flags)
public boolean isRead()
public boolean considerElevatingConditionals(Expr justRead)
public void invalidateReadFlags()
public int getVersion()
getVersion
in interface VersionProvider
public boolean hasNestedCannotRead()
public boolean markAsReadIfDone()
public java.lang.String toString()
toString
in class java.lang.Object
public java.util.BitSet getReadSoFar()
protected android.databinding.tool.expr.Expr.Node getAllCalculationPaths()
public java.lang.String getDefaultValue()
protected java.util.BitSet getPredicateInvalidFlags()
public boolean shouldReadNow(java.util.List<Expr> justRead)
public boolean isEqualityCheck()
public void markAsUsed()
public void markAsUsedInCallback()
public boolean isIsUsedInCallback()
public boolean isUsed()
public void updateExpr(ModelAnalyzer modelAnalyzer)
protected static java.lang.String join(java.util.List<?> vals)
protected static java.lang.String join(java.lang.Object... vals)
protected java.lang.String asPackage()
public java.util.List<android.databinding.tool.store.Location> provideScopeLocation()
provideScopeLocation
in interface android.databinding.tool.processing.scopes.LocationScopeProvider
public android.databinding.tool.writer.KCode toCode()
public android.databinding.tool.writer.KCode toFullCode()
protected abstract android.databinding.tool.writer.KCode generateCode()
public Expr generateInverse(ExprModel model, Expr value, java.lang.String bindingClassName)
protected static java.util.List<Expr> cloneToModel(ExprModel model, java.util.List<Expr> exprs)
public void assertIsInvertible()
protected abstract java.lang.String getInvertibleError()
public boolean hasConditionalDependant()
public final boolean recursivelyInjectSafeUnboxing(ModelAnalyzer modelAnalyzer, ExprModel model)
public Expr unwrapObservableField()
protected abstract void injectSafeUnboxing(ModelAnalyzer modelAnalyzer, ExprModel model)