16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package com.sun.tools.jextract;
25
26 import java.util.Arrays;
27 import java.util.Collection;
28 import java.util.function.Predicate;
29 import jdk.internal.clang.Cursor;
30 import jdk.internal.clang.Index;
31 import jdk.internal.clang.LibClang;
32
33 public class FindSymbol {
34 public static void main(String[] args) {
35 if (args.length == 0) {
36 System.out.println("libclang version: " + LibClang.version());
37 return;
38 }
39
40 Index index = LibClang.createIndex();
41 Cursor tuCursor = index.parse(args[0], diag -> { System.err.println(diag.toString()); }, false);
42 final Printer p = new Printer();
43
44 if (args.length == 1) {
45 p.printTree(tuCursor, Integer.MAX_VALUE);
46 return;
47 }
48
49 final Collection<String> set = Arrays.asList(Arrays.copyOfRange(args, 1, args.length));
50 Predicate<Cursor> matchName = c -> c.isDeclaration() && set.contains(c.spelling());
51 tuCursor.stream()
52 .filter(matchName)
53 .forEach(c -> p.printTree(c, Integer.MAX_VALUE));
54 }
55 }
|
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package com.sun.tools.jextract;
25
26 import java.util.Arrays;
27 import java.util.Collection;
28 import java.util.function.Predicate;
29 import jdk.internal.clang.Cursor;
30 import jdk.internal.clang.Index;
31 import jdk.internal.clang.LibClang;
32
33 public class FindSymbol {
34 public static void main(String[] args) {
35 if (args.length == 0) {
36 System.err.println("libclang version: " + LibClang.version());
37 return;
38 }
39
40 Index index = LibClang.createIndex();
41 Cursor tuCursor = index.parse(args[0], diag -> { System.err.println(diag.toString()); }, false);
42 final Printer p = new Printer();
43
44 if (args.length == 1) {
45 p.printTree(tuCursor, Integer.MAX_VALUE);
46 return;
47 }
48
49 final Collection<String> set = Arrays.asList(Arrays.copyOfRange(args, 1, args.length));
50 Predicate<Cursor> matchName = c -> c.isDeclaration() && set.contains(c.spelling());
51 tuCursor.stream()
52 .filter(matchName)
53 .forEach(c -> p.printTree(c, Integer.MAX_VALUE));
54 }
55 }
|