| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'data.dart'; |
| |
| /// Utility functions to check whether a binding should be parsed or not |
| /// based on filters. |
| |
| bool shouldIncludeStruct(String usr, String name) { |
| if (bindingsIndex.isSeenStruct(usr) || name == '') { |
| return false; |
| } else if (config.structDecl.shouldInclude(name)) { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| bool shouldIncludeFunc(String usr, String name) { |
| if (bindingsIndex.isSeenFunc(usr) || name == '') { |
| return false; |
| } else if (config.functionDecl.shouldInclude(name)) { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| bool shouldIncludeEnumClass(String usr, String name) { |
| if (bindingsIndex.isSeenEnumClass(usr) || name == '') { |
| return false; |
| } else if (config.enumClassDecl.shouldInclude(name)) { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| bool shouldIncludeUnnamedEnumConstant(String usr, String name) { |
| if (bindingsIndex.isSeenUnnamedEnumConstant(usr) || name == '') { |
| return false; |
| } else if (config.unnamedEnumConstants.shouldInclude(name)) { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| bool shouldIncludeMacro(String usr, String name) { |
| if (bindingsIndex.isSeenMacro(usr) || name == '') { |
| return false; |
| } else if (config.macroDecl.shouldInclude(name)) { |
| return true; |
| } else { |
| return false; |
| } |
| } |
| |
| /// Cache for headers. |
| final _headerCache = <String, bool>{}; |
| |
| /// True if a cursor should be included based on headers config, used on root |
| /// declarations. |
| bool shouldIncludeRootCursor(String? sourceFile) { |
| // Handle null in case of system headers or macros. |
| if (sourceFile == null) { |
| return false; |
| } |
| |
| // Add header to cache if its not. |
| if (!_headerCache.containsKey(sourceFile)) { |
| _headerCache[sourceFile] = |
| config.headers.includeFilter.shouldInclude(sourceFile); |
| } |
| |
| return _headerCache[sourceFile]!; |
| } |