11b9940e612fc73202837fbe9db2f9035f307b5d1George Mount/*
21b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Copyright (C) 2015 The Android Open Source Project
31b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
41b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Licensed under the Apache License, Version 2.0 (the "License");
51b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * you may not use this file except in compliance with the License.
61b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * You may obtain a copy of the License at
71b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
81b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *      http://www.apache.org/licenses/LICENSE-2.0
91b9940e612fc73202837fbe9db2f9035f307b5d1George Mount *
101b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * Unless required by applicable law or agreed to in writing, software
111b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * distributed under the License is distributed on an "AS IS" BASIS,
121b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * See the License for the specific language governing permissions and
141b9940e612fc73202837fbe9db2f9035f307b5d1George Mount * limitations under the License.
151b9940e612fc73202837fbe9db2f9035f307b5d1George Mount */
16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.tool.reflection;
171b9940e612fc73202837fbe9db2f9035f307b5d1George Mount
18fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mountpublic abstract class ModelField {
19fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
20fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
21fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return Whether this field has been annotated with Bindable.
22fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
23fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract boolean isBindable();
24fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
25fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
26fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return The field name.
27fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
28fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract String getName();
29fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
30fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
31fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return true if this field is marked public.
32fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
33fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract boolean isPublic();
34fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
35fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
36fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return true if this is a static field.
37fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
38fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract boolean isStatic();
39fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
40fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
41fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return true if the field was declared final.
42fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
43fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract boolean isFinal();
44fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount
45fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    /**
46fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     * @return The declared type of the field variable.
47fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount     */
48fa9fe12980ef1103fabe33bf5ff0e2f53042a204George Mount    public abstract ModelClass getFieldType();
491b9940e612fc73202837fbe9db2f9035f307b5d1George Mount}
50