diff options
Diffstat (limited to 'en/devices/architecture/hidl-java/types.html')
-rw-r--r-- | en/devices/architecture/hidl-java/types.html | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/en/devices/architecture/hidl-java/types.html b/en/devices/architecture/hidl-java/types.html deleted file mode 100644 index 8cc2d258..00000000 --- a/en/devices/architecture/hidl-java/types.html +++ /dev/null @@ -1,161 +0,0 @@ -<html devsite> - <head> - <title>Data Types</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>Given a HIDL interface file, the Java HIDL backend generates Java interfaces, -Stub, and Proxy code. It supports all scalar HIDL types -([<code>u</code>]<code>int</code>{<code>8,16,32,64}_t, float, double,</code> and -<code>enum</code>s), as well as strings, interfaces, struct types, and arrays -and vectors of supported HIDL types. The Java HIDL backend <strong>does NOT -support union types, native handles, shared memory, and fmq types</strong>.</p> - -<p>As Java runtime does not support the concept of unsigned integers natively, -all unsigned types (and enums based on them) are silently treated as their -signed equivalents, i.e. <code>uint32_t</code> becomes an <code>int</code> in -the Java interface. No value conversion is performed; the implementor on the -Java side must use the signed values as if they were unsigned.</p> - -<h2 id=enum>Enums</h2> -<p>Enums do not generate Java enum classes but are instead translated into inner -classes containing a static constant definition for each enum case. If the enum -class derives from some other enum class, it inherits that class's storage type. -Enumerations based on an unsigned integer type are rewritten into their signed -equivalent.</p> - -<p>For example, a <code>SomeBaseEnum</code> with a type of -<code>uint8_t</code>:</p> - -<pre class="prettyprint"> -enum SomeBaseEnum : uint8_t { foo = 3 }; -enum SomeEnum : SomeBaseEnum { - quux = 33, - goober = 127 -}; -</pre> - -<p>… becomes:</p> - -<pre class="prettyprint"> -public final class SomeBaseEnum { public static final byte foo = 3; } -public final class SomeEnum { - public static final byte foo = 3; - public static final byte quux = 33; - public static final byte goober = 127; -} -</pre> - -<p>And:</p> - -<pre class="prettyprint"> -enum SomeEnum : uint8_t { - FIRST_CASE = 10, - SECOND_CASE = 192 -}; -</pre> - -<p>… is rewritten as:</p> - -<pre class="prettyprint"> -public final class SomeEnum { - static public final byte FIRST_CASE = 10; // no change - static public final byte SECOND_CASE = -64; -} -</pre> - -<h2 id=string>Strings</h2> -<p><code>String</code>s in Java are utf-8 or utf-16 but are converted to utf-8 -as the common HIDL type when transported. Additionally, a <code>String</code> -must not be null when passed into HIDL.</p> - -<h2 id=array-vect>Arrays and vectors</h2> -<p>Arrays are translated into Java arrays and vectors are translated into -<code>ArrayList<T></code> where T is the appropriate object type, possibly -wrapping scalar types such as <code>vec<int32_t> => -ArrayList<Integer></code>). For example:</p> - -<pre class="prettyprint"> -takeAnArray(int32_t[3] array); -returnAVector() generates (vec<int32_t> result); -</pre> - -<p>… becomes:</p> - -<pre class="prettyprint"> -void takeAnArray(int[] array); -ArrayList<Integer> returnAVector(); -</pre> - -<h2 id=struct>Structures</h2> -<p>Structures are translated into Java classes with a similar layout. For -example:</p> - -<pre class="prettyprint"> -struct Bar {vec<bool> someBools; - }; - struct Foo { - int32_t a; - int8_t b; - float[10] c; - Bar d; - }; -</pre> - -<p>… becomes:</p> - -<pre class="prettyprint"> -class Bar { - public final ArrayList<Boolean> someBools = new ArrayList(); -}; -class Foo { - public int a; - public byte b; - public final float[] c = new float[10]; - public final Bar d = new Bar(); -} -</pre> - -<h2 id=declared>Declared types</h2> -<p>Each top-level type declared in <code>types.hal</code> gets its own .java -output file (as required by Java). For example, the following -<code>types.hal</code> file results in two extra files being created (Foo.java -and Bar.java):</p> - -<pre class="prettyprint"> -struct Foo { - ... -}; - -struct Bar { - ... - - struct Baz { - }; - - ... -}; -</pre> - -<p>The definition of Baz lives in a static inner class of Bar (in Bar.java).</p> - - </body> -</html> |