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(@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}