1e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount/* 2e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * Copyright (C) 2015 The Android Open Source Project 3e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * 4e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * you may not use this file except in compliance with the License. 6e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * You may obtain a copy of the License at 7e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * 8e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * http://www.apache.org/licenses/LICENSE-2.0 9e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * 10e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * Unless required by applicable law or agreed to in writing, software 11e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * distributed under the License is distributed on an "AS IS" BASIS, 12e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * See the License for the specific language governing permissions and 14e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount * limitations under the License. 15e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount */ 16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.tool.reflection; 17e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 18e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mountpublic class Callable { 19e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 2088ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar public enum Type { 21e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount METHOD, 22e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount FIELD 23e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 24e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 25019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int DYNAMIC = 1; 26019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int CAN_BE_INVALIDATED = 1 << 1; 27019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int STATIC = 1 << 2; 28019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 29e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public final Type type; 30e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 31e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public final String name; 32e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 33d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount public final String setterName; 34d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount 3579fc7f3727815ab35bb1bb2e060bfb7db3176eedGeorge Mount public final ModelClass resolvedType; 36e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 37019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar private final int mFlags; 38e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 3988ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar private final int mParameterCount; 4088ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar 41d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount public Callable(Type type, String name, String setterName, ModelClass resolvedType, 42d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount int parameterCount, int flags) { 43e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.type = type; 44e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.name = name; 45e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.resolvedType = resolvedType; 4688ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar mParameterCount = parameterCount; 47d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount this.setterName = setterName; 48019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar mFlags = flags; 49e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 50e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 51e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public String getTypeCodeName() { 52e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount return resolvedType.toJavaCode(); 53e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 54e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 5588ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar public int getParameterCount() { 5688ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar return mParameterCount; 5788ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar } 5888ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar 59019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean isDynamic() { 60019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & DYNAMIC) != 0; 61019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 62019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 63019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean isStatic() { 64019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & STATIC) != 0; 65019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 66019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 67019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean canBeInvalidated() { 68019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & CAN_BE_INVALIDATED) != 0; 69019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 70019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 71716ba89e7f459f49ea85070d4710c1d79d715298George Mount public int getMinApi() { 72716ba89e7f459f49ea85070d4710c1d79d715298George Mount return 1; 73716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 74716ba89e7f459f49ea85070d4710c1d79d715298George Mount 75e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount @Override 76e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public String toString() { 77e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount return "Callable{" + 78e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount "type=" + type + 79e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount ", name='" + name + '\'' + 80e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount ", resolvedType=" + resolvedType + 81019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", isDynamic=" + isDynamic() + 82019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", canBeInvalidated=" + canBeInvalidated() + 83019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", static=" + isStatic() + 84e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount '}'; 85e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 86e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount} 87