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;
+}