< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/Context.java

Print this page




 349          }
 350 
 351          // check for function symbols in libraries & warn missing symbols
 352          if (tree instanceof FunctionTree && !isSymbolFound(name)) {
 353              err.println(Main.format("warn.symbol.not.found", name));
 354          }
 355 
 356          return true;
 357     }
 358 
 359     public void parse(Function<HeaderFile, AsmCodeFactory> fn) {
 360         initSymChecker();
 361         initSymFilter();
 362 
 363         List<HeaderTree> headers = parser.parse(sources, clangArgs);
 364         processHeaders(headers, fn);
 365     }
 366 
 367     private void processHeaders(List<HeaderTree> headers, Function<HeaderFile, AsmCodeFactory> fn) {
 368         headers.stream().
 369                 map((new TreeFilter(this::symbolFilter))::transform).
 370                 map((new TypedefHandler())::transform).
 371                 map((new EmptyNameHandler())::transform).
 372                 forEach(header -> {
 373             HeaderFile hf = headerMap.computeIfAbsent(header.path(), p -> getHeaderFile(p, null));
 374             hf.useLibraries(libraryNames, libraryPaths);
 375             hf.useCodeFactory(fn.apply(hf));
 376             logger.info(() -> "Processing header file " + header.path());
 377 
 378             header.declarations().stream()
 379                     .peek(decl -> logger.finest(
 380                         () -> "Cursor: " + decl.name() + "@" + decl.USR() + "?" + decl.isDeclaration()))
 381                     .forEach(decl -> processTree(decl, hf, fn));
 382         });
 383     }
 384 
 385     private Map<String, List<AsmCodeFactory>> getPkgCfMap() {
 386         final Map<String, List<AsmCodeFactory>> mapPkgCf = new HashMap<>();
 387         // Build the pkg to CodeFactory map
 388         headerMap.values().forEach(header -> {
 389             AsmCodeFactory cf = header.getCodeFactory();
 390             String pkg = header.pkgName;
 391             logger.config(() -> "File " + header + " is in package: " + pkg);




 349          }
 350 
 351          // check for function symbols in libraries & warn missing symbols
 352          if (tree instanceof FunctionTree && !isSymbolFound(name)) {
 353              err.println(Main.format("warn.symbol.not.found", name));
 354          }
 355 
 356          return true;
 357     }
 358 
 359     public void parse(Function<HeaderFile, AsmCodeFactory> fn) {
 360         initSymChecker();
 361         initSymFilter();
 362 
 363         List<HeaderTree> headers = parser.parse(sources, clangArgs);
 364         processHeaders(headers, fn);
 365     }
 366 
 367     private void processHeaders(List<HeaderTree> headers, Function<HeaderFile, AsmCodeFactory> fn) {
 368         headers.stream().
 369                 map(new TreeFilter(this::symbolFilter)).
 370                 map(new TypedefHandler()).
 371                 map(new EmptyNameHandler()).
 372                 forEach(header -> {
 373             HeaderFile hf = headerMap.computeIfAbsent(header.path(), p -> getHeaderFile(p, null));
 374             hf.useLibraries(libraryNames, libraryPaths);
 375             hf.useCodeFactory(fn.apply(hf));
 376             logger.info(() -> "Processing header file " + header.path());
 377 
 378             header.declarations().stream()
 379                     .peek(decl -> logger.finest(
 380                         () -> "Cursor: " + decl.name() + "@" + decl.USR() + "?" + decl.isDeclaration()))
 381                     .forEach(decl -> processTree(decl, hf, fn));
 382         });
 383     }
 384 
 385     private Map<String, List<AsmCodeFactory>> getPkgCfMap() {
 386         final Map<String, List<AsmCodeFactory>> mapPkgCf = new HashMap<>();
 387         // Build the pkg to CodeFactory map
 388         headerMap.values().forEach(header -> {
 389             AsmCodeFactory cf = header.getCodeFactory();
 390             String pkg = header.pkgName;
 391             logger.config(() -> "File " + header + " is in package: " + pkg);


< prev index next >