< prev index next >

test/jdk/com/sun/tools/jextract/jclang-ffi/src/jdk/internal/clang/Cursor.java

Print this page




  42     Cursor(CXCursor cursor) {
  43         this.cursor = cursor;
  44         kind = LibClang.lib.clang_getCursorKind(cursor);
  45     }
  46     public boolean isDeclaration() {
  47         return LibClang.lib.clang_isDeclaration(kind) != 0;
  48     }
  49 
  50     public boolean isPreprocessing() { return LibClang.lib.clang_isPreprocessing(kind) != 0; }
  51 
  52     public boolean isInvalid() {
  53         return LibClang.lib.clang_isInvalid(kind) != 0;
  54     }
  55 
  56     public boolean isDefinition() {
  57         return LibClang.lib.clang_isCursorDefinition(cursor) != 0;
  58     }
  59 
  60     public boolean isAnonymousStruct() { return LibClang.lib.clang_Cursor_isAnonymous(cursor) != 0; }
  61 
  62     public boolean isAnonymousEnum() {
  63         // libclang::clang_Cursor_isAnonymous only applies to struct, not enum
  64         return (type().kind() == TypeKind.Enum && spelling().isEmpty());
  65     }
  66 
  67     public boolean isAnonymous() {
  68         return isAnonymousStruct() || isAnonymousEnum();
  69     }
  70 
  71     public boolean isMacroFunctionLike() {
  72         return LibClang.lib.clang_Cursor_isMacroFunctionLike(cursor) != 0;
  73     }
  74 
  75     public String spelling() {
  76         return LibClang.CXStrToString(
  77                 LibClang.lib.clang_getCursorSpelling(cursor));
  78     }
  79 
  80     public String USR() {
  81         return LibClang.CXStrToString(
  82                 LibClang.lib.clang_getCursorUSR(cursor));
  83     }
  84 
  85     public boolean equalCursor(Cursor other) {
  86         return LibClang.lib.clang_equalCursors(cursor, other.cursor) != 0;
  87     }
  88 
  89     public Type type() {
  90         return new Type(LibClang.lib.clang_getCursorType(cursor));


 127         return LibClang.lib.clang_getEnumConstantDeclValue(cursor);
 128     }
 129 
 130     // C unsigned long long, 64-bit
 131     public long getEnumConstantUnsignedValue() {
 132         return LibClang.lib.clang_getEnumConstantDeclUnsignedValue(cursor);
 133     }
 134 
 135     public boolean isBitField() {
 136         return LibClang.lib.clang_Cursor_isBitField(cursor) != 0;
 137     }
 138 
 139     public int getBitFieldWidth() {
 140         return LibClang.lib.clang_getFieldDeclBitWidth(cursor);
 141     }
 142 
 143     public CursorKind kind() {
 144         return CursorKind.valueOf(kind);
 145     }
 146 
 147     public boolean equals(Cursor other) {
 148         return (LibClang.lib.clang_equalCursors(cursor, other.cursor) != 0);
 149     }
 150 
 151     public Stream<Cursor> children() {
 152         final ArrayList<Cursor> ar = new ArrayList<>();
 153         // FIXME: need a way to pass ar down as user data d
 154         LibClang.lib.clang_visitChildren(cursor, (c, p, d) -> {
 155             ar.add(new Cursor(c));
 156             return Index.CXChildVisit_Continue;
 157         }, Pointer.nullPointer());
 158         return ar.stream();
 159     }
 160 
 161     public Stream<Cursor> stream() {
 162         return children().flatMap(c -> Stream.concat(Stream.of(c), c.children()));
 163     }
 164 
 165     public String getMangling() {
 166         return LibClang.CXStrToString(
 167                 LibClang.lib.clang_Cursor_getMangling(cursor));
 168     }
 169 
 170     public TranslationUnit getTranslationUnit() {
 171         return new TranslationUnit(LibClang.lib.clang_Cursor_getTranslationUnit(cursor));
 172     }
















 173 }


  42     Cursor(CXCursor cursor) {
  43         this.cursor = cursor;
  44         kind = LibClang.lib.clang_getCursorKind(cursor);
  45     }
  46     public boolean isDeclaration() {
  47         return LibClang.lib.clang_isDeclaration(kind) != 0;
  48     }
  49 
  50     public boolean isPreprocessing() { return LibClang.lib.clang_isPreprocessing(kind) != 0; }
  51 
  52     public boolean isInvalid() {
  53         return LibClang.lib.clang_isInvalid(kind) != 0;
  54     }
  55 
  56     public boolean isDefinition() {
  57         return LibClang.lib.clang_isCursorDefinition(cursor) != 0;
  58     }
  59 
  60     public boolean isAnonymousStruct() { return LibClang.lib.clang_Cursor_isAnonymous(cursor) != 0; }
  61 









  62     public boolean isMacroFunctionLike() {
  63         return LibClang.lib.clang_Cursor_isMacroFunctionLike(cursor) != 0;
  64     }
  65 
  66     public String spelling() {
  67         return LibClang.CXStrToString(
  68                 LibClang.lib.clang_getCursorSpelling(cursor));
  69     }
  70 
  71     public String USR() {
  72         return LibClang.CXStrToString(
  73                 LibClang.lib.clang_getCursorUSR(cursor));
  74     }
  75 
  76     public boolean equalCursor(Cursor other) {
  77         return LibClang.lib.clang_equalCursors(cursor, other.cursor) != 0;
  78     }
  79 
  80     public Type type() {
  81         return new Type(LibClang.lib.clang_getCursorType(cursor));


 118         return LibClang.lib.clang_getEnumConstantDeclValue(cursor);
 119     }
 120 
 121     // C unsigned long long, 64-bit
 122     public long getEnumConstantUnsignedValue() {
 123         return LibClang.lib.clang_getEnumConstantDeclUnsignedValue(cursor);
 124     }
 125 
 126     public boolean isBitField() {
 127         return LibClang.lib.clang_Cursor_isBitField(cursor) != 0;
 128     }
 129 
 130     public int getBitFieldWidth() {
 131         return LibClang.lib.clang_getFieldDeclBitWidth(cursor);
 132     }
 133 
 134     public CursorKind kind() {
 135         return CursorKind.valueOf(kind);
 136     }
 137 




 138     public Stream<Cursor> children() {
 139         final ArrayList<Cursor> ar = new ArrayList<>();
 140         // FIXME: need a way to pass ar down as user data d
 141         LibClang.lib.clang_visitChildren(cursor, (c, p, d) -> {
 142             ar.add(new Cursor(c));
 143             return Index.CXChildVisit_Continue;
 144         }, Pointer.nullPointer());
 145         return ar.stream();
 146     }
 147 
 148     public Stream<Cursor> allChildren() {
 149         return children().flatMap(c -> Stream.concat(Stream.of(c), c.children()));
 150     }
 151 
 152     public String getMangling() {
 153         return LibClang.CXStrToString(
 154                 LibClang.lib.clang_Cursor_getMangling(cursor));
 155     }
 156 
 157     public TranslationUnit getTranslationUnit() {
 158         return new TranslationUnit(LibClang.lib.clang_Cursor_getTranslationUnit(cursor));
 159     }
 160 
 161     @Override
 162     public boolean equals(Object other) {
 163         if (this == other) {
 164             return true;
 165         }
 166         if (!(other instanceof Cursor)) {
 167             return false;
 168         }
 169         return (LibClang.lib.clang_equalCursors(cursor, ((Cursor)other).cursor) != 0);
 170     }
 171 
 172     @Override
 173     public int hashCode() {
 174         return spelling().hashCode();
 175     }
 176 }
< prev index next >