aboutsummaryrefslogtreecommitdiff
path: root/en/devices/architecture/hidl-java/constants.html
diff options
context:
space:
mode:
Diffstat (limited to 'en/devices/architecture/hidl-java/constants.html')
-rw-r--r--en/devices/architecture/hidl-java/constants.html87
1 files changed, 87 insertions, 0 deletions
diff --git a/en/devices/architecture/hidl-java/constants.html b/en/devices/architecture/hidl-java/constants.html
new file mode 100644
index 00000000..30c55b95
--- /dev/null
+++ b/en/devices/architecture/hidl-java/constants.html
@@ -0,0 +1,87 @@
+<html devsite>
+ <head>
+ <title>Exporting Constants</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2017 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.
+ -->
+
+<p>In cases where an interface is not Java-compatible (because it uses unions
+for example) it may still be desirable to export the constants (enum values) to
+the Java world. This scenario is supported by <code>hidl-gen -Ljava-constants
+&hellip;</code> which extracts annotated enum declarations from the interface
+file(s) in a package and produces a java library named
+<code>[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants</code>. Annotate each
+enum declaration to be exported as follows:</p>
+
+<pre class="prettyprint">
+@export
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>If necessary, the name under which this type is exported to the Java world
+can be different from that chosen in the interface declaration by adding the
+annotation-parameter <code>name</code>:</p>
+
+<pre class="prettyprint">
+@export(name="JavaFoo")
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>If Java conventions or personal preference ask for a common prefix to be
+added to the enum type's values, use the annotation-parameter
+<code>value_prefix</code>:</p>
+
+<pre class="prettyprint">
+// File "types.hal".
+
+package android.hardware.bar@1.0;
+
+@export(name="JavaFoo", value_prefix="JAVA_")
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>The resulting Java class appears as follows:</p>
+
+<pre class="prettyprint">
+package android.hardware.bar.V1_0;
+
+public class Constants {
+ public final class JavaFoo {
+ public static final int JAVA_SOME_VALUE = 0;
+ public static final int JAVA_SOME_OTHER_VALUE = 1;
+ };
+};
+</pre>
+
+<p>Finally, Java type declaration for enum types declared in
+<code>types.hal</code> are grouped inside a class <code>Constants</code> in the
+given package. Enum types declared as children of an interface will be grouped
+under that interface's Java class declaration.</p>
+
+ </body>
+</html>