1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * http://www.apache.org/licenses/LICENSE-2.0 7 * Unless required by applicable law or agreed to in writing, software 8 * distributed under the License is distributed on an "AS IS" BASIS, 9 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 * See the License for the specific language governing permissions and 11 * limitations under the License. 12 */ 13 14 package android.databinding.tool.expr; 15 16 public class Dependency { 17 final Expr mDependant; 18 final Expr mOther; 19 final Expr mCondition; 20 final boolean mExpectedOutput;// ! 21 // set only if this is conditional. Means it has been resolved so that it can be used in 22 // should get calculations 23 boolean mElevated; 24 25 // this means that trying to calculate the dependant expression w/o 26 // will crash the app unless "Other" has a non-null value 27 boolean mMandatory = false; 28 Dependency(Expr dependant, Expr other)29 public Dependency(Expr dependant, Expr other) { 30 mDependant = dependant; 31 mOther = other; 32 mCondition = null; 33 mOther.addDependant(this); 34 mExpectedOutput = false; 35 } 36 Dependency(Expr dependant, Expr other, Expr condition, boolean expectedOutput)37 public Dependency(Expr dependant, Expr other, Expr condition, boolean expectedOutput) { 38 mDependant = dependant; 39 mOther = other; 40 mCondition = condition; 41 mOther.addDependant(this); 42 mExpectedOutput = expectedOutput; 43 } 44 setMandatory(boolean mandatory)45 public void setMandatory(boolean mandatory) { 46 mMandatory = mandatory; 47 } 48 isMandatory()49 public boolean isMandatory() { 50 return mMandatory; 51 } 52 isConditional()53 public boolean isConditional() { 54 return mCondition != null && !mElevated; 55 } 56 getOther()57 public Expr getOther() { 58 return mOther; 59 } 60 getDependant()61 public Expr getDependant() { 62 return mDependant; 63 } 64 getExpectedOutput()65 public boolean getExpectedOutput() { 66 return mExpectedOutput; 67 } 68 getCondition()69 public Expr getCondition() { 70 return mCondition; 71 } 72 elevate()73 public void elevate() { 74 mElevated = true; 75 } 76 isElevated()77 public boolean isElevated() { 78 return mElevated; 79 } 80 } 81