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