1c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount/* 2c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * Copyright (C) 2015 The Android Open Source Project 3c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * 4c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * you may not use this file except in compliance with the License. 6c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * You may obtain a copy of the License at 7c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * 8c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * http://www.apache.org/licenses/LICENSE-2.0 9c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * 10c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * Unless required by applicable law or agreed to in writing, software 11c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * distributed under the License is distributed on an "AS IS" BASIS, 12c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * See the License for the specific language governing permissions and 14c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount * limitations under the License. 15c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount */ 16c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 17c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mountpackage android.databinding.tool.expr; 18c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 19c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mountimport android.databinding.tool.reflection.ModelAnalyzer; 20c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mountimport android.databinding.tool.reflection.ModelClass; 21c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 22c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mountimport java.util.List; 23c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 24c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mountpublic class UnaryExpr extends Expr { 25c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount final String mOp; 26c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount UnaryExpr(String op, Expr expr) { 27c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount super(expr); 28c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount mOp = op; 29c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 30c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 31c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount @Override 32c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount protected String computeUniqueKey() { 332611838bffef5a009ca71e3e9e59a93f29b098edYigit Boyar return join(getOpStr(), getExpr().getUniqueKey()); 34c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 35c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 36c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount @Override 37c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount protected ModelClass resolveType(ModelAnalyzer modelAnalyzer) { 38731b74f7f44e67312a1fc4161c4e0aae221b2417Yigit Boyar return getExpr().getResolvedType(); 39c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 40c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 41c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount @Override 42c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount protected List<Dependency> constructDependencies() { 43c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount return constructDynamicChildrenDependencies(); 44c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 45c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 46c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount private String getOpStr() { 47c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount switch (mOp.charAt(0)) { 48c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount case '~' : return "bitNot"; 49c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount case '!' : return "logicalNot"; 50c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount case '-' : return "unaryMinus"; 51c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount case '+' : return "unaryPlus"; 52c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 53c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount return mOp; 54c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 55c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 56c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount public String getOp() { 57c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount return mOp; 58c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 59c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount 60c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount public Expr getExpr() { 61c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount return getChildren().get(0); 62c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount } 63c6bcb7bf9cab139b3141c4644e5b3267deed5213George Mount} 64