@Override public IASTCompletionNode getCompletionNode( FileContent reader, IScannerInfo scanInfo, IncludeFileContentProvider fileCreator, IIndex index, IParserLogService log, int offset) throws CoreException { IScanner scanner = createScanner(reader, scanInfo, fileCreator, log); scanner.setContentAssistMode(offset); ISourceCodeParser parser = createParser(scanner, log, index, true, 0); // Run the parse and return the completion node parser.parse(); IASTCompletionNode node = parser.getCompletionNode(); return node; }
@Override public IASTTranslationUnit getASTTranslationUnit( FileContent reader, IScannerInfo scanInfo, IncludeFileContentProvider fileCreator, IIndex index, int options, IParserLogService log) throws CoreException { final IScanner scanner = createScanner(reader, scanInfo, fileCreator, log); scanner.setComputeImageLocations((options & OPTION_NO_IMAGE_LOCATIONS) == 0); scanner.setProcessInactiveCode((options & OPTION_PARSE_INACTIVE_CODE) != 0); final ISourceCodeParser parser = createParser(scanner, log, index, false, options); // make it possible to cancel parser by reconciler - http://bugs.eclipse.org/226682 ICanceler canceler = null; if (log instanceof ICanceler) { canceler = (ICanceler) log; canceler.setCancelable( new ICancelable() { public void cancel() { scanner.cancel(); parser.cancel(); } }); } try { // Parse IASTTranslationUnit ast = parser.parse(); ast.setIsHeaderUnit((options & OPTION_IS_SOURCE_UNIT) == 0); return ast; } finally { if (canceler != null) { canceler.setCancelable(null); } } }