9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.lang.foreign;
27
28 import java.util.List;
29 import jdk.internal.javac.PreviewFeature;
30
31 /**
32 * A compound layout that is an aggregation of multiple, heterogeneous <em>member layouts</em>. There are two ways in which member layouts
33 * can be combined: if member layouts are laid out one after the other, the resulting group layout is a
34 * {@linkplain StructLayout struct layout}; conversely, if all member layouts are laid out at the same starting offset,
35 * the resulting group layout is a {@linkplain UnionLayout union layout}.
36 *
37 * @implSpec
38 * This class is immutable, thread-safe and <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a>.
39 *
40 * @sealedGraph
41 * @since 19
42 */
43 @PreviewFeature(feature=PreviewFeature.Feature.FOREIGN)
44 public sealed interface GroupLayout extends MemoryLayout permits StructLayout, UnionLayout {
45
46 /**
47 * {@return the member layouts of this group layout}
48 *
49 * @apiNote the order in which member layouts are returned is the same order in which member layouts have
50 * been passed to one of the group layout factory methods (see {@link MemoryLayout#structLayout(MemoryLayout...)},
51 * {@link MemoryLayout#unionLayout(MemoryLayout...)}).
52 */
53 List<MemoryLayout> memberLayouts();
54
55 /**
56 * {@inheritDoc}
57 */
58 @Override
59 GroupLayout withName(String name);
60
61 /**
62 * {@inheritDoc}
63 */
|
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package java.lang.foreign;
27
28 import java.util.List;
29
30 /**
31 * A compound layout that is an aggregation of multiple, heterogeneous <em>member layouts</em>. There are two ways in which member layouts
32 * can be combined: if member layouts are laid out one after the other, the resulting group layout is a
33 * {@linkplain StructLayout struct layout}; conversely, if all member layouts are laid out at the same starting offset,
34 * the resulting group layout is a {@linkplain UnionLayout union layout}.
35 *
36 * @implSpec
37 * This class is immutable, thread-safe and <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a>.
38 *
39 * @sealedGraph
40 * @since 22
41 */
42 public sealed interface GroupLayout extends MemoryLayout permits StructLayout, UnionLayout {
43
44 /**
45 * {@return the member layouts of this group layout}
46 *
47 * @apiNote the order in which member layouts are returned is the same order in which member layouts have
48 * been passed to one of the group layout factory methods (see {@link MemoryLayout#structLayout(MemoryLayout...)},
49 * {@link MemoryLayout#unionLayout(MemoryLayout...)}).
50 */
51 List<MemoryLayout> memberLayouts();
52
53 /**
54 * {@inheritDoc}
55 */
56 @Override
57 GroupLayout withName(String name);
58
59 /**
60 * {@inheritDoc}
61 */
|