//===-- SearchFilter.h ------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_CORE_SEARCHFILTER_H #define LLDB_CORE_SEARCHFILTER_H #include "lldb/Utility/FileSpecList.h" #include "lldb/Utility/StructuredData.h" #include "lldb/Utility/FileSpec.h" #include "lldb/lldb-forward.h" #include <cstdint> namespace lldb_private { class Address; class Breakpoint; class CompileUnit; class Status; class Function; class ModuleList; class SearchFilter; class Stream; class SymbolContext; class Target; } namespace lldb_private { /// \class Searcher SearchFilter.h "lldb/Core/SearchFilter.h" Class that is /// driven by the SearchFilter to search the SymbolContext space of the target /// program. /// General Outline: /// Provides the callback and search depth for the SearchFilter search. class Searcher { … }; /// \class SearchFilter SearchFilter.h "lldb/Core/SearchFilter.h" Class /// descends through the SymbolContext space of the target, applying a filter /// at each stage till it reaches the depth specified by the GetDepth method /// of the searcher, and calls its callback at that point. /// General Outline: /// Provides the callback and search depth for the SearchFilter search. /// /// The search is done by cooperation between the search filter and the /// searcher. The search filter does the heavy work of recursing through the /// SymbolContext space of the target program's symbol space. The Searcher /// specifies the depth at which it wants its callback to be invoked. Note /// that since the resolution of the Searcher may be greater than that of the /// SearchFilter, before the Searcher qualifies an address it should pass it /// to "AddressPasses." The default implementation is "Everything Passes." class SearchFilter { … }; /// \class SearchFilterForUnconstrainedSearches SearchFilter.h /// "lldb/Core/SearchFilter.h" This is a SearchFilter that searches through /// all modules. It also consults the /// Target::ModuleIsExcludedForUnconstrainedSearches. class SearchFilterForUnconstrainedSearches : public SearchFilter { … }; /// \class SearchFilterByModule SearchFilter.h "lldb/Core/SearchFilter.h" This /// is a SearchFilter that restricts the search to a given module. class SearchFilterByModule : public SearchFilter { … }; class SearchFilterByModuleList : public SearchFilter { … }; class SearchFilterByModuleListAndCU : public SearchFilterByModuleList { … }; } // namespace lldb_private #endif // LLDB_CORE_SEARCHFILTER_H