Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
JDK 17 jdk.incubator.foreign.jmod - JDK Incubator Foreign
JDK 17 jdk.incubator.foreign.jmod is the JMOD file for JDK 17 HTTP Server module.
JDK 17 Incubator Foreign module compiled class files are stored in \fyicenter\jdk-17.0.5\jmods\jdk.incubator.foreign.jmod.
JDK 17 Incubator Foreign module compiled class files are also linked and stored in the \fyicenter\jdk-17.0.5\lib\modules JImage file.
JDK 17 Incubator Foreign module source code files are stored in \fyicenter\jdk-17.0.5\lib\src.zip\jdk.incubator.foreign.
You can click and view the content of each source code file in the list below.
✍: FYIcenter
⏎ jdk/incubator/foreign/GroupLayout.java
/* * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * * */ package jdk.incubator.foreign; import java.lang.constant.Constable; import java.lang.constant.ConstantDesc; import java.lang.constant.ConstantDescs; import java.lang.constant.DynamicConstantDesc; import java.lang.constant.MethodHandleDesc; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.OptionalLong; import java.util.function.LongBinaryOperator; import java.util.stream.Collectors; /** * A group layout is used to combine together multiple <em>member layouts</em>. There are two ways in which member layouts * can be combined: if member layouts are laid out one after the other, the resulting group layout is said to be a <em>struct</em> * (see {@link MemoryLayout#structLayout(MemoryLayout...)}); conversely, if all member layouts are laid out at the same starting offset, * the resulting group layout is said to be a <em>union</em> (see {@link MemoryLayout#unionLayout(MemoryLayout...)}). * <p> * This is a <a href="{@docRoot}/java.base/java/lang/doc-files/ValueBased.html">value-based</a> * class; programmers should treat instances that are * {@linkplain #equals(Object) equal} as interchangeable and should not * use instances for synchronization, or unpredictable behavior may * occur. For example, in a future release, synchronization may fail. * The {@code equals} method should be used for comparisons. * * <p> Unless otherwise specified, passing a {@code null} argument, or an array argument containing one or more {@code null} * elements to a method in this class causes a {@link NullPointerException NullPointerException} to be thrown. </p> * * @implSpec * This class is immutable and thread-safe. */ public final class GroupLayout extends AbstractLayout implements MemoryLayout { /** * The group kind. */ enum Kind { /** * A 'struct' kind. */ STRUCT("", MH_STRUCT, Long::sum), /** * A 'union' kind. */ UNION("|", MH_UNION, Math::max); final String delimTag; final MethodHandleDesc mhDesc; final LongBinaryOperator sizeOp; Kind(String delimTag, MethodHandleDesc mhDesc, LongBinaryOperator sizeOp) { this.delimTag = delimTag; this.mhDesc = mhDesc; this.sizeOp = sizeOp; } OptionalLong sizeof(List<MemoryLayout> elems) { long size = 0; for (MemoryLayout elem : elems) { if (AbstractLayout.optSize(elem).isPresent()) { size = sizeOp.applyAsLong(size, elem.bitSize()); } else { return OptionalLong.empty(); } } return OptionalLong.of(size); } long alignof(List<MemoryLayout> elems) { return elems.stream().mapToLong(MemoryLayout::bitAlignment).max() // max alignment in case we have member layouts .orElse(1); // or minimal alignment if no member layout is given } } private final Kind kind; private final List<MemoryLayout> elements; GroupLayout(Kind kind, List<MemoryLayout> elements) { this(kind, elements, kind.alignof(elements), Map.of()); } GroupLayout(Kind kind, List<MemoryLayout> elements, long alignment, Map<String, Constable> attributes) { super(kind.sizeof(elements), alignment, attributes); this.kind = kind; this.elements = elements; } /** * Returns the member layouts associated with this group. * * @apiNote the order in which member layouts are returned is the same order in which member layouts have * been passed to one of the group layout factory methods (see {@link MemoryLayout#structLayout(MemoryLayout...)}, * {@link MemoryLayout#unionLayout(MemoryLayout...)}). * * @return the member layouts associated with this group. */ public List<MemoryLayout> memberLayouts() { return Collections.unmodifiableList(elements); } @Override public String toString() { return decorateLayoutString(elements.stream() .map(Object::toString) .collect(Collectors.joining(kind.delimTag, "[", "]"))); } /** * Is this group layout a <em>struct</em>? * * @return true, if this group layout is a <em>struct</em>. */ public boolean isStruct() { return kind == Kind.STRUCT; } /** * Is this group layout a <em>union</em>? * * @return true, if this group layout is a <em>union</em>. */ public boolean isUnion() { return kind == Kind.UNION; } @Override public boolean equals(Object other) { if (this == other) { return true; } if (!super.equals(other)) { return false; } if (!(other instanceof GroupLayout)) { return false; } GroupLayout g = (GroupLayout)other; return kind.equals(g.kind) && elements.equals(g.elements); } @Override public int hashCode() { return Objects.hash(super.hashCode(), kind, elements); } @Override GroupLayout dup(long alignment, Map<String, Constable> attributes) { return new GroupLayout(kind, elements, alignment, attributes); } @Override boolean hasNaturalAlignment() { return alignment == kind.alignof(elements); } @Override public Optional<DynamicConstantDesc<GroupLayout>> describeConstable() { ConstantDesc[] constants = new ConstantDesc[1 + elements.size()]; constants[0] = kind.mhDesc; for (int i = 0 ; i < elements.size() ; i++) { constants[i + 1] = elements.get(i).describeConstable().get(); } return Optional.of(decorateLayoutConstant(DynamicConstantDesc.ofNamed( ConstantDescs.BSM_INVOKE, kind.name().toLowerCase(), CD_GROUP_LAYOUT, constants))); } //hack: the declarations below are to make javadoc happy; we could have used generics in AbstractLayout //but that causes issues with javadoc, see JDK-8224052 /** * {@inheritDoc} */ @Override public GroupLayout withName(String name) { return (GroupLayout)super.withName(name); } /** * {@inheritDoc} */ @Override public GroupLayout withBitAlignment(long alignmentBits) { return (GroupLayout)super.withBitAlignment(alignmentBits); } /** * {@inheritDoc} */ @Override public GroupLayout withAttribute(String name, Constable value) { return (GroupLayout)super.withAttribute(name, value); } }
⏎ jdk/incubator/foreign/GroupLayout.java
Or download all of them as a single archive file:
File name: jdk.incubator.foreign-17.0.5-src.zip File size: 168767 bytes Release date: 2022-09-13 Download
⇒ JDK 17 jdk.incubator.vector.jmod - JDK Incubator Vector
2023-10-04, 5367👍, 0💬
Popular Posts:
JRE 8 plugin.jar is the JAR file for JRE 8 Java Control Panel Plugin interface and tools. JRE (Java ...
ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify ex...
What Is ojdbc14.jar for Oracle 10g R2? ojdbc14.jar for Oracle 10g R2 is the JAR files of ojdbc.jar, ...
JRE 8 deploy.jar is the JAR file for JRE 8 Java Control Panel and other deploy tools. JRE (Java Runt...
JasperReports, the world's most popular open source business intelligence and reporting engine and J...