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 186047998943beebd81e0ae1068df39c0cbee38628Yigit Boyarimport org.jetbrains.annotations.Nullable; 19e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 206047998943beebd81e0ae1068df39c0cbee38628Yigit Boyarpublic class Callable { 2188ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar public enum Type { 22e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount METHOD, 23e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount FIELD 24e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 25e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 26019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int DYNAMIC = 1; 27019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int CAN_BE_INVALIDATED = 1 << 1; 28019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public static final int STATIC = 1 << 2; 29019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 30e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public final Type type; 31e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 32e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public final String name; 33e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 34d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount public final String setterName; 35d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount 3679fc7f3727815ab35bb1bb2e060bfb7db3176eedGeorge Mount public final ModelClass resolvedType; 37e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 386047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar @Nullable 396047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar public final ModelMethod method; 406047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar 41019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar private final int mFlags; 42e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 4388ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar private final int mParameterCount; 4488ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar 45d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount public Callable(Type type, String name, String setterName, ModelClass resolvedType, 466047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar int parameterCount, int flags, ModelMethod method) { 47e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.type = type; 48e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.name = name; 49e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount this.resolvedType = resolvedType; 5088ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar mParameterCount = parameterCount; 51d3f2b9229472c9dae9bf4ae8b3e2d653b5653b01George Mount this.setterName = setterName; 52019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar mFlags = flags; 536047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar this.method = method; 54e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 55e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 56e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public String getTypeCodeName() { 57e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount return resolvedType.toJavaCode(); 58e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 59e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount 6088ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar public int getParameterCount() { 6188ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar return mParameterCount; 6288ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar } 6388ce44ccc65e74a8553244ca246cc9f4c48483e0Yigit Boyar 64019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean isDynamic() { 65019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & DYNAMIC) != 0; 66019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 67019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 68019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean isStatic() { 69019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & STATIC) != 0; 70019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 71019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 72019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar public boolean canBeInvalidated() { 73019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar return (mFlags & CAN_BE_INVALIDATED) != 0; 74019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar } 75019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar 76716ba89e7f459f49ea85070d4710c1d79d715298George Mount public int getMinApi() { 77716ba89e7f459f49ea85070d4710c1d79d715298George Mount return 1; 78716ba89e7f459f49ea85070d4710c1d79d715298George Mount } 79716ba89e7f459f49ea85070d4710c1d79d715298George Mount 80e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount @Override 81e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount public String toString() { 82e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount return "Callable{" + 83e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount "type=" + type + 84e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount ", name='" + name + '\'' + 85e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount ", resolvedType=" + resolvedType + 86019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", isDynamic=" + isDynamic() + 87019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", canBeInvalidated=" + canBeInvalidated() + 88019c36b97c7c172ac03997f6bf170e65b2ed7fe4Yigit Boyar ", static=" + isStatic() + 896047998943beebd81e0ae1068df39c0cbee38628Yigit Boyar ", method=" + method + 90e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount '}'; 91e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount } 92e6c6d3bf4fac3fa11c5780cfd3bc14cdb0caaea1George Mount} 93