< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/tree/StructTree.java
Print this page
*** 24,43 ****
import java.foreign.layout.Layout;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.BiFunction;
import jdk.internal.clang.Cursor;
import jdk.internal.clang.CursorKind;
public class StructTree extends Tree {
private final List<Tree> declarations;
! public StructTree(Cursor c, List<Tree> declarations) {
! super(c);
! this.declarations = Collections.unmodifiableList(declarations);
}
public List<Tree> declarations() {
return declarations;
}
--- 24,65 ----
import java.foreign.layout.Layout;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+ import java.util.Objects;
+ import java.util.Optional;
import java.util.function.BiFunction;
import jdk.internal.clang.Cursor;
import jdk.internal.clang.CursorKind;
public class StructTree extends Tree {
+ private final Optional<Tree> definition;
private final List<Tree> declarations;
! StructTree(Cursor c, Optional<Tree> definition, List<Tree> decls) {
! this(c, definition, decls, c.spelling());
! }
!
! private StructTree(Cursor c, Optional<Tree> definition, List<Tree> decls, String name) {
! super(c, name);
! this.definition = c.isDefinition()? Optional.of(this) : Objects.requireNonNull(definition);
! this.declarations = Collections.unmodifiableList(decls);
! }
!
! @Override
! public StructTree withName(String newName) {
! return name().equals(newName)? this :
! new StructTree(cursor(), definition, declarations, newName);
! }
!
! public StructTree withNameAndDecls(String newName, List<Tree> newDecls) {
! return new StructTree(cursor(), definition, newDecls, newName);
! }
!
! public Optional<Tree> definition() {
! return definition;
}
public List<Tree> declarations() {
return declarations;
}
*** 85,94 ****
--- 107,117 ----
public boolean isUnion() {
return cursor().kind() == CursorKind.UnionDecl;
}
+
/**
* Is this struct/union declared as anonymous member of another struct/union?
*
* Example:
*
< prev index next >