diff --git a/src/api-impl/android/annotation/FloatRange.java b/src/api-impl/android/annotation/FloatRange.java new file mode 100644 index 00000000..bbcd332e --- /dev/null +++ b/src/api-impl/android/annotation/FloatRange.java @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.annotation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.LOCAL_VARIABLE; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.CLASS; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * Denotes that the annotated element should be a float or double in the given range + *

+ * Example: + *


+ *  @FloatRange(from=0.0,to=1.0)
+ *  public float getAlpha() {
+ *      ...
+ *  }
+ * 
+ */ +@Retention(CLASS) +@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE, ANNOTATION_TYPE}) +public @interface FloatRange { + /** + * Smallest value. Whether it is inclusive or not is determined + * by {@link #fromInclusive} + */ + double from() default Double.NEGATIVE_INFINITY; + /** + * Largest value. Whether it is inclusive or not is determined + * by {@link #toInclusive} + */ + double to() default Double.POSITIVE_INFINITY; + + /** + * Whether the from value is included in the range + */ + boolean fromInclusive() default true; + + /** + * Whether the to value is included in the range + */ + boolean toInclusive() default true; +} diff --git a/src/api-impl/android/annotation/IntDef.java b/src/api-impl/android/annotation/IntDef.java new file mode 100644 index 00000000..6d52e898 --- /dev/null +++ b/src/api-impl/android/annotation/IntDef.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.annotation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.RetentionPolicy.SOURCE; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * Denotes that the annotated element of integer type, represents + * a logical type and that its value should be one of the explicitly + * named constants. If the IntDef#flag() attribute is set to true, + * multiple constants can be combined. + *

+ * Example: + *


+ *  @Retention(SOURCE)
+ *  @IntDef({NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
+ *  public @interface NavigationMode {}
+ *  public static final int NAVIGATION_MODE_STANDARD = 0;
+ *  public static final int NAVIGATION_MODE_LIST = 1;
+ *  public static final int NAVIGATION_MODE_TABS = 2;
+ *  ...
+ *  public abstract void setNavigationMode(@NavigationMode int mode);
+ *  @NavigationMode
+ *  public abstract int getNavigationMode();
+ * 
+ * For a flag, set the flag attribute: + *

+ *  @IntDef(
+ *      flag = true,
+ *      value = {NAVIGATION_MODE_STANDARD, NAVIGATION_MODE_LIST, NAVIGATION_MODE_TABS})
+ * 
+ * + * @see LongDef + */ +@Retention(SOURCE) +@Target({ANNOTATION_TYPE}) +public @interface IntDef { + String[] prefix() default {}; + + String[] suffix() default {}; + + /** + * Defines the allowed constants for this element + */ + int[] value() default {}; + + /** + * Defines whether the constants can be used as a flag, or just as an enum (the default) + */ + boolean flag() default false; +} diff --git a/src/api-impl/android/annotation/IntRange.java b/src/api-impl/android/annotation/IntRange.java new file mode 100644 index 00000000..60d45e10 --- /dev/null +++ b/src/api-impl/android/annotation/IntRange.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.annotation; + +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.LOCAL_VARIABLE; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.CLASS; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +/** + * Denotes that the annotated element should be an int or long in the given range + *

+ * Example: + *


+ *  @IntRange(from=0,to=255)
+ *  public int getAlpha() {
+ *      ...
+ *  }
+ * 
+ */ +@Retention(CLASS) +@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE, ANNOTATION_TYPE}) +public @interface IntRange { + /** + * Smallest value, inclusive + */ + long from() default Long.MIN_VALUE; + /** + * Largest value, inclusive + */ + long to() default Long.MAX_VALUE; +}