1cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye/*
2cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Copyright (C) 2015 The Android Open Source Project
3cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *
4cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Licensed under the Apache License, Version 2.0 (the "License");
5cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * you may not use this file except in compliance with the License.
6cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * You may obtain a copy of the License at
7cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *
8cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *      http://www.apache.org/licenses/LICENSE-2.0
9cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *
10cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Unless required by applicable law or agreed to in writing, software
11cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * distributed under the License is distributed on an "AS IS" BASIS,
12cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * See the License for the specific language governing permissions and
14cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * limitations under the License.
15cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye */
16cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyepackage android.annotation;
17cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye
18cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport java.lang.annotation.Retention;
19cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport java.lang.annotation.Target;
20cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye
21cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport static java.lang.annotation.ElementType.FIELD;
22cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport static java.lang.annotation.ElementType.LOCAL_VARIABLE;
23cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport static java.lang.annotation.ElementType.METHOD;
24cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport static java.lang.annotation.ElementType.PARAMETER;
25cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyeimport static java.lang.annotation.RetentionPolicy.SOURCE;
26cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye
27cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye/**
28cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Denotes that the annotated element should have a given size or length.
29cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Note that "-1" means "unset". Typically used with a parameter or
30cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * return value of type array or collection.
31cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * <p>
32cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * Example:
33cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * <pre>{@code
34cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *  public void getLocationInWindow(&#64;Size(2) int[] location) {
35cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *      ...
36cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *  }
37cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * }</pre>
38cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye *
39cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye * @hide
40cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye */
41cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye@Retention(SOURCE)
42cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye@Target({PARAMETER,LOCAL_VARIABLE,METHOD,FIELD})
43cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbyepublic @interface Size {
44cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    /** An exact size (or -1 if not specified) */
45cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    long value() default -1;
46cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    /** A minimum size, inclusive */
47cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    long min() default Long.MIN_VALUE;
48cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    /** A maximum size, inclusive */
49cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    long max() default Long.MAX_VALUE;
50cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    /** The size must be a multiple of this factor */
51cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye    long multiple() default 1;
52cb59f2afb7a403af7c2bb6a6deb2c981a156fb96Tor Norbye}