15ffd83dbSDimitry Andric //===-- NameMatches.cpp ---------------------------------------------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric #include "lldb/Utility/NameMatches.h"
90b57cec5SDimitry Andric #include "lldb/Utility/RegularExpression.h"
100b57cec5SDimitry Andric 
110b57cec5SDimitry Andric #include "llvm/ADT/StringRef.h"
120b57cec5SDimitry Andric 
130b57cec5SDimitry Andric using namespace lldb_private;
140b57cec5SDimitry Andric 
NameMatches(llvm::StringRef name,NameMatch match_type,llvm::StringRef match)150b57cec5SDimitry Andric bool lldb_private::NameMatches(llvm::StringRef name, NameMatch match_type,
160b57cec5SDimitry Andric                                llvm::StringRef match) {
170b57cec5SDimitry Andric   switch (match_type) {
180b57cec5SDimitry Andric   case NameMatch::Ignore:
190b57cec5SDimitry Andric     return true;
200b57cec5SDimitry Andric   case NameMatch::Equals:
210b57cec5SDimitry Andric     return name == match;
220b57cec5SDimitry Andric   case NameMatch::Contains:
230b57cec5SDimitry Andric     return name.contains(match);
240b57cec5SDimitry Andric   case NameMatch::StartsWith:
25*c9157d92SDimitry Andric     return name.starts_with(match);
260b57cec5SDimitry Andric   case NameMatch::EndsWith:
27*c9157d92SDimitry Andric     return name.ends_with(match);
280b57cec5SDimitry Andric   case NameMatch::RegularExpression: {
290b57cec5SDimitry Andric     RegularExpression regex(match);
300b57cec5SDimitry Andric     return regex.Execute(name);
310b57cec5SDimitry Andric   }
320b57cec5SDimitry Andric   }
330b57cec5SDimitry Andric   return false;
340b57cec5SDimitry Andric }
35